【发布时间】:2020-05-24 13:14:55
【问题描述】:
我在从另一个批处理作业中提交 AWS 批处理作业时遇到问题:
我正在使用具有默认服务 AWSBatchServiceRole 和默认实例 ecsInstanceRole 的计算环境。我已经设置了一个作业定义myjobdef,其作业角色MyJobRole 包含AWS 批处理上的操作*,仅用于测试。它还具有信任关系:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ecs-tasks.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
我正在使用 python 3.7 和最新的 boto3。当使用我自己的凭据从我的本地 docker 容器调用 batch_client.submit_job(...) 时,它可以工作。在具有上述角色的 AWS 批处理中运行相同的操作时,出现异常:
botocore.exceptions.ClientError: An error occurred (AccessDeniedException)
when calling the SubmitJob operation: User: arn:aws:sts::<account_id>:assumed-role/MyJobRole/xxxx-xxxx-xxx-xx is not authorized to perform: batch:SubmitJob on resource: arn:aws:batch:<region>:<account_id>:job-definition/my_job_def
有什么办法可以解决这个问题吗?
【问题讨论】:
-
您的错误消息表明您的角色缺少
batch:SubmitJob。您是否已将其添加到您的批处理作业角色中? -
奇怪 - 我做到了。但是现在我看到除了 submitJob 之外的所有内容都是允许的,并且策略中缺少该特定操作!我认为发生的事情是我最初只添加了 submitJob。当它不起作用时,我通过策略编辑器将策略更改为“全部”,它以某种方式颠倒了我的选择。谢谢。
-
不,有问题。现在可以用了吗?
-
很高兴听到。如果你不介意,我会做一个答案以供将来参考。
标签: boto3 amazon-iam aws-batch