本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon EMR 自訂 IAM 角色
您可能想要自訂 IAM 服務角色和許可,以根據您的安全需求限制權限。若要自訂許可,我們建議您建立新角色和政策。從預設角色之受管政策中的許可開始 (例如,AmazonElasticMapReduceforEC2Role
和 AmazonElasticMapReduceRole
)。然後,複製內容並將其貼到新政策陳述式、修改適當的許可,並將修改的許可政策連接到您建立的角色。您必須擁有適當的 IAM 許可,才可處理角色和政策。如需詳細資訊,請參閱允許使用者和群組以建立和修改角色。
如果您為 EC2 建立自訂 EMR 角色,請遵循基本工作流程,此工作流程會自動建立相同名稱的執行個體設定檔。Amazon EC2 可讓您建立不同名稱的執行個體設定檔和角色,但是 Amazon EMR 不支援此組態,且在建立叢集時會導致「無效的執行個體設定檔」錯誤。
重要
在服務需求變更時,系統不會自動更新內嵌原則。如果您建立並附接內嵌政策,請注意,服務更新可能會突然導致許可錯誤。如需詳細資訊,請參閱《IAM 使用者指南》中的管理政策和內嵌政策和 建立叢集時指定自訂 IAM 角色。
如需有關使用 IAM 角色的詳細資訊,請參閱《IAM 使用者指南》中的下列主題:
建立叢集時指定自訂 IAM 角色
您可以在建立叢集時指定 Amazon EMR 的服務角色和 Amazon EC2 執行個體設定檔的角色。建立叢集的使用者需要許可才能擷取角色並將其指派至 Amazon EMR 和 EC2 執行個體。否則,帳戶無權呼叫 EC2 錯誤會發生。如需詳細資訊,請參閱允許使用者和群組以建立和修改角色。
使用主控台來指定自訂規則
建立叢集時,您可以使用進階選項指定 Amazon EMR 的自訂服務角色、EC2 執行個體設定檔的自訂角色和自訂 Auto Scaling 角色。使用 Quick options (快速選項) 時,會指定 EC2 執行個體描述檔的預設服務角色和預設角色。如需詳細資訊,請參閱Amazon EMR 使用的 IAM 服務角色。
使用 AWS CLI 指定自訂角色
您可以將選項與 AWS CLI中的 create-cluster
命令搭配使用來明確指定 Amazon EMR 的服務角色和叢集 EC2 執行個體的服務角色。使用 --service-role
選項來指定服務角色。使用 InstanceProfile
選項的 --ec2-attributes
引數,來指定 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.6.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
選項指定服務角色和 AWS CLI的 config
檔案中定義的 EC2 執行個體設定檔。 。
下列範例示範 config
的檔案內容 AWS CLI ,以指定 Amazon 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