本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon 自定义IAM角色 EMR
您可能需要自定义IAM服务角色和权限,以根据自己的安全要求限制权限。要自定义权限,我们建议您创建新的角色和策略。从托管式策略中的默认角色 (例如 AmazonElasticMapReduceforEC2Role
和 AmazonElasticMapReduceRole
) 的权限开始着手。将相应内容复制并粘贴到新的策略语句中,根据具体情况修改权限,并将修改后的权限策略附加到您创建的角色。您必须拥有相应的IAM权限才能使用角色和策略。有关更多信息,请参阅 允许用户和组创建和修改角色。
如果您为创建自定义EMR角色EC2,请遵循基本工作流程,该流程会自动创建同名的实例配置文件。Amazon EC2 允许您创建具有不同名称的实例配置文件和角色,但是 Amazon EMR 不支持此配置,并且在您创建集群时会导致 “实例配置文件无效” 错误。
重要
当服务要求发生变化时,内联策略不会自动更新。如果您创建并附加内联策略,请注意可能会发生突然导致权限错误的服务更新。有关更多信息,请参阅《IAM用户指南》中的托管策略和内联策略以及创建集群时指定自定义IAM角色。
有关使用IAM角色的更多信息,请参阅《IAM用户指南》中的以下主题:
创建集群时指定自定义IAM角色
在创建集群时,您可以为 Amazon 指定服务角色EMR和亚马逊EC2实例配置文件的角色。正在创建集群的用户需要权限才能检索角色并将其分配给 Amazon EMR 和EC2实例。否则,账号无权调用就会发生EC2错误。有关更多信息,请参阅 允许用户和组创建和修改角色。
使用控制台指定自定义角色
创建集群时,您可以使用高级选项为 Amazon 指定自定义服务角色EMR、为EC2实例配置文件指定自定义角色和自定义 Auto Scaling 角色。使用快速选项时,会指定EC2实例配置文件的默认服务角色和默认角色。有关更多信息,请参阅 IAMAmazon 使用的服务角色 EMR。
使用 AWS CLI 来指定自定义角色
您可以使用create-cluster
命令中的选项为 Amazon 明确指定服务角色EMR和集群EC2实例的服务角色 AWS CLI。使用 --service-role
选项指定服务角色。使用--ec2-attributes
选项的InstanceProfile
参数为EC2实例配置文件指定角色。
将使用单独的选项(--auto-scaling-role
)指定 Auto Scaling 角色。有关更多信息,请参阅 在 Amazon 中使用带有自定义策略的自动扩展实例组 EMR。
要指定自定义IAM角色,请使用 AWS CLI
-
以下命令指定自定义服务角色,
MyCustomServiceRoleForEMR
,以及EC2实例配置文件的自定义角色,MyCustomServiceRoleForClusterEC2Instances
,当启动集群时。此示例使用默认的 Amazon EMR 角色。注意
为了便于读取,包含 Linux 行继续符 (\)。它们可以通过 Linux 命令删除或使用。对于 Windows,请将它们删除或替换为脱字号(^)。
aws emr create-cluster --name "Test cluster" --release-label
emr-7.3.0
\ --applications Name=Hive Name=Pig --service-roleMyCustomServiceRoleForEMR
\ --ec2-attributes InstanceProfile=MyCustomServiceRoleForClusterEC2Instances
,\ KeyName=myKey --instance-type m5.xlarge --instance-count 3
您可以使用这些选项 (而不是使用 --use-default-roles
选项) 来显式指定默认角色。该--use-default-roles
选项为文件中定义的EC2实例配置config
文件指定服务角色和角色 AWS CLI。
以下示例演示了 Amazon AWS CLI 的指定自定义角色config
的文件内容EMR。使用此配置文件后,如果指定了该--use-default-roles
选项,则使用创建集群 MyCustomServiceRoleForEMR
以及 MyCustomServiceRoleForClusterEC2Instances
。 默认情况下,该config
文件将默认值指定service_role
为AmazonElasticMapReduceRole
,将默认值指定instance_profile
为EMR_EC2_DefaultRole
。
[default] output = json region = us-west-1 aws_access_key_id =
myAccessKeyID
aws_secret_access_key =mySecretAccessKey
emr = service_role =MyCustomServiceRoleForEMR
instance_profile =MyCustomServiceRoleForClusterEC2Instances