在aws-cli上进行身份验证时出现UnrecognizedClientException错误

时间:2018-01-28 15:48:13

标签: amazon-web-services command-line-interface aws-cli alpine

当我提取一个干净的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

我有什么明显的遗失吗?

6 个答案:

答案 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)

以下内容已解决的问题:

  1. 转到AWS IAM Management Console
  2. 在“访问密钥(访问密钥ID和秘密访问密钥)”部分中生成凭据
  3. 运行命令 aws configure 并在Cdrive-User-directory.aws \ credentials
  4. 中设置相同的下载凭据

答案 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 区域。)