无法将EMR与S3集成

Raj*_*Rai 1 hadoop amazon-s3 amazon-web-services 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密钥中将EMR_EC2_DefaultRole添加为密钥用户
  3. 为EMR创建了S3服务器端加密安全配置策略
  4. 为角色/ EMR_EC2_DefaultRole和EMR_DefaultRole创建了用于S3存储桶访问的新内联策略
  5. 使用新的EMR安全策略和以下配置分类手动创建EMR群集

    "fs.s3.enableServerSideEncryption": "true",
    "fs.s3.serverSideEncryption.kms.keyId":"KEYID"
    
    Run Code Online (Sandbox Code Playgroud)

jc *_*nem 6

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

您将需要验证该角色IAM角色策略,以允许对存储桶和对象执行必要的S3操作(如s3:list *)。还要检查您是否有任何明确的Deny等 。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-controllinging-to-s3-resources /

您的EMR群集可能正在使用VPC端点供S3访问S3,而不是Internet / NAT。在这种情况下,您还需要验证VPC端点策略https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html#vpc-endpoints-policies-s3