运行 AWS 批处理时是否需要传递 AWS AccessKey 和 AccessSecret?

sgi*_*iri 2 environment-variables amazon-web-services boto3 aws-batch

我正在使用 boto3 在 AWS 批处理作业中与 KMS 进行通信。我获取 KMS 客户端的代码如下所示:

KMS = boto3.client('kms')
Run Code Online (Sandbox Code Playgroud)

我的问题是,我是否需要像这样显式传递 AWS SecretKey 和 AWS AccessKey:

KMS = boto3.client('kms', 
                   aws_access_key_id=ACCESS_KEY,
                   aws_secret_access_key=SECRET_KEY)
Run Code Online (Sandbox Code Playgroud)

或者

也许我只是设置环境变量AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY定义计算环境?

哪个是最好的选择?

Joh*_*ein 6

当您在 AWS Batch 中创建作业定义时,您可以指定作业角色

您可以指定一个 IAM 角色,为作业中的容器提供使用 AWS API 的权限。此功能使用 Amazon ECS IAM 角色来实现任务功能。

因此,您编写的任何代码都将获得基于工作角色的凭据。您的代码不需要指定凭据(因此使用您的第一个示例)。