[英]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: ~/.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_ID
和AWS_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.