Boto3在AWS CodeBuild中运行时使用哪些凭据?

4
我编写了一组部署脚本,这些脚本在CodeBuild中运行,并使用Boto3将一些Docker化的应用程序部署到ECS。 我遇到的问题是当我想要部署到我们单独的生产帐户时。如果我从dev帐户运行CodeBuild项目但想在生产帐户中创建资源,则我理解应在目标帐户中设置一个角色,允许codebuild角色假定它,然后调用:sts_client.assume_role(RoleArn = arn_of_a_role_I_set_up,RoleSessionName = some_name)。
这将返回访问密钥,秘密密钥和会话令牌。这有效并返回我所期望的内容。然后我想做的就是将这些值分配给这些环境变量:AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_SESSION_TOKEN。这是因为根据此处的文档:http://boto3.readthedocs.io/en/latest/guide/configuration.html如果您没有在客户端或会话方法中明确设置这些变量,则Boto3应该推迟到。
然而,当我这样做时,资源仍然在相同的开发帐户中创建。
此外,在我的buildspec.yml的第一部分调用printenv之前,我的脚本尝试设置环境变量,那些AWS key/secret/token变量根本不存在。
因此,当它在CodeBuild中运行时,Boto3从哪里获取其凭据?
解决方案只是为了确保每个boto3.client()调用都传递一个key/secret/token吗?
1个回答

3
在CodeBuild环境中使用的凭证来自于与您的CodeBuild项目关联的服务角色。 Boto和botocore将自动使用“ContainerProvider”在CodeBuild环境中获取这些凭证。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接