本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
授权访问 Amazon S3 中的EMRFS数据
默认情况下,的EMR角色EC2决定访问 Amazon S3 中EMRFS数据的权限。无论通过哪个用户或群组发出请求,附加到此角色的IAM策略都适用EMRFS。默认为 EMR_EC2_DefaultRole
。有关更多信息,请参阅集群EC2实例的服务角色(EC2实例配置文件)。
从 Amazon EMR 发行版 5.10.0 开始,您可以使用安全配置为其指定IAM角色。EMRFS这允许您为拥有多个用户的集群自定义向 Amazon S3 发出的EMRFS请求的权限。您可以根据 Amazon S3 中的前缀为不同的用户和群组以及不同的 Amazon S3 存储桶位置指定不同的IAM角色。当向 Amazon S3 EMRFS 发出与用户、群组或您指定的位置相匹配的请求时,集群将使用您指定的相应角色而不是其中的EMR角色EC2。有关更多信息,请参阅为向 Amazon S3 发出的EMRFS请求配置IAM角色。
或者,如果您的 Amazon EMR 解决方案的要求超出了所EMRFS提供的IAM角色范围,则可以定义一个自定义凭证提供程序类,该类允许您自定义对 Amazon S3 中EMRFS数据的访问权限。
为 Amazon S3 中的EMRFS数据创建自定义凭证提供程序
要创建自定义凭证提供程序,您需要实现AWSCredentialsProvider和 Hadoop 可配置
有关此方法的详细说明,请参阅 AWS
大数据博客EMRFS中的安全分析来自其他 AWS 账户
基本步骤如下所示:
指定自定义凭证提供程序
创建编译为JAR文件的自定义凭证提供程序类。
运行脚本作为引导操作,将自定义凭据提供程序JAR文件复制到集群主节点上的
/usr/share/aws/emr/emrfs/auxlib
位置。有关引导操作的更多信息,请参阅(可选)创建引导操作以安装其它软件。-
自定义
emrfs-site
分类以指定您在JAR文件中实现的类。有关指定配置对象以自定义应用程序的更多信息,请参阅 Amazon EMR 发行指南中的配置应用程序。以下示例演示了启动包含常见配置参数的 Hive 集群的
create-cluster
命令,并包括:运行脚本
的引导操作,该脚本已保存到 Amazon S3 中的copy_jar_file.sh
。amzn-s3-demo-bucket
一种
emrfs-site
分类,它将JAR文件中定义的自定义凭证提供程序指定为MyCustomCredentialsProvider
注意
为了便于读取,包含 Linux 行继续符 (\)。它们可以通过 Linux 命令删除或使用。对于 Windows,请将它们删除或替换为脱字号 (^)。
aws emr create-cluster --applications Name=Hive \ --bootstrap-actions '[{"Path":"
s3://amzn-s3-demo-bucket/copy_jar_file.sh
","Name":"Custom action"}]' \ --ec2-attributes '{"KeyName":"MyKeyPair
","InstanceProfile":"EMR_EC2_DefaultRole",\ "SubnetId":"subnet-xxxxxxxx","EmrManagedSlaveSecurityGroup":"sg-xxxxxxxx",\ "EmrManagedMasterSecurityGroup":"sg-xxxxxxxx"}' \ --service-role EMR_DefaultRole_V2 --enable-debugging --release-labelemr-7.3.0
\ --log-uri 's3n://my-emr-log-bucket
/' --name 'test-awscredentialsprovider-emrfs' \ --instance-type=m5.xlarge --instance-count 3 \ --configurations '[{"Classification":"emrfs-site",\ "Properties":{"fs.s3.customAWSCredentialsProvider":"MyAWSCredentialsProviderWithUri"},\ "Configurations":[]}]'