【问题标题】:UnrecognizedClientException error when authenticating on aws-cli在 aws-cli 上进行身份验证时出现 UnrecognizedClientException 错误
【发布时间】:2018-07-07 09:01:25
【问题描述】:

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

我有什么明显的遗漏吗?

【问题讨论】:

  • 您需要export AWS_SESSION_TOKEN=XXXXX。您如何获得访问密钥和密钥?
  • @KrishnaKumarR 我在 IAM 控制台中生成访问密钥后获得了密钥。是否需要设置AWS_SESSION_TOKEN?我认为只有在您不使用我使用的永久密钥时才需要这样做。此外,文档中没有提到它:docs.aws.amazon.com/rekognition/latest/dg/setup-awscli.html.
  • 是的,没必要。您是否查看过有关使用 IAM 角色的论坛问题:forums.aws.amazon.com/message.jspa?messageID=737198
  • 我正在测试的密钥实际上具有完全的管理员访问权限,并且使用这些确切密钥的身份验证可以在我的 Macbook 上运行,所以我确信它一定与设置有关。跨度>
  • 你付账了吗?大声笑

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


【解决方案1】:

毕竟这是一个访问问题!事实证明,如果您创建一个具有完全管理员访问权限的新 IAM 用户,则默认情况下它无法访问您使用其他帐户创建的 ECR 注册表。使用来自该其他账户的 IAM 凭证解决了该问题。

【讨论】:

  • 当您找到此解决方案时,我现在正面临同样的错误?
【解决方案2】:

在您获得aws-cli 的许可之前,您无权访问这些资源,为此您可以使用以下步骤。

登录您的 AWS 账户,点击您的账户名,选择我的安全凭证,点击访问密钥并下载凭证

以管理员身份打开您的PowerShell 并按照命令操作。

$ aws configure
$ AWS Access Key ID [****************E5TA]=xxxxxxxxxx
$ AWS Secret Access Key [****************7gNT]=xxxxxxxxxxxxxx

【讨论】:

    【解决方案3】:

    在我的例子中,我的 ~/.aws/credentials 文件有一个旧的 aws_session_token 未被 aws configure CLI 命令更新。一旦我用vi ~/.aws/credentials 打开文件并删除了aws_session_token 条目,我就不再遇到UnrecognizedClientException。我猜在运行 AWS CLI 命令时,如果 aws_session_token 存在于 ~/.aws/credentials 文件中,则 AWS CLI 首先优先于 aws_session_token 而不是 aws access key idaws secret access key

    【讨论】:

      【解决方案4】:

      我的问题是由于我之前在 AWS IAM 管理控制台中停用了我的访问密钥,这是我正在做的练习的一部分。一旦我重新激活它,问题就解决了。

      (确保您也位于正确的 AWS 区域。)

      【讨论】:

        【解决方案5】:

        几个小时后,这是我的结论:

        如果您想使用AWS_PROFILE,请确保其余的 AWS 环境变量未设置(NOT empty 仅...必须为 UNSET)。 p>

        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}
        

        【讨论】:

          【解决方案6】:

          以下问题已解决:

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

          【讨论】:

            【解决方案7】:

            它对我不起作用。出于绝望,我复制了以export 开头的行并将它们发布到终端并按下回车键。

            之后我写了aws configure并填写了https://MYCOMPANY.awsapps.com/start#/的详细信息>>帐户>>点击“命令行或程序访问”。

            默认区域名称:eu-north-1
            默认输出格式:text

            然后登录成功。不要问我为什么。

            【讨论】:

              猜你喜欢
              • 2019-12-21
              • 2012-07-06
              • 1970-01-01
              • 2021-10-08
              • 2023-04-07
              • 1970-01-01
              • 1970-01-01
              • 2018-12-09
              • 1970-01-01
              相关资源
              最近更新 更多