访问被拒绝尝试读取引导操作文件 - AWS EMR& S3存储桶策略

时间:2015-04-27 15:52:52

标签: amazon-web-services amazon-s3 emr amazon-iam

我希望实现以下目标

  1. 创建包含EMR引导脚本和配置文件的S3存储桶
  2. 将策略应用于此存储桶,以便只有EMR默认角色可以与特定管理员用户一起访问
  3. EMR引导操作在集群启动时运行,访问S3存储桶以检索脚本和配置文件并在EMR节点上执行
  4. 这是我应用于S3存储桶的策略。我正在使用 NotPrincipal 语句,因此它将拒绝访问除列出的所有人之外的所有人

    {
      "Id": "policy1",
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Deny",
          "NotPrincipal": {
            "AWS": ["arn:aws:iam::xxxxxxxxxxxx:user/user1@mydomain.com",
                    "arn:aws:iam::xxxxxxxxxxxx:user/user2@mydomain.com",
                    "arn:aws:iam::xxxxxxxxxxxx:root",
                    "arn:aws:iam::xxxxxxxxxxxx:role/EMR_DefaultRole",
                    "arn:aws:iam::xxxxxxxxxxxx:role/EMR_EC2_DefaultRole"]
          },
          "Action": "s3:*",
          "Resource": ["arn:aws:s3:::bucket-restricted-access",
                       "arn:aws:s3:::bucket-restricted-access/*"]
        }
      ]
    }
    

    然后我尝试通过C#AWS SDK创建一个EMR集群,其中包含一个从以下位置运行脚本的引导操作

    s3://bucket-restricted-access/config/runscript.sh
    

    但是,只要群集启动,我就会收到错误

      

    终止但有错误 - 拒绝访问尝试读取引导操作   file' s3://bucket-restricted-access/config/runscript.sh'

    EMR集群是否使用EMR_EC2_DefaultRole角色的假定权限来尝试并检索引导操作?

    如果没有,是否需要在S3存储桶策略中添加另一个用户/角色来修复权限问题?

1 个答案:

答案 0 :(得分:-1)

使用安全组ElasticMapReduce-master和ElasticMapReduce-slave

启动EMR集群

用于创建EMR的访问密钥和密钥应该具有访问具有引导脚本的s3存储桶的权限