授予对 Amazon S3 中的 EMRFS 数据的访问权
默认情况下,EC2 的 EMR 角色确定访问 Amazon S3 中 EMRFS 数据的权限。无论是用户还是组通过 EMRFS 提出请求,附加到此角色的 IAM policy 都适用。默认为 EMR_EC2_DefaultRole
。有关更多信息,请参阅集群 EC2 实例的服务角色(EC2 实例配置文件)。
从 Amazon EMR 发行版 5.10.0 开始,可以使用安全配置来指定 EMRFS 的 IAM 角色。这样可以为多用户集群自定义 EMRFS 对 Amazon S3 的请求的权限。您可以为不同用户和组指定不同的 IAM 角色,也可根据在 Amazon S3 中的前缀为不同的 Amazon S3 存储桶位置进行指定。当 EMRFS 向 Amazon S3 发出的请求与您指定的用户、组或位置匹配时,集群将使用您指定的相应角色,而不是 EC2 的 EMR 角色。有关更多信息,请参阅为处理 EMRFS 对 Amazon S3 的请求配置 IAM 角色。
或者,如果您的 Amazon EMR 解决方案的需求超出了 EMRFS 的 IAM 角色所能提供的权限,您也可以定义自定义凭证提供程序类,从而让您能够自定义对 Amazon S3 中的 EMRFS 数据的访问。
为 Amazon S3 中的 EMRFS 数据创建自定义凭证提供程序
要创建自定义凭证提供程序,您可以实现 AWSCredentialsProvider 和 Hadoop 可配置
有关此方法的详细说明,请参阅AWS大数据博客中的 Securely analyze data from another AWS account with EMRFS
基本步骤如下所示:
指定自定义凭证提供程序
创建编译为 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
将 JAR 文件中定义的自定义凭证提供程序指定为
emrfs-site
的
分类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://amzn-s3-demo-bucket
/' --name 'test-awscredentialsprovider-emrfs' \ --instance-type=m5.xlarge --instance-count 3 \ --configurations '[{"Classification":"emrfs-site",\ "Properties":{"fs.s3.customAWSCredentialsProvider":"MyAWSCredentialsProviderWithUri"},\ "Configurations":[]}]'