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