无法将EMR与S3集成

时间:2017-04-03 19:56:23

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

我无法将EMR与S3集成,即实现EMRFS

EMR版本:emr-5.4.0

当我运行hdfs dfs -ls s3://pathto/bucket/时出现以下错误

  

ls:com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception:拒绝访问(服务:Amazon S3;状态代码:403;错误代码:AccessDenied;请求ID:XXXX),   S3扩展请求ID:XXXXX **

请指导那是什么,我缺少什么?

我已完成以下步骤

  1. 为EMR创建了KMS密钥
  2. 在新创建的KMS密钥
  3. 中添加了EMR_EC2_DefaultRole作为关键用户
  4. 为EMR创建了S3服务器端加密安全配置策略
  5. 为角色/ EMR_EC2_DefaultRole创建了新的内联策略,并为S3存储桶访问创建了EMR_DefaultRole
  6. 使用新的EMR安全策略和以下配置分类手动创建EMR集群

    "fs.s3.enableServerSideEncryption": "true",
    "fs.s3.serverSideEncryption.kms.keyId":"KEYID"
    

1 个答案:

答案 0 :(得分:3)

默认情况下,EMR将使用实例配置文件凭据( EMR_EC2_DefaultRole )来访问您的S3存储桶。该错误表示此角色没有访问S3存储桶的必要权限。

您需要验证该角色的 IAM角色策略,以允许对存储桶和对象执行必要的S3操作(如s3:list *)。还要检查你是否有任何明确的拒绝等。 http://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html

由于您尝试访问的S3存储桶上设置了存储桶策略,因此也可能会拒绝访问。 http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html https://aws.amazon.com/blogs/security/iam-policies-and-bucket-policies-and-acls-oh-my-controlling-access-to-s3-resources/