amazon-web-services - 将 EMR 与 S3 集成时遇到问题

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

我在将 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**

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

我已经完成了以下步骤

  1. 为 EMR 创建 KMS key
  2. 在新创建的 KMS key 中添加了 EMR_EC2_DefaultRole 作为 key 用户
  3. 为 EMR 创建了 S3 服务器端加密安全配置策略
  4. 为 S3 存储桶访问的角色/EMR_EC2_DefaultRole 和 EMR_DefaultRole 创建了新的内联策略
  5. 使用新的 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/

相关文章:

asynchronous - Amazon S3 异步分段上传

amazon-web-services - 使用 Cloudformation 创建触发器来启动 lambda 函数,并验证当我在 S3 存储桶中上传文件时哪个区域可用

javascript - 无法从 Modal 元素获取 $file,Angular JS

hadoop - PyArrow 中的 hdfs.connect() 与 HdfsClient

java - 使用Java中aws配置文件中定义的role_arn

hadoop - 哪个更快?带有 Where 子句的 Spark SQL 或在 Spark SQL 之后在 Dataframe 中使用过滤器

hadoop - 实例化 HiveSessionState 时的 Spark2 数据加载问题

node.js - 使用 Express 从 S3 流式传输文件,包括有关长度和文件类型的信息

java - 有人可以提供 spring-integration-aws SQS 用法的示例吗?

amazon-web-services - 如何在速度模板中添加生成随机 UUID 等功能,用于 API 网关中的请求/响应映射