我正在尝试使用 bash 数组来删除 AWS 用户密钥。
我将 AWS 访问密钥存储在一个数组中,并在一个循环中读出它们,然后尝试在另一个循环中删除它们。
读取变量的循环正确打印出来:
Listing access keys for "script-test".
AKIAJKWXK6ZI6BPV6KOA
AKIAIHM2MZMQC7KLXSJA
但是应该删除键的循环会弄乱数组的输出:
Deleting user access keys for script-test.
Deleting key: AKIAJKWXK6ZI6BPV6KOA
AKIAIHM2MZMQC7KLXSJA
这是发生的错误:
调用 DeleteAccessKey 操作时发生错误 (ValidationError):accessKeyId 的指定值无效。它必须只包含字母数字字符。
这是我用来打印然后删除键的两个循环:
echo "Listing access keys for \"$user_name\"."
declare -a keys
keys=$( (aws iam list-access-keys --user-name "$user_name" --profile="$aws_env" | jq -r '.AccessKeyMetadata[].AccessKeyId') )
for key in "${keys[@]}"
do
echo "$key"
done
echo; echo
echo "Deleting user access keys for $user_name."
for key in "${keys[@]}"
do
echo "Deleting key: $key"
aws iam delete-access-key --user-name "$user_name" --access-key-id "$key" --profile="$aws_env"
done
我究竟做错了什么?我怎样才能让它正常工作?