amazon-web-services - Boto3 在 AWS CodeBuild 中运行时使用什么凭证?

标签 amazon-web-services boto3 aws-codebuild

因此,我编写了一组在 CodeBuild 中运行的部署脚本,并使用 Boto3 将一些 docker 化的应用程序部署到 ECS。我遇到的问题是当我想部署到我们单独的生产帐户时。

如果我从开发账户运行 CodeBuild 项目但想在生产账户中创建资源,我的理解是我应该在目标账户中设置一个角色,允许 codebuild 角色代入它,然后调用:

sts_client.assume_role( RoleArn=arn_of_a_role_I_set_up, RoleSessionName=some_name )

这将返回一个访问 key 、 secret key 和 session token 。这有效并返回我所期望的。

然后我要做的就是将这些值分配给这些环境变量: AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN

这是因为根据此处的文档:http://boto3.readthedocs.io/en/latest/guide/configuration.html如果您没有在客户端或 session 方法中显式设置这些变量,Boto3 应该遵守。

但是,当我这样做时,资源仍会在同一个开发帐户中创建。

此外,如果我在我的脚本尝试设置环境变量之前在 buildspec.yml 的第一部分调用 printenv,那些 AWS key/secret/token 变量根本不存在。

那么当它在 CodeBuild 中运行时,Boto3 从哪里获取其凭据? 解决方案是否只是将 key / secret / token 传递给每个 boto3.client() 调用以确保完全确定?

最佳答案

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

关于amazon-web-services - Boto3 在 AWS CodeBuild 中运行时使用什么凭证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50407175/

相关文章:

python - AWS Lambda Python libssl C 库

python - 如何使用list_objects_v2从S3获取超过1000个对象?

amazon-web-services - CodeBuild 无法创建日志

linux - 如何在 Linux 中执行此操作

node.js - 如何管理 Node-React 应用程序的生产/部署存储库?

java - 在AWS,普通AWS项目和Maven项目中执行SWF时有什么区别吗?

python - 用 python 在 aws dynamodb 上写一个字典作为 avS

amazon-web-services - Boto3 使用现有资源创建堆栈

amazon-web-services - 如何修复 EACCES : permission denied, 打开

serverless-framework - 吉普错误!堆栈错误 : EACCES: permission denied, mkdir '/usr/local/lib/node_modules/serverless/node_modules/snappy/.node-gyp'