当前位置: 首页 > 知识库问答 >
问题:

Boto3在AWS代码构建中运行时使用什么凭据?

颜安宁
2023-03-14

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

如果我从开发人员帐户运行CodeBuild项目,但希望在生产帐户中创建资源,我的理解是,我应该在目标帐户中设置一个角色,允许CodeBuild角色承担该角色,然后调用:

sts\u客户机。承担角色(RoleArn=arn\u of a\u role\u设置,RoleSessionName=some\u name)

这将返回访问密钥、密钥和会话令牌。这是有效的,并且返回了我所期望的结果。

这是因为根据这里的留档:http://boto3.readthedocs.io/en/latest/guide/configuration.htmlBoto3应该服从于如果您没有在客户端或会话方法中显式设置这些变量。

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

此外,如果我在脚本尝试设置环境变量之前,在我的buildspec.yml的第一部分调用prendv,则这些AWS密钥/秘密/令牌变量根本不存在。

所以,当它在代码构建中运行时,Boto3从何处获取其凭据?解决方案是将密钥/秘密/令牌传递给每个boto3.client()调用以完全确定吗?

共有1个答案

许奇
2023-03-14

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

 类似资料:
  • 我在一个AWS代码构建项目中运行了一些使用Boto3的Python(如果需要的话,作为代码管道中的一个阶段)。然而,我注意到它运行的是Boto3的旧版本,它没有我需要的一些功能。如何获取CodeBuild以安装新版本? 我的构建规范目前有这一行,但它默认为旧版本。

  • 我希望使用python创建一个CI/CD管道,github作为源阶段,aws s3 bucket作为部署阶段。我无法理解如何使用https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/codepipeline.html中给出的函数,而且它也没有示例代码。我还遇到了AWS CDK。我使用哪一个,我可以在哪里

  • 当本地机器的计算资源有限时,可以通过云计算服务获取更强大的计算资源来运行本书中的深度学习代码。本节将介绍如何在AWS(亚马逊的云计算服务)上申请实例并通过Jupyter记事本运行代码。本节中的例子有如下两个步骤。 申请含一个K80 GPU的p2.xlarge实例。 安装CUDA及相应GPU版本的MXNet。 申请其他类型的实例或安装其他版本的MXNet的方法与本节类似。 申请账号并登陆 首先,我们

  • 我们如何查看AWS boto库代码。并非所有代码都存在于python包中。 例如,如果我想了解water类的wait_until_running()方法是如何实现的,即它是如何以序列化方式实现的,以及代码的其他特性。尽管文档中有这样的描述:“此方法调用EC2.water.instance_stopped.wait(),每隔15秒轮询一次.EC2.Client.description_instanc

  • 我开始学习AWS的CI/CD功能。到目前为止,我一直在基于microsoft/windowsservercore映像在Windows Server 2016本地创建docker映像,并手动将其推送到ECR(amazon容器注册表)。 在这一点上,我没有试图在CodeBuild中编译应用程序。我只是想建造容器。在本地,二进制文件位于子目录中,并复制到容器中。 CodeBuild项目失败,出现错误:无

  • 我使用jsonschema生成器基于我的POJO生成JSON模式文件。目前,我正在通过一个在<code>gradle构建</code>步骤中运行的测试来完成这项工作。这工作正常,但感觉不对,因为我所做的并不是测试任何东西。 我还找到了这个答案,其中详细说明了如何在上运行它,但这也不理想,因为它会在每次应用程序出现时毫无意义地执行它,但在我构建时不会。 因此,有没有一种方法可以告诉gradle(在中