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

将 Amazon S3 访问权限管控与 EMR Serverless 结合使用

EMR Serverless 的 S3 Access Grants 概述

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

使用 S3 Access Grants 可增强对 Amazon S3 数据的访问,以超出运行时系统角色或 IAM 角色授予的权限,这些权限附加在可访问 EMR Serverless 应用程序的身份上。

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

本节介绍了如何启动 EMR Serverless 应用程序,以使用 S3 Access Grants 提供对 Amazon S3 中数据的访问权限。有关将 S3 Access Grants 与其他 Amazon EMR 部署配合使用的步骤,请参阅以下文档:

利用 S3 Access Grants 启动 EMR Serverless 应用程序,以进行数据管理。

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

  1. 为 EMR Serverless 应用程序设置作业执行角色。包括运行 Spark 作业和使用 S3 访问权限管控、s3:GetDataAccesss3:GetAccessGrantsInstanceForPrefix 所需的 IAM 权限:

    { "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 访问权限管控授予的权限,也能访问该角色允许的数据。

  2. 启动 EMR Serverless 应用程序时,请使用 6.15.0 或更高版本的 Amazon EMR 发行版标签和 spark-defaults 分类,如下面的示例所示。将 red text 中的值替换为适合您的使用场景的适当值。

    aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "sparkSubmit": { "entryPoint": "s3://us-east-1.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py", "entryPointArguments": ["s3://amzn-s3-demo-destination-bucket1/wordcount_output"], "sparkSubmitParameters": "--conf spark.executor.cores=1 --conf spark.executor.memory=4g --conf spark.driver.cores=1 --conf spark.driver.memory=4g --conf spark.executor.instances=1" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "spark-defaults", "properties": { "spark.hadoop.fs.s3.s3AccessGrants.enabled": "true", "spark.hadoop.fs.s3.s3AccessGrants.fallbackToIAM": "false" } }] }'

将 S3 Access Grants 与 EMR Serverless 结合使用时的注意事项

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