尽管有用户角色,AWS Batch作业仍在S3上被拒绝访问

时间:2018-11-01 02:01:24

标签: amazon-web-services amazon-s3 aws-batch

我正在AWS上部署我的第一批作业。当我在EC2实例中运行docker映像时,作业调用的脚本运行良好。我已为此实例分配了一个IAM角色,以允许S3访问。

但是,当我在AWS Batch上运行与作业相同的脚本时,由于S3访问上的Access Denied错误而失败。尽管事实是,在“作业定义”中,我分配了一个具有完全S3访问权限的IAM角色(为“弹性容器服务任务”创建)。

如果我使用不访问S3的命令启动批处理作业,它将运行正常。

由于使用IAM角色定义作业似乎还不够,那么如何在AWS上的批处理作业中授予S3权限?

编辑

因此,如果我只运行aws s3 ls interlinked作为工作,那也可以正常运行。什么不起作用正在运行R脚本:

 library(aws.s3)
 get_bucket("mybucket")[[1]]

哪个失败,访问被拒绝。

所以看来问题出在aws.s3软件包中,或更可能是我对它的使用。

1 个答案:

答案 0 :(得分:0)

原来的问题是我为计算环境(限制性更高)和作业(限制性较小)指定了IAM角色。

在这种情况下(需要基于角色的凭据),aws.s3 R包使用aws.signatureaws.ec2metadata从角色中提取临时凭据。它拉动计算环境角色(这是ec2角色),而不是工作角色。

我的解决方案只是向我的计算环境角色授予所需的S3权限。