我想设置多个AWS配置文件,以便在项目之间跳转时可以轻松更改设置和凭据。
我已经阅读了AWS文档,但在登录时如何选择要使用的配置文件却非常模糊。
当我尝试登录时,只是给我这个错误,这似乎表明它没有获取任何凭据。
An error occurred (UnrecognizedClientException) when calling the GetAuthorizationToken operation: The security token included in the request is invalid.
答案 0 :(得分:23)
要为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中,可以通过添加一行~\.bash_profile
在export AWS_PROFILE="cat"
中完成。要在当前终端中切换配置文件,请键入AWS_PROFILE=dog
。
<强> 4。删除全局设置
您还需要确保环境变量AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
未设置,因为aws-cli将优先考虑这些变量而非配置文件。
<强>运行强>
然后,您可以登录到您选择的AWS服务。要查看当前使用的个人资料echo $AWS_PROFILE
。 ECR登录的示例命令为$(aws ecr get-login)
<强>调试强>
如果您仍然遇到问题,可以添加--debug
标记,以查看其用于命令的凭据。
答案 1 :(得分:1)
对我来说,尽管我已完成所有设置,但我的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
通过应用上述命令,可以解决我的问题。
答案 2 :(得分: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}