我在将 EMR 与 S3 集成时遇到问题,即实现 EMRFS
电子病历版本:emr-5.4.0
当我运行 hdfs dfs -ls s3://pathto/bucket/
时出现以下错误
ls: com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: XXXX), S3 Extended Request ID: XXXXX**
请指导那是什么,我缺少什么?
我已经完成了以下步骤
- 为 EMR 创建 KMS key
- 在新创建的 KMS key 中添加了 EMR_EC2_DefaultRole 作为 key 用户
- 为 EMR 创建了 S3 服务器端加密安全配置策略
- 为 S3 存储桶访问的角色/EMR_EC2_DefaultRole 和 EMR_DefaultRole 创建了新的内联策略
使用新的 EMR 安全策略和以下配置分类手动创建 EMR 集群
"fs.s3.enableServerSideEncryption": "true", "fs.s3.serverSideEncryption.kms.keyId":"KEYID"
最佳答案
默认情况下,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/
您的 EMR 集群可能正在使用 VPC endpoint for S3访问 S3 而不是 Internet/NAT。在这种情况下,您还需要验证 VPC 端点策略。 https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html#vpc-endpoints-policies-s3
关于amazon-web-services - 将 EMR 与 S3 集成时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43193203/