当我提取一个干净的Alphine Linux Docker镜像时,在其上安装aws-cli
并尝试使用aws ecr get-authorization-token --region eu-central-1
对自己进行身份验证我一直收到以下错误:
调用时出现错误( UnrecognizedClientException ) GetAuthorizationToken操作: 中包含的安全令牌 请求无效。
我已经检查了时区似乎没问题,并且该命令在我的本地计算机上正常运行。
这些是我为设置aws-cli
而运行的命令:
apk add --update python python-dev py-pip
pip install awscli --upgrade
export AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXX
export AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
我有什么明显的遗失吗?
答案 0 :(得分:2)
在我的情况下,我的~/.aws/credentials
文件有一个旧的aws_session_token
,该aws configure
CLI命令未对其进行更新。使用vi ~/.aws/credentials
打开文件并删除aws_session_token
条目后,我不再遇到UnrecognizedClientException
。我猜测如果运行aws_session_token
中有aws access key id
,则在运行AWS CLI命令时,AWS CLI首先将aws secret access key
优先于aws_session_token
和~/.aws/credentials
}}文件。
答案 1 :(得分:1)
毕竟这是一个访问问题!事实证明,如果您创建具有完全管理员权限的新IAM用户,则默认情况下不能访问您使用其他帐户创建的ECR注册表。使用该其他帐户的IAM凭据解决了该问题。
答案 2 :(得分:1)
在获得x = "ABCDE"
y = "VWXYZ"
for i, _ in enumerate(x):
for c in y:
print(x[:i] + c + x[i + 1 :])
的权限之前,您没有访问这些资源的权限,为此可以使用以下步骤。
登录您的AWS账户,单击您的账户名称,选择我的安全凭证,单击访问密钥并下载凭证
以管理员身份打开aws-cli
,然后按照命令进行操作。
PowerShell
答案 3 :(得分:0)
以下内容已解决的问题:
答案 4 :(得分:0)
几个小时后,这是我的结论:
如果您想使用
AWS_PROFILE
,请确保未设置其余的AWS env vars(不要仅 empty ...必须设置为 UNSET )。
profile=$AWS_PROFILE
unset $(printenv |grep AWS_ | cut -f1 -d"=");
export AWS_PROFILE=${profile};
然后:
# with aws cli >= 1.x
$(aws ecr get-login --no-include-email --region ${aws_region})
# with aws cli >= 2.x
registry=${aws_account_id}.dkr.ecr.${aws_region}.amazonaws.com
aws ecr get-login-password --region ${aws_region} | docker login --username AWS --password-stdin ${registry}
答案 5 :(得分:0)
我的问题是由于我之前在 AWS IAM 管理控制台中停用了我的访问密钥,这是我正在做的练习的一部分。一旦我重新激活它,问题就解决了。
(确保您也位于正确的 AWS 区域。)