将 Amazon S3 Access Grants 与 Amazon EMR on EKS 结合使用 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 Amazon S3 Access Grants 与 Amazon EMR on EKS 结合使用

Amazon EMR on EKS 的 S3 Access Grants 概述

在 Amazon EMR 6.15.0 及更高版本中,Amazon S3 Access Grants 提供了一种可扩展的访问控制解决方案,您可以使用该解决方案来增强对 Amazon EMR on EKS 中的 Amazon S3 数据的访问权限。如果您的 S3 数据有复杂或大规模的权限配置,则可以使用 Access Grants 来扩展用户、角色和应用程序的 S3 数据权限。

使用 S3 Access Grants 可增强对 Amazon S3 数据的访问权限,其超出运行时系统角色或 IAM 角色授予的权限,这些权限附加到具有对 EKS 上的 Amazon EMR 集群的访问权限的身份。

有关更多信息,请参阅《Amazon EMR 管理指南》中的使用 Amazon EMR 的 S3 Access Grants 管理访问权限和《Amazon Simple Storage Service 用户指南》中的使用 S3 Access Grants 管理访问权限

本页介绍使用 S3 Access Grants 集成在 Amazon EMR on EKS 中运行 Spark 作业的要求。使用 Amazon EMR on EKS 时,S3 Access Grants 在作业的执行角色中需要额外的 IAM policy 声明,并且需要 StartJobRun API 的额外覆盖配置。有关使用其他 Amazon EMR 部署设置 S3 Access Grants 的步骤,请参阅以下文档:

使用 S3 Access Grants 启动 EKS 上的 Amazon EMR 集群以进行数据管理

您可以在 Amazon EMR on EKS 上启用 S3 Access Grants 并启动 Spark 作业。当您的应用程序请求获取 S3 数据时,Amazon S3 会提供限定于特定存储桶、前缀或对象的临时凭证。

  1. 为 EKS 上的 Amazon EMR 集群设置作业执行角色。包括运行 Spark 作业所需的 IAM 权限,s3:GetDataAccesss3:GetAccessGrantsInstanceForPrefix

    { "Effect": "Allow", "Action": [ "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": [ //LIST ALL INSTANCE ARNS THAT THE ROLE IS ALLOWED TO QUERY "arn:aws_partition:s3:Region:account-id1:access-grants/default", "arn:aws_partition:s3:Region:account-id2:access-grants/default" ] }
    注意

    如果您为作业执行指定的 IAM 角色具有直接访问 S3 的任何额外权限,则无论您在 S3 Access Grants 中定义了什么权限,用户都可能能够访问数据

  2. 使用 Amazon EMR 发布版标签 6.15 或更高版本以及 emrfs-site 分类向 EKS 上的 Amazon EMR 集群提交作业,如下面的示例所示。将 red text 中的值替换为适合您的使用场景的适当值。

    { "name": "myjob", "virtualClusterId": "123456", "executionRoleArn": "iam_role_name_for_job_execution", "releaseLabel": "emr-7.1.0-latest", "jobDriver": { "sparkSubmitJobDriver": { "entryPoint": "entryPoint_location", "entryPointArguments": ["argument1", "argument2"], "sparkSubmitParameters": "--class main_class" } }, "configurationOverrides": { "applicationConfiguration": [ { "classification": "emrfs-site", "properties": { "fs.s3.s3AccessGrants.enabled": "true", "fs.s3.s3AccessGrants.fallbackToIAM": "false" } } ], } }

Amazon EMR on EKS 的 S3 Access Grants 注意事项

关于将 Amazon S3 Access Grants 与 Amazon EMR on EKS 结合使用时的重要支持、兼容性和行为信息,请参阅《Amazon EMR 管理指南》中的 Amazon EMR 的 S3 Access Grants 注意事项