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

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

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

EMR Serverless 的 S3 Access Grants 概述

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

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

有关更多信息,请参阅《Amazon EMR 管理指南》中的使用 Amazon EMR 的 S3 Access Grants 管理访问权限和《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 Access Grants、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 Access Grants 授予的权限,也能访问该角色允许的数据。

  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 管理指南》中的 将 S3 Access Grants 与 EMR Serverless 结合使用时的注意事项