繁体   English   中英

如何使用凭证配置文件通过 AWS CLI 登录

[英]How to login with AWS CLI using credentials profiles

我想设置多个 AWS 配置文件,以便在项目之间跳转时可以轻松更改设置和凭证。

我已经阅读了 AWS 文档,但是关于如何选择登录时要使用的配置文件非常模糊。

当我尝试登录时,它只是给了我这个错误,这似乎表明它没有获取任何凭据。

An error occurred (UnrecognizedClientException) when calling the GetAuthorizationToken operation: The security token included in the request is invalid.

要为 AWS 登录设置多个配置文件,您需要执行以下操作:

  1. 使用您的访问密钥设置凭据文件
  2. 设置配置文件的默认设置(可选)
  3. 设置 AWS_PROFILE 环境变量
  4. 删除之前的 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY

1: ~/.aws/credentials

[default]
aws_access_key_id =
aws_secret_access_key =

[cat]
aws_access_key_id = XXXX
aws_secret_access_key = XXXXXXXXXXXX

[dog]
aws_access_key_id = XXXX
aws_secret_access_key = XXXXXXXXXXXX

2: ~/.aws/config

[default]
region = eu-central-1

[profile cat]
region = us-west-2

[profile dog]
region = ap-northeast-1

3. 选择个人资料

所选配置文件由$AWS_PROFILE环境变量确定。 在 bash 中,这可以通过添加一行export AWS_PROFILE="cat"~\\.bash_profile完成。 要在当前终端中切换配置文件,请键入AWS_PROFILE=dog

4. 删除全局设置

您还需要确保环境变量AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY未设置,因为 aws-cli 将优先考虑这些变量而不是配置文件。

跑步

然后,您可以登录到您选择的 AWS 服务。 查看当前正在使用的配置文件echo $AWS_PROFILE ECR 登录的示例命令为$(aws ecr get-login)

调试

如果您仍然遇到问题,您可以添加--debug标志以查看它用于命令的凭据。

对我来说,虽然我在上面设置了所有内容,但我有较旧的 aws cli 版本导致了这个问题。

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
$ unzip awscli-bundle.zip
$ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

通过应用上述命令,它解决了我的问题。

几分钟后,我找到了规则:

如果您想使用AWS_PROFILE确保其余的 AWS env vars 未设置(不仅为...必须为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}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM