

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Amazon EMR 自訂 IAM 角色
<a name="emr-iam-roles-custom"></a>

您可能想要自訂 IAM 服務角色和許可，以根據您的安全需求限制權限。若要自訂許可，我們建議您建立新角色和政策。從預設角色之受管政策中的許可開始 (例如，`AmazonElasticMapReduceforEC2Role` 和 `AmazonElasticMapReduceRole`)。然後，複製內容並將其貼到新政策陳述式、修改適當的許可，並將修改的許可政策連接到您建立的角色。您必須擁有適當的 IAM 許可，才可處理角色和政策。如需詳細資訊，請參閱[允許使用者和群組以建立和修改角色](emr-iam-roles-create-permissions.md)。

如果您為 EC2 建立自訂 EMR 角色，請遵循基本工作流程，此工作流程會自動建立相同名稱的執行個體設定檔。Amazon EC2 可讓您建立不同名稱的執行個體設定檔和角色，但是 Amazon EMR 不支援此組態，且在建立叢集時會導致「無效的執行個體設定檔」錯誤。

**重要**  
在服務需求變更時，系統不會自動更新內嵌原則。如果您建立並附接內嵌政策，請注意，服務更新可能會突然導致許可錯誤。如需詳細資訊，請參閱《IAM 使用者指南》**中的[管理政策和內嵌政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies_managed-vs-inline.html)和 [建立叢集時指定自訂 IAM 角色](#emr-iam-roles-launch-jobflow)。

如需有關使用 IAM 角色的詳細資訊，請參閱《IAM 使用者指南》**中的下列主題：
+  [建立角色以將許可委派給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) 
+  [修改角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/modifying-role.html) 
+  [刪除角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/deleting-roles.html) 

## 建立叢集時指定自訂 IAM 角色
<a name="emr-iam-roles-launch-jobflow"></a>

您可以在建立叢集時指定 Amazon EMR 的服務角色和 Amazon EC2 執行個體設定檔的角色。建立叢集的使用者需要許可才能擷取角色並將其指派至 Amazon EMR 和 EC2 執行個體。否則，**帳戶無權呼叫 EC2** 錯誤會發生。如需詳細資訊，請參閱[允許使用者和群組以建立和修改角色](emr-iam-roles-create-permissions.md)。

### 使用主控台來指定自訂規則
<a name="emr-iam-roles-launch-console"></a>

建立叢集時，您可以使用**進階選項**指定 Amazon EMR 的自訂服務角色、EC2 執行個體設定檔的自訂角色和自訂 Auto Scaling 角色。使用 **Quick options (快速選項)** 時，會指定 EC2 執行個體描述檔的預設服務角色和預設角色。如需詳細資訊，請參閱[Amazon EMR 使用的 IAM 服務角色](emr-iam-service-roles.md)。

------
#### [ Console ]

**使用主控台指定自訂 IAM 角色**

當您使用主控台建立叢集時，您必須為 Amazon EMR 指定自訂服務角色，並為 EC2 執行個體描述檔指定自訂角色。如需詳細資訊，請參閱[Amazon EMR 使用的 IAM 服務角色](emr-iam-service-roles.md)。

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) 開啟 Amazon EMR 主控台。

1. 在左側導覽窗格中的 **EC2 上的 EMR** 下，選擇**叢集**，然後選擇**建立叢集**。

1. 在**安全組態和許可**下，尋找**執行個體設定檔的 IAM 角色**和 **Amazon EMR 的服務角色**欄位。對於每個角色類型，從清單中選取一個角色。只有在帳戶中具有該角色類型之適當信任政策的角色才會列出。

1. 選擇適用於您的叢集的任何其他選項。

1. 若要啟動您的叢集，請選擇**建立叢集**。

------

### 使用 AWS CLI 指定自訂角色
<a name="emr-iam-roles-launch-cli"></a>

您可以將選項與 AWS CLI中的 `create-cluster` 命令搭配使用來明確指定 Amazon EMR 的服務角色和叢集 EC2 執行個體的服務角色。使用 `--service-role` 選項來指定服務角色。使用 `InstanceProfile` 選項的 `--ec2-attributes` 引數，來指定 EC2 執行個體設定檔的角色。

會使用單獨的選項 `--auto-scaling-role` 來指定 Auto Scaling 角色。如需詳細資訊，請參閱[使用自動擴展搭配 Amazon EMR 中執行個體群組的自訂政策](emr-automatic-scaling.md)。

**使用 指定自訂 IAM 角色 AWS CLI**
+ 以下命令會在啟動叢集時，指定自訂服務角色 (*MyCustomServiceRoleForEMR*) 以及 EC2 執行個體設定檔的自訂角色 (*MyCustomServiceRoleForClusterEC2Instances*)。此範例使用預設 Amazon EMR 角色。
**注意**  
包含 Linux 行接續字元 (\$1) 是為了提高可讀性。它們可以在 Linux 命令中移除或使用。對於 Windows，請將其移除或取代為插入符號 (^)。

  ```
  aws emr create-cluster --name "Test cluster" --release-label emr-7.12.0 \
  --applications Name=Hive Name=Pig --service-role MyCustomServiceRoleForEMR \
  --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
```