

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

# 設定服務和資源的 Amazon EMR 許可的 IAM AWS 服務角色
<a name="emr-iam-roles"></a>

Amazon EMR 和應用程式 (例如 Hadoop 和 Spark) 需要許可，才可存取其他 AWS 資源和在它們執行時執行動作。Amazon EMR 中的每個叢集都必須有*服務角色*和適用於 Amazon EC2 *執行個體設定檔*的角色。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)和[使用執行個體設定檔](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)。附接至這些角色的 IAM 政策提供對叢集的許可，可代表使用者與其他 AWS 服務相互運作。

如果您的叢集在 Amazon EMR 中使用自動擴展，則需要額外的角色 (Auto Scaling 角色)。如果您使用 EMR Notebooks，則需要 EMR Notebooks AWS 的服務角色。

Amazon EMR 為決定每個角色的許可提供預設角色和預設受管政策。受管政策是由 建立和維護 AWS，因此會在服務需求變更時自動更新。請參閱《IAM 使用者指南》**中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies.html)。

如果您是第一次在帳戶中建立叢集或筆記本，Amazon EMR 的角色尚未存在。在您建立它們後，您可以檢視角色、附接至他們的政策，以及政策在 IAM 主控台 ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) 中允許或拒絕的許可。您可以指定要讓 Amazon EMR 建立和使用的預設角色，可以在建立叢集以自訂許可時建立自己的角色並個別指定，也可以指定使用 AWS CLI建立叢集時要使用的預設角色。如需詳細資訊，請參閱[使用 Amazon EMR 自訂 IAM 角色](emr-iam-roles-custom.md)。

## 修改身分型政策以許可傳遞 Amazon EMR 的服務角色
<a name="emr-iam-roles-passrole"></a>

Amazon EMR 完整許可預設受管政策包含 `iam:PassRole` 安全組態，包括下列項目：
+ 僅適用於特定預設 Amazon EMR 角色的 `iam:PassRole` 許可。
+ `iam:PassedToService` 條件，可讓您僅將政策與指定的 AWS 服務搭配使用，例如 `elasticmapreduce.amazonaws.com`和 `ec2.amazonaws.com`。

您可以在 IAM 主控台中檢視 [AmazonEMRFullAccessPolicy\$1v2](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonEMRFullAccessPolicy_v2) 和 [AmazonEMRServicePolicy\$1v2](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonEMRServicePolicy_v2) 政策的 JSON 版本。建議您建立具有 v2 受管政策的新叢集。

## 服務角色摘要
<a name="emr-iam-roles-summary"></a>

下表列出與 Amazon EMR 關聯的 IAM 服務角色以供快速參考。


| 函式 | 預設角色 | Description | 預設受管政策 | 
| --- | --- | --- | --- | 
|  [Amazon EMR 的服務角色 (EMR 角色)](emr-iam-role.md)  |  `EMR_DefaultRole_V2`  |  允許 Amazon EMR 在佈建資源和執行 AWS 服務層級動作時代表您呼叫其他 服務。所有叢集皆需要這個角色。  |  `AmazonEMRServicePolicy_v2`  請求 Spot 執行個體需要服務連結角色。如果此角色不存在，則 Amazon EMR 服務角色必須有建立它的許可，否則會發生許可錯誤。如果計劃請求 Spot 執行個體，您必須更新此政策，以包含允許建立此服務連結角色的陳述式。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的 Spot 執行個體請求[Amazon EMR 的服務角色 (EMR 角色)](emr-iam-role.md)的服務連結角色。 [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html#service-linked-roles-spot-instance-requests](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html#service-linked-roles-spot-instance-requests)   | 
| [叢集 EC2 執行個體的服務角色 (EC2 執行個體設定檔)](emr-iam-role-for-ec2.md) |  `EMR_EC2_DefaultRole`  |  在叢集執行個體上的 Hadoop 生態系統上執行的應用程式程序，會在呼叫其他 AWS 服務時使用此角色。對於使用 EMRFS 在 Amazon S3 中存取資料，您可以根據 Amazon S3 中的資料位置指定要擔任的不同角色。例如，多個團隊可存取單一 Amazon S3 資料「儲存帳戶」。如需詳細資訊，請參閱[設定向 Amazon S3 請求使用 EMRFS 的 IAM 角色](emr-emrfs-iam-roles.md)。所有叢集皆需要這個角色。  |  `AmazonElasticMapReduceforEC2Role`。如需詳細資訊，請參閱 [叢集 EC2 執行個體的服務角色 (EC2 執行個體設定檔)](emr-iam-role-for-ec2.md)。  | 
| [Amazon EMR 中自動擴展的服務角色 (Auto Scaling 角色)](emr-iam-role-automatic-scaling.md) |  `EMR_AutoScaling_DefaultRole`  |  可允許其他動作來動態擴展環境。對於在 Amazon EMR 中使用自動擴展的叢集才需要此項目。如需詳細資訊，請參閱[使用自動擴展搭配 Amazon EMR 中執行個體群組的自訂政策](emr-automatic-scaling.md)。  |  `AmazonElasticMapReduceforAutoScalingRole`。如需詳細資訊，請參閱 [Amazon EMR 中自動擴展的服務角色 (Auto Scaling 角色)](emr-iam-role-automatic-scaling.md)。  | 
| [EMR Notebooks 的服務角色](emr-managed-notebooks-service-role.md) |  `EMR_Notebooks_DefaultRole`  |  提供 EMR 筆記本存取其他 AWS 資源和執行動作所需的許可。僅在使用 EMR Notebooks 時才需要此項目。  |  `AmazonElasticMapReduceEditorsRole`。如需詳細資訊，請參閱 [EMR Notebooks 的服務角色](emr-managed-notebooks-service-role.md)。 根據預設，也會連接 `S3FullAccessPolicy`。以下是此政策的內容。   JSON   

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowS3"
    }
  ]
}
```      | 
| [服務連結角色](using-service-linked-roles.md) | `AWSServiceRoleForEMRCleanup` | Amazon EMR 會自動建立服務連結角色。如果 Amazon EMR 服務已失去清除 Amazon EC2 資源的能力，Amazon EMR 可以使用此角色來清除。如果叢集使用 Spot 執行個體，連接到 [Amazon EMR 的服務角色 (EMR 角色)](emr-iam-role.md) 的許可政策必須允許建立服務連結角色。如需詳細資訊，請參閱[使用 Amazon EMR 的服務連結角色](using-service-linked-roles.md)。 | `AmazonEMRCleanupPolicy` | 

**Topics**
+ [修改身分型政策以許可傳遞 Amazon EMR 的服務角色](#emr-iam-roles-passrole)
+ [服務角色摘要](#emr-iam-roles-summary)
+ [Amazon EMR 使用的 IAM 服務角色](emr-iam-service-roles.md)
+ [使用 Amazon EMR 自訂 IAM 角色](emr-iam-roles-custom.md)
+ [設定向 Amazon S3 請求使用 EMRFS 的 IAM 角色](emr-emrfs-iam-roles.md)
+ [使用資源型政策來存取 AWS Glue Data Catalog](emr-iam-roles-glue.md)
+ [將 IAM 角色與直接呼叫 AWS 服務的應用程式搭配使用](emr-iam-roles-calling.md)
+ [允許使用者和群組以建立和修改角色](emr-iam-roles-create-permissions.md)

# Amazon EMR 使用的 IAM 服務角色
<a name="emr-iam-service-roles"></a>

Amazon EMR 在佈建叢集資源、執行應用程式、動態擴展資源，以及建立和執行 EMR Notebooks 時，代表您使用 IAM 服務角色執行動作。與其他 AWS 服務互動時，Amazon EMR 會使用下列角色。每個角色在 Amazon EMR 內都有唯一的函數。本節的主題描述角色函數，並提供每個角色的預設角色和許可政策。

如果您的叢集上有直接呼叫 AWS 服務的應用程式碼，您可能需要使用 SDK 來指定角色。如需詳細資訊，請參閱[將 IAM 角色與直接呼叫 AWS 服務的應用程式搭配使用](emr-iam-roles-calling.md)。

**Topics**
+ [Amazon EMR 的服務角色 (EMR 角色)](emr-iam-role.md)
+ [叢集 EC2 執行個體的服務角色 (EC2 執行個體設定檔)](emr-iam-role-for-ec2.md)
+ [Amazon EMR 中自動擴展的服務角色 (Auto Scaling 角色)](emr-iam-role-automatic-scaling.md)
+ [EMR Notebooks 的服務角色](emr-managed-notebooks-service-role.md)
+ [使用 Amazon EMR 的服務連結角色](using-service-linked-roles.md)

# Amazon EMR 的服務角色 (EMR 角色)
<a name="emr-iam-role"></a>

Amazon EMR 角色會在佈建資源和執行服務層級的任務 (這些任務不會在執行叢集內 Amazon EC2 執行個體的內容中執行) 時，定義 Amazon EMR 允許的動作。例如，服務角色用於在叢集啟動時佈建 EC2 執行個體。
+ 預設角色名稱為 `EMR_DefaultRole_V2`。
+ 附接至 `EMR_DefaultRole_V2` 的 Amazon EMR 範圍預設受管政策是 `AmazonEMRServicePolicy_v2`。此 v2 政策會取代已棄用的預設受管政策 `AmazonElasticMapReduceRole`。

`AmazonEMRServicePolicy_v2` 取決於 Amazon EMR 佈建或使用的資源的範圍縮小存取權。使用此政策時，您需要在佈建叢集時傳遞使用者標籤 `for-use-with-amazon-emr-managed-policies = true`。Amazon EMR 將自動傳播這些標籤。此外，您可能還需要手動將使用者標籤新增至特定類型的資源，例如非 Amazon EMR 建立的 EC2 安全群組。請參閱 [標記資源以使用受管政策](emr-managed-iam-policies.md#manually-tagged-resources)。

**重要**  
Amazon EMR 使用此 Amazon EMR 服務角色和 `AWSServiceRoleForEMRCleanup` 角色來清除帳戶中不再使用的叢集資源，例如 Amazon EC2 執行個體。必須包含角色政策的動作，才能刪除或終止資源。否則，Amazon EMR 無法執行這些清除動作，保留在叢集上的未使用資源可能會產生費用。

以下顯示目前 `AmazonEMRServicePolicy_v2` 政策的內容。您也可以在 IAM 主控台上查看 [https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonEMRServicePolicy_v2](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonEMRServicePolicy_v2) 受管政策的目前內容。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CreateInTaggedNetwork",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateNetworkInterface",
        "ec2:RunInstances",
        "ec2:CreateFleet",
        "ec2:CreateLaunchTemplate",
        "ec2:CreateLaunchTemplateVersion"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:subnet/*",
        "arn:aws:ec2:*:*:security-group/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "CreateWithEMRTaggedLaunchTemplate",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateFleet",
        "ec2:RunInstances",
        "ec2:CreateLaunchTemplateVersion"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:launch-template/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "CreateEMRTaggedLaunchTemplate",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateLaunchTemplate"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:launch-template/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "CreateEMRTaggedInstancesAndVolumes",
      "Effect": "Allow",
      "Action": [
        "ec2:RunInstances",
        "ec2:CreateFleet"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:instance/*",
        "arn:aws:ec2:*:*:volume/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "ResourcesToLaunchEC2",
      "Effect": "Allow",
      "Action": [
        "ec2:RunInstances",
        "ec2:CreateFleet",
        "ec2:CreateLaunchTemplate",
        "ec2:CreateLaunchTemplateVersion"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:network-interface/*",
        "arn:aws:ec2:*::image/ami-*",
        "arn:aws:ec2:*:*:key-pair/*",
        "arn:aws:ec2:*:*:capacity-reservation/*",
        "arn:aws:ec2:*:*:placement-group/pg-*",
        "arn:aws:ec2:*:*:fleet/*",
        "arn:aws:ec2:*:*:dedicated-host/*",
        "arn:aws:resource-groups:*:*:group/*"
      ]
    },
    {
      "Sid": "ManageEMRTaggedResources",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateLaunchTemplateVersion",
        "ec2:DeleteLaunchTemplate",
        "ec2:DeleteNetworkInterface",
        "ec2:ModifyInstanceAttribute",
        "ec2:TerminateInstances"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "ManageTagsOnEMRTaggedResources",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags",
        "ec2:DeleteTags"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:instance/*",
        "arn:aws:ec2:*:*:volume/*",
        "arn:aws:ec2:*:*:network-interface/*",
        "arn:aws:ec2:*:*:launch-template/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "CreateNetworkInterfaceNeededForPrivateSubnet",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateNetworkInterface"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:network-interface/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "TagOnCreateTaggedEMRResources",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:network-interface/*",
        "arn:aws:ec2:*:*:instance/*",
        "arn:aws:ec2:*:*:volume/*",
        "arn:aws:ec2:*:*:launch-template/*"
      ],
      "Condition": {
        "StringEquals": {
          "ec2:CreateAction": [
            "RunInstances",
            "CreateFleet",
            "CreateLaunchTemplate",
            "CreateNetworkInterface"
          ]
        }
      }
    },
    {
      "Sid": "TagPlacementGroups",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags",
        "ec2:DeleteTags"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:placement-group/pg-*"
      ]
    },
    {
      "Sid": "ListActionsForEC2Resources",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeAccountAttributes",
        "ec2:DescribeCapacityReservations",
        "ec2:DescribeDhcpOptions",
        "ec2:DescribeImages",
        "ec2:DescribeInstances",
        "ec2:DescribeInstanceTypeOfferings",
        "ec2:DescribeLaunchTemplates",
        "ec2:DescribeNetworkAcls",
        "ec2:DescribeNetworkInterfaces",
        "ec2:DescribePlacementGroups",
        "ec2:DescribeRouteTables",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSubnets",
        "ec2:DescribeVolumes",
        "ec2:DescribeVolumeStatus",
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeVpcEndpoints",
        "ec2:DescribeVpcs"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "CreateDefaultSecurityGroupWithEMRTags",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateSecurityGroup"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:security-group/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "CreateDefaultSecurityGroupInVPCWithEMRTags",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateSecurityGroup"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:vpc/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "TagOnCreateDefaultSecurityGroupWithEMRTags",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:security-group/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true",
          "ec2:CreateAction": "CreateSecurityGroup"
        }
      }
    },
    {
      "Sid": "ManageSecurityGroups",
      "Effect": "Allow",
      "Action": [
        "ec2:AuthorizeSecurityGroupEgress",
        "ec2:AuthorizeSecurityGroupIngress",
        "ec2:RevokeSecurityGroupEgress",
        "ec2:RevokeSecurityGroupIngress"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "CreateEMRPlacementGroups",
      "Effect": "Allow",
      "Action": [
        "ec2:CreatePlacementGroup"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:placement-group/pg-*"
      ]
    },
    {
      "Sid": "DeletePlacementGroups",
      "Effect": "Allow",
      "Action": [
        "ec2:DeletePlacementGroup"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "AutoScaling",
      "Effect": "Allow",
      "Action": [
        "application-autoscaling:DeleteScalingPolicy",
        "application-autoscaling:DeregisterScalableTarget",
        "application-autoscaling:DescribeScalableTargets",
        "application-autoscaling:DescribeScalingPolicies",
        "application-autoscaling:PutScalingPolicy",
        "application-autoscaling:RegisterScalableTarget"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "ResourceGroupsForCapacityReservations",
      "Effect": "Allow",
      "Action": [
        "resource-groups:ListGroupResources"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "AutoScalingCloudWatch",
      "Effect": "Allow",
      "Action": [
        "cloudwatch:PutMetricAlarm",
        "cloudwatch:DeleteAlarms",
        "cloudwatch:DescribeAlarms"
      ],
      "Resource": [
        "arn:aws:cloudwatch:*:*:alarm:*_EMR_Auto_Scaling"
      ]
    },
    {
      "Sid": "PassRoleForAutoScaling",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::*:role/EMR_AutoScaling_DefaultRole"
      ],
      "Condition": {
        "StringLike": {
          "iam:PassedToService": "application-autoscaling.amazonaws.com*"
        }
      }
    },
    {
      "Sid": "PassRoleForEC2",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::*:role/EMR_EC2_DefaultRole"
      ],
      "Condition": {
        "StringLike": {
          "iam:PassedToService": "ec2.amazonaws.com*"
        }
      }
    },
    {
      "Sid": "CreateAndModifyEmrServiceVPCEndpoint",
      "Effect": "Allow",
      "Action": [
        "ec2:ModifyVpcEndpoint",
        "ec2:CreateVpcEndpoint"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:vpc-endpoint/*",
        "arn:aws:ec2:*:*:subnet/*",
        "arn:aws:ec2:*:*:security-group/*",
        "arn:aws:ec2:*:*:vpc/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "CreateEmrServiceVPCEndpoint",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateVpcEndpoint"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:vpc-endpoint/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true",
          "aws:RequestTag/Name": "emr-service-vpce"
        }
      }
    },
    {
      "Sid": "TagEmrServiceVPCEndpoint",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:vpc-endpoint/*"
      ],
      "Condition": {
        "StringEquals": {
          "ec2:CreateAction": "CreateVpcEndpoint",
          "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true",
          "aws:RequestTag/Name": "emr-service-vpce"
        }
      }
    }
  ]
}
```

------

您的服務角色應使用下列信任政策。

**重要**  
下列信任政策包括 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 和 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 全域條件金鑰，這些金鑰會將您授予 Amazon EMR 的許可限制在帳戶中的特定資源。使用它們可以保護您免受[混淆代理人問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowSTSAssumerole",
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole"
      ],
      "Resource": "arn:aws:iam::123456789012:role/EMRServiceRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:elasticmapreduce:*:123456789012:*"
        }
      }
    }
  ]
}
```

------

# 叢集 EC2 執行個體的服務角色 (EC2 執行個體設定檔)
<a name="emr-iam-role-for-ec2"></a>

叢集 EC2 執行個體的服務角色 (也稱為 Amazon EMR 的 EC2 執行個體設定檔) 是一種特殊類型的服務角色，它會在執行個體啟動時指派給 Amazon EMR 叢集中的每個 EC2 執行個體。在 Hadoop 生態系統上執行的應用程式程序會擔任此角色，以取得與其他 AWS 服務互動的許可。

如需有關 EC2 執行個體的服務角色的詳細資訊，請參閱《IAM 使用者指南》**中的[使用 IAM 角色為在 Amazon EC2 執行個體上執行的應用程式授予許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)。

**重要**  
叢集 EC2 執行個體的預設服務角色及其相關聯的 AWS 預設受管政策`AmazonElasticMapReduceforEC2Role`位於棄用路徑中，未提供替代的 AWS 受管政策。您需要建立並指定執行個體設定檔，以取代已棄用的角色和預設政策。

## 預設角色和受管政策
<a name="emr-ec2-role-default"></a>
+ 預設角色名稱為 `EMR_EC2_DefaultRole`。
+ `EMR_EC2_DefaultRole` 預設受管政策 `AmazonElasticMapReduceforEC2Role` 即將結束支援。將資源型政策套用至 S3 儲存貯體和 Amazon EMR 需要的其他資源，或將您自己的客戶受管政策與 IAM 角色搭配使用作為執行個體設定檔，而不是針對 EC2 執行個體設定檔使用預設受管政策。如需詳細資訊，請參閱[為叢集 EC2 執行個體建立擁有最低權限許可的服務角色](#emr-ec2-role-least-privilege)。

以下顯示 `AmazonElasticMapReduceforEC2Role` 第 3 版的內容。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Resource": [
        "*"
      ],
      "Action": [
        "cloudwatch:*",
        "dynamodb:*",
        "ec2:Describe*",
        "elasticmapreduce:Describe*",
        "elasticmapreduce:ListBootstrapActions",
        "elasticmapreduce:ListClusters",
        "elasticmapreduce:ListInstanceGroups",
        "elasticmapreduce:ListInstances",
        "elasticmapreduce:ListSteps",
        "kinesis:CreateStream",
        "kinesis:DeleteStream",
        "kinesis:DescribeStream",
        "kinesis:GetRecords",
        "kinesis:GetShardIterator",
        "kinesis:MergeShards",
        "kinesis:PutRecord",
        "kinesis:SplitShard",
        "rds:Describe*",
        "s3:*",
        "sdb:*",
        "sns:*",
        "sqs:*",
        "glue:CreateDatabase",
        "glue:UpdateDatabase",
        "glue:DeleteDatabase",
        "glue:GetDatabase",
        "glue:GetDatabases",
        "glue:CreateTable",
        "glue:UpdateTable",
        "glue:DeleteTable",
        "glue:GetTable",
        "glue:GetTables",
        "glue:GetTableVersions",
        "glue:CreatePartition",
        "glue:BatchCreatePartition",
        "glue:UpdatePartition",
        "glue:DeletePartition",
        "glue:BatchDeletePartition",
        "glue:GetPartition",
        "glue:GetPartitions",
        "glue:BatchGetPartition",
        "glue:CreateUserDefinedFunction",
        "glue:UpdateUserDefinedFunction",
        "glue:DeleteUserDefinedFunction",
        "glue:GetUserDefinedFunction",
        "glue:GetUserDefinedFunctions"
      ],
      "Sid": "AllowCLOUDWATCH"
    }
  ]
}
```

------

您的服務角色應使用下列信任政策。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowSTSAssumerole",
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole"
      ],
      "Resource": "arn:aws:iam::123456789012:role/EMR_EC2_DefaultRole"
    }
  ]
}
```

------

## 為叢集 EC2 執行個體建立擁有最低權限許可的服務角色
<a name="emr-ec2-role-least-privilege"></a>

最佳實務是，強烈建議您為叢集 EC2 執行個體建立服務角色，以及具有應用程式 AWS 所需其他服務最低許可的許可政策。

預設受管政策 `AmazonElasticMapReduceforEC2Role` 提供許可，可讓您輕鬆地啟動初始叢集。不過， `AmazonElasticMapReduceforEC2Role` 正在淘汰的路徑上，Amazon EMR 不會為淘汰的角色提供替代的 AWS 受管預設政策。若要啟動初始叢集，您需要提供客戶受管資源型或 ID 型政策。

下列政策陳述式提供 Amazon EMR 不同功能所需的許可範例。我們建議您使用這些許可來建立許可政策，限制只能存取您的叢集所需的功能和資源。所有範例政策陳述式都使用 *us-west-2*區域和虛構 AWS 帳戶 ID *123456789012*。請針對您的叢集適當替換。

如需有關建立和指定自訂角色的詳細資訊，請參閱 [使用 Amazon EMR 自訂 IAM 角色](emr-iam-roles-custom.md)。

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

### 使用 EMRFS 在 Amazon S3 中讀取和寫入資料
<a name="emr-ec2-role-EMRFS"></a>

當 Amazon EMR 叢集上執行的應用程式參考使用 `s3://mydata` 格式的資料時，Amazon EMR 將使用 EC2 執行個體設定檔發出請求。叢集通常以這種方式在 Amazon S3 中讀取和寫入資料，而且依預設，Amazon EMR 使用附接至叢集 EC2 執行個體的服務角色的許可。如需詳細資訊，請參閱[設定向 Amazon S3 請求使用 EMRFS 的 IAM 角色](emr-emrfs-iam-roles.md)。

由於 EMRFS 的 IAM 角色會回復為附接至叢集 EC2 執行個體的服務角色的許可，作為最佳實務，建議您使用 EMRFS 的 IAM 角色，並限制附接至叢集 EC2 執行個體的服務角色的 EMRFS 和 Amazon S3 許可。

以下範例陳述式展示 EMRFS 向 Amazon S3 發出請求所需的許可。
+ *my-data-bucket-in-s3-for-emrfs-reads-and-writes* 使用 */\$1* 指定 Amazon S3 中叢集讀取和寫入資料的儲存貯體以及所有子資料夾。只新增您的應用程式需要的儲存貯體和資料夾。
+ 只有在啟用 EMRFS 一致性檢視時，才需要允許 `dynamodb` 動作的政策陳述式。*EmrFSMetadata* 指定 EMRFS 一致性檢視的預設資料夾。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:CreateBucket",
        "s3:DeleteObject",
        "s3:GetBucketVersioning",
        "s3:GetObject",
        "s3:GetObjectTagging",
        "s3:GetObjectVersion",
        "s3:ListBucket",
        "s3:ListBucketMultipartUploads",
        "s3:ListBucketVersions",
        "s3:ListMultipartUploadParts",
        "s3:PutBucketVersioning",
        "s3:PutObject",
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::my-data-bucket-in-s3-for-emrfs-reads-and-writes",
        "arn:aws:s3:::my-data-bucket-in-s3-for-emrfs-reads-and-writes/*"
      ],
      "Sid": "AllowS3Abortmultipartupload"
    },
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:CreateTable",
        "dynamodb:BatchGetItem",
        "dynamodb:BatchWriteItem",
        "dynamodb:PutItem",
        "dynamodb:DescribeTable",
        "dynamodb:DeleteItem",
        "dynamodb:GetItem",
        "dynamodb:Scan",
        "dynamodb:Query",
        "dynamodb:UpdateItem",
        "dynamodb:DeleteTable",
        "dynamodb:UpdateTable"
      ],
      "Resource": [
        "arn:aws:dynamodb:*:123456789012:table/EmrFSMetadata"
      ],
      "Sid": "AllowDYNAMODBCreatetable"
    },
    {
      "Effect": "Allow",
      "Action": [
        "cloudwatch:PutMetricData",
        "dynamodb:ListTables",
        "s3:ListBucket"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowCLOUDWATCHPutmetricdata"
    },
    {
      "Effect": "Allow",
      "Action": [
        "sqs:GetQueueUrl",
        "sqs:ReceiveMessage",
        "sqs:DeleteQueue",
        "sqs:SendMessage",
        "sqs:CreateQueue"
      ],
      "Resource": [
        "arn:aws:sqs:*:123456789012:EMRFS-Inconsistency-*"
      ],
      "Sid": "AllowSQSGetqueueurl"
    }
  ]
}
```

------

### 將日誌檔案封存至 Amazon S3
<a name="emr-ec2-role-s3-logs"></a>

下列政策陳述式允許 Amazon EMR 叢集將日誌檔封存至指定的 Amazon S3 位置。在以下範例中，建立叢集時，使用 主控台中的**日誌資料夾 S3 位置**、使用 中的 `--log-uri`選項 AWS CLI，或在 `RunJobFlow`命令中使用 `LogUri` 參數來*s3://MyLoggingBucket/MyEMRClusterLogs*指定 。如需詳細資訊，請參閱[將日誌檔案封存至 Amazon S3](emr-plan-debugging.md#emr-plan-debugging-logs-archive)。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::MyLoggingBucket/MyEMRClusterLogs/*"
      ],
      "Sid": "AllowS3Putobject"
    }
  ]
}
```

------

### 使用 AWS Glue Data Catalog
<a name="emr-ec2-role-glue"></a>

如果您使用 AWS Glue Data Catalog 做為應用程式的中繼存放區，下列政策陳述式會允許所需的動作。如需詳細資訊，請參閱《*Amazon EMR 版本指南*》中的[使用 AWS Glue Data Catalog 作為 Spark SQL 的中繼存放區](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-glue.html)、[使用 AWS Glue Data Catalog 作為 Hive 的中繼存放](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hive-metastore-glue.html)區，以及[使用 Presto 搭配 AWS Glue Data Catalog](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-presto-glue.html)。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:CreateDatabase",
        "glue:UpdateDatabase",
        "glue:DeleteDatabase",
        "glue:GetDatabase",
        "glue:GetDatabases",
        "glue:CreateTable",
        "glue:UpdateTable",
        "glue:DeleteTable",
        "glue:GetTable",
        "glue:GetTables",
        "glue:GetTableVersions",
        "glue:CreatePartition",
        "glue:BatchCreatePartition",
        "glue:UpdatePartition",
        "glue:DeletePartition",
        "glue:BatchDeletePartition",
        "glue:GetPartition",
        "glue:GetPartitions",
        "glue:BatchGetPartition",
        "glue:CreateUserDefinedFunction",
        "glue:UpdateUserDefinedFunction",
        "glue:DeleteUserDefinedFunction",
        "glue:GetUserDefinedFunction",
        "glue:GetUserDefinedFunctions"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowGLUECreatedatabase"
    }
  ]
}
```

------

# Amazon EMR 中自動擴展的服務角色 (Auto Scaling 角色)
<a name="emr-iam-role-automatic-scaling"></a>

適用於 Amazon EMR 的 Auto Scaling 角色會執行與服務角色類似的函數，但會允許動態擴展環境的其他動作。
+ 預設角色名稱為 `EMR_AutoScaling_DefaultRole`。
+ 連接到 `EMR_AutoScaling_DefaultRole` 的預設受管政策是 `AmazonElasticMapReduceforAutoScalingRole`。

`AmazonElasticMapReduceforAutoScalingRole` 第 1 版內容如下所示。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "cloudwatch:DescribeAlarms",
        "elasticmapreduce:ListInstanceGroups",
        "elasticmapreduce:ModifyInstanceGroups"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ],
      "Sid": "AllowCLOUDWATCHDescribealarms"
    }
  ]
}
```

------

您的服務角色應使用下列信任政策。

**重要**  
下列信任政策包括 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 和 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 全域條件金鑰，這些金鑰會將您授予 Amazon EMR 的許可限制在帳戶中的特定資源。使用它們可以保護您免受[混淆代理人問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole"
      ],
      "Resource": "arn:aws:iam::123456789012:role/ApplicationAutoScalingEMRRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:application-autoscaling:*:123456789012:scalable-target/*"
        }
      },
      "Sid": "AllowSTSAssumerole"
    }
  ]
}
```

------

# EMR Notebooks 的服務角色
<a name="emr-managed-notebooks-service-role"></a>

每個 EMR 筆記本都需要存取其他 AWS 資源和執行動作的許可。連接到此服務角色的 IAM 政策提供許可，讓筆記本與其他 AWS 服務相互操作。當您使用 建立筆記本時 AWS 管理主控台，您可以指定 *AWS 服務角色*。您可以使用預設的角色 `EMR_Notebooks_DefaultRole` 或指定您建立的角色。如果先前未建立筆記本，您可以選擇建立預設的角色。
+ 預設角色名稱為 `EMR_Notebooks_DefaultRole`。
+ 附接至 `EMR_Notebooks_DefaultRole` 的預設受管政策是 `AmazonElasticMapReduceEditorsRole` 和 `S3FullAccessPolicy`。

您的服務角色應使用下列信任政策。

**重要**  
下列信任政策包括 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 和 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 全域條件金鑰，這些金鑰會將您授予 Amazon EMR 的許可限制在帳戶中的特定資源。使用它們可以保護您免受[混淆代理人問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole"
      ],
      "Resource": "arn:aws:iam::123456789012:role/EMRServiceRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:elasticmapreduce:*:123456789012:*"
        }
      },
      "Sid": "AllowSTSAssumerole"
    }
  ]
}
```

------

`AmazonElasticMapReduceEditorsRole` 第 1 版的內容如下。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:AuthorizeSecurityGroupEgress",
        "ec2:AuthorizeSecurityGroupIngress",
        "ec2:CreateSecurityGroup",
        "ec2:DescribeSecurityGroups",
        "ec2:RevokeSecurityGroupEgress",
        "ec2:CreateNetworkInterface",
        "ec2:CreateNetworkInterfacePermission",
        "ec2:DeleteNetworkInterface",
        "ec2:DeleteNetworkInterfacePermission",
        "ec2:DescribeNetworkInterfaces",
        "ec2:ModifyNetworkInterfaceAttribute",
        "ec2:DescribeTags",
        "ec2:DescribeInstances",
        "ec2:DescribeSubnets",
        "ec2:DescribeVpcs",
        "elasticmapreduce:ListInstances",
        "elasticmapreduce:DescribeCluster",
        "elasticmapreduce:ListSteps"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowEC2Authorizesecuritygroupegress"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:network-interface/*"
      ],
      "Condition": {
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "aws:elasticmapreduce:editor-id",
            "aws:elasticmapreduce:job-flow-id"
          ]
        }
      },
      "Sid": "AllowEC2Createtags"
    }
  ]
}
```

------

以下是 `S3FullAccessPolicy` 的內容。`S3FullAccessPolicy` 可讓 EMR Notebooks 的服務角色對您 AWS 帳戶中的物件執行所有 Amazon S3 動作。為 EMR Notebooks 建立自訂服務角色時，您必須授予服務角色 Amazon S3 許可。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowS3"
    }
  ]
}
```

------

您可以將服務角色的讀取和寫入存取權範圍縮減至要儲存筆記本檔案的 Amazon S3 位置。請使用下列最小 Amazon S3 許可集。

```
"s3:PutObject",
"s3:GetObject",
"s3:GetEncryptionConfiguration",
"s3:ListBucket",
"s3:DeleteObject"
```

如果您的 Amazon S3 儲存貯體已加密，您必須包含 AWS Key Management Service的下列許可。

```
"kms:Decrypt",
"kms:GenerateDataKey",
"kms:ReEncryptFrom",
"kms:ReEncryptTo",
"kms:DescribeKey"
```

當您將 Git 儲存庫連結到筆記本並需要為儲存庫建立機密時，您必須在附接至 Amazon EMR Notebooks 服務角色的 IAM 政策中新增 `secretsmanager:GetSecretValue` 許可。範例政策如下所示：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```

------

## EMR Notebooks 服務角色許可
<a name="emr-managed-notebooks-service-role-permissions"></a>

下表列出 EMR Notebooks 使用服務角色所採取的動作，以及每個動作所需的許可。


****  

| Action | 許可 | 
| --- | --- | 
| 在筆記本與 Amazon EMR 叢集之間建立安全的網路通道，並執行必要的清除動作。 |  <pre>"ec2:CreateNetworkInterface", <br />"ec2:CreateNetworkInterfacePermission", <br />"ec2:DeleteNetworkInterface", <br />"ec2:DeleteNetworkInterfacePermission", <br />"ec2:DescribeNetworkInterfaces", <br />"ec2:ModifyNetworkInterfaceAttribute", <br />"ec2:AuthorizeSecurityGroupEgress", <br />"ec2:AuthorizeSecurityGroupIngress", <br />"ec2:CreateSecurityGroup",<br />"ec2:DescribeSecurityGroups", <br />"ec2:RevokeSecurityGroupEgress",<br />"ec2:DescribeTags",<br />"ec2:DescribeInstances",<br />"ec2:DescribeSubnets",<br />"ec2:DescribeVpcs",<br />"elasticmapreduce:ListInstances", <br />"elasticmapreduce:DescribeCluster", <br />"elasticmapreduce:ListSteps"</pre>  | 
| 使用儲存在 AWS Secrets Manager 中的 Git 憑證，以將 Git 儲存庫連結至筆記本。 |  <pre>"secretsmanager:GetSecretValue"</pre>  | 
| 將 AWS 標籤套用至 EMR Notebooks 在設定安全網路頻道時建立的網路界面和預設安全群組。如需詳細資訊，請參閱[標記 AWS 資源](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html)。 |  <pre>"ec2:CreateTags"</pre>  | 
| 存取筆記本檔案和中繼資料或將其上傳至 Amazon S3。 |  <pre>"s3:PutObject",<br />"s3:GetObject",<br />"s3:GetEncryptionConfiguration",<br />"s3:ListBucket",<br />"s3:DeleteObject" </pre> 僅當您使用加密的 Amazon S3 儲存貯體時，才需要下列許可。 <pre>"kms:Decrypt",<br />"kms:GenerateDataKey",<br />"kms:ReEncryptFrom",<br />"kms:ReEncryptTo",<br />"kms:DescribeKey"</pre>  | 

## AWS 受管政策的 EMR Notebooks 更新
<a name="notebooks-slr-updates"></a>

檢視自 2021 年 3 月 1 日起 EMR Notebooks AWS 受管政策更新的詳細資訊。


| 變更 | 描述 | Date | 
| --- | --- | --- | 
| AmazonElasticMapReduceEditorsRole - Added permissions | EMR Notebooks 已將 `ec2:describeVPCs` 和 `elastmicmapreduce:ListSteps` 許可新增至 `AmazonElasticMapReduceEditorsRole`。  | 2023 年 2 月 8 日  | 
| EMR Notebooks 已開始追蹤變更  |  EMR Notebooks 開始追蹤其 AWS 受管政策的變更。  | 2023 年 2 月 8 日  | 

# 使用 Amazon EMR 的服務連結角色
<a name="using-service-linked-roles"></a>

Amazon EMR 使用 AWS Identity and Access Management (IAM) [服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)。服務連結角色是直接連結至 Amazon EMR 的一種特殊 IAM 角色類型。服務連結角色是由 Amazon EMR 預先定義，並包含該服務代表您呼叫其他 AWS 服務所需的所有許可。

**Topics**
+ [使用 Amazon EMR 的服務連結角色進行清除](using-service-linked-roles-cleanup.md)
+ [使用服務連結角色搭配 Amazon EMR 進行預先寫入記錄](using-service-linked-roles-wal.md)

如需有關支援服務連結角色的其他 服務的資訊，請參閱[AWS 使用 IAM 的服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)，並在**服務連結角色**欄中尋找具有**是**的服務。選擇具有連結的**是**，以檢視該服務的服務連結角色文件。

# 使用 Amazon EMR 的服務連結角色進行清除
<a name="using-service-linked-roles-cleanup"></a>

Amazon EMR 使用 AWS Identity and Access Management (IAM) [服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)。服務連結角色是直接連結至 Amazon EMR 的一種特殊 IAM 角色類型。服務連結角色是由 Amazon EMR 預先定義，並包含該服務代表您呼叫其他 AWS 服務所需的所有許可。

服務連結角色可與 Amazon EMR 服務角色和 Amazon EMR 的 Amazon EC2 執行個體描述檔搭配使用。如需服務角色和執行個體設定檔的詳細資訊，請參閱[設定服務和資源的 Amazon EMR 許可的 IAM AWS 服務角色](emr-iam-roles.md)。

服務連結角色可讓您更輕鬆地設定 Amazon EMR，因為您不必手動新增必要的許可。Amazon EMR 會定義其服務連結角色的許可，除非另有定義，否則只有 Amazon EMR 可以擔任其角色。定義的許可包括信任政策和許可政策，且該許可政策無法附加至其他 IAM 實體。

只有在刪除任何相關資源並終止帳戶中的所有 EMR 叢集之後，您才能刪除 Amazon EMR 的此服務連結角色。這可保護您的 Amazon EMR 資源，讓您不會不小心移除存取資源的許可。

## 使用服務連結角色進行清除
<a name="using-service-linked-roles-permissions-cleanup"></a>

Amazon EMR 使用服務型 **AWSServiceRoleForEMRCleanup** 角色，在 Amazon EMR 服務連結角色失去該功能時，授予 Amazon EMR 代表您終止和刪除 Amazon EC2 資源的許可。如果尚未存在，Amazon EMR 會在叢集建立期間自動建立服務連結角色。

AWSServiceRoleForEMRCleanup 服務連結角色信任下列服務可擔任該角色：
+ `elasticmapreduce.amazonaws.com`

AWSServiceRoleForEMRCleanup 服務連結角色許可政策允許 Amazon EMR 對指定的資源上完成下列動作：
+ 動作：`ec2` 上的 `DescribeInstances`
+ 動作：`ec2` 上的 `DescribeLaunchTemplates`
+ 動作：`ec2` 上的 `DeleteLaunchTemplate`
+ 動作：`ec2` 上的 `DescribeSpotInstanceRequests`
+ 動作：`ec2` 上的 `ModifyInstanceAttribute`
+ 動作：`ec2` 上的 `TerminateInstances`
+ 動作：`ec2` 上的 `CancelSpotInstanceRequests`
+ 動作：`ec2` 上的 `DeleteNetworkInterface`
+ 動作：`ec2` 上的 `DescribeInstanceAttribute`
+ 動作：`ec2` 上的 `DescribeVolumeStatus`
+ 動作：`ec2` 上的 `DescribeVolumes`
+ 動作：`ec2` 上的 `DetachVolume`
+ 動作：`ec2` 上的 `DeleteVolume`
+ 動作：`ec2` 上的 `DescribePlacementGroups`
+ 動作：`ec2` 上的 `DeletePlacementGroup`

您必須設定許可，IAM 實體 (如使用者、群組或角色) 才可建立、編輯或刪除服務連結角色。

## 建立 Amazon EMR 的服務連結角色
<a name="create-service-linked-role"></a>

您不需要手動建立 AWSServiceRoleForEMRCleanup 角色。當您第一次啟動叢集或 AWSServiceRoleForEMRCleanup 服務連結角色不存在時，Amazon EMR 會為您建立 AWSServiceRoleForEMRCleanup 服務連結角色。您必須具有建立服務連結角色的許可。如需將此功能新增至 IAM 實體 （例如使用者、群組或角色） 許可政策的範例陳述式：

將下列陳述式新增至需要建立服務連結角色之 IAM 實體的許可政策。

```
{
             "Sid": "ElasticMapReduceServiceLinkedRole",
             "Effect": "Allow",
             "Action": "iam:CreateServiceLinkedRole",
             "Resource": "arn:aws:iam::*:role/aws-service-role/elasticmapreduce.amazonaws.com*/AWSServiceRoleForEMRCleanup*",
             "Condition": {
                 "StringEquals": {
                     "iam:AWSServiceName": [
                         "elasticmapreduce.amazonaws.com",
                         "elasticmapreduce.amazonaws.com.rproxy.govskope.us.cn"
                     ]
                 }
             }
 }
```

**重要**  
如果您在 2017 年 10 月 24 日之前使用 Amazon EMR，當不支援服務連結角色時，Amazon EMR 會在您的帳戶中建立 AWSServiceRoleForEMRCleanup 服務連結角色。如需詳細資訊，請參閱[我的 IAM 帳戶中出現新角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared)。

## 編輯 Amazon EMR 的服務連結角色
<a name="edit-service-linked-role"></a>

Amazon EMR 不允許您編輯 AWSServiceRoleForEMRCleanup 服務連結角色。建立服務連結角色之後，您無法變更服務連結角色的名稱，因為各種實體可能會參考服務連結角色。不過，您可以使用 IAM 編輯服務連結角色的描述。

### 編輯服務連結角色說明 (IAM 主控台)
<a name="edit-service-linked-role-iam-console"></a>

您可以使用 IAM 主控台來編輯服務連結角色的說明。

**編輯服務連結角色的說明 (主控台)**

1. 在 IAM 主控台的導覽窗格中，選擇 **Roles** (角色)。

1. 選擇要修改之角色的名稱。

1. 在**角色描述**右側，選擇**編輯**。

1. 在方塊中輸入新說明，然後選擇 **Save changes** (儲存變更)。

### 編輯服務連結角色描述 (IAM CLI)
<a name="edit-service-linked-role-iam-cli"></a>

您可以使用 的 IAM 命令 AWS Command Line Interface 來編輯服務連結角色的描述。

**變更服務連結角色的說明 (CLI)**

1. (選用) 若要檢視角色的目前說明，請使用下列命令：

   ```
   $ aws iam get-role --role-name role-name
   ```

   透過 CLI 命令，使用角色名稱 (而非 ARN) 來參照角色。例如，如果角色具有下列 ARN：`arn:aws:iam::123456789012:role/myrole`，請將角色參照為 **myrole**。

1. 若要更新服務連結角色的說明，請使用下列其中一個命令：

   ```
   $ aws iam update-role-description --role-name role-name --description description
   ```

### 編輯服務連結角色說明 (IAM API)
<a name="edit-service-linked-role-iam-api"></a>

您可以使用 IAM API 來編輯服務連結角色的說明。

**變更服務連結角色的說明 (API)**

1. (選用) 若要檢視角色的目前說明，請使用下列命令：

   IAM API：[GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html) 

1. 若要更新角色的說明，請使用下列命令：

   IAM API：[UpdateRoleDescription](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRoleDescription.html)

## 刪除 Amazon EMR 的服務連結角色
<a name="delete-service-linked-role"></a>

如果您不再需要使用需要服務連結角色的功能或服務，我們建議您刪除該服務連結角色。如此一來，您就沒有未主動監控或維護的未使用實體。然而，務必清除您的服務連結角色，之後才能將其刪除。

### 清除服務連結角色
<a name="service-linked-role-review-before-delete"></a>

您必須先確認服務連結角色沒有作用中工作階段，並移除服務連結角色使用的任何資源，才能使用 IAM 刪除服務連結角色。

**檢查服務連結角色是否於 IAM 主控台有作用中的工作階段**

1. 在以下網址開啟 IAM 主控台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在導覽窗格中，選擇**角色**。選取 AWSServiceRoleForEMRCleanup 服務連結角色的名稱 （非核取方塊）。

1. 在所選服務連結角色的**摘要**頁面上，選擇 **Access Advisor**。

1. 在 **Access Advisor (存取 Advisor)** 標籤中，檢閱服務連結角色的近期活動。
**注意**  
如果您不確定 Amazon EMR 是否使用 AWSServiceRoleForEMRCleanup 服務連結角色，您可以嘗試刪除服務連結角色。如果服務使用服務連結角色，則刪除會失敗，而且您可以檢視使用服務連結角色的區域。如果正在使用服務連結角色，則必須等待工作階段結束，才能刪除服務連結角色。您無法撤銷服務連結角色的工作階段。

**移除 AWSServiceRoleForEMRCleanup 使用的 Amazon EMR 資源**
+ 終止您帳戶內的所有叢集。如需詳細資訊，請參閱[在啟動、執行或等待狀態下終止 Amazon EMR 叢集](UsingEMR_TerminateJobFlow.md)。

### 刪除服務連結角色 (IAM 主控台)
<a name="delete-service-linked-role-iam-console"></a>

您可以使用 IAM 主控台刪除服務連結角色。

**刪除服務連結角色 (主控台)**

1. 在以下網址開啟 IAM 主控台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在導覽窗格中，選擇**角色**。選取 AWSServiceRoleForEMRCleanup 旁邊的核取方塊，而非名稱或資料列本身。

1. 在頁面頂端的 **Role (角色)** 動作中選擇 **Delete (刪除)** 角色。

1. 在確認對話方塊中，檢閱服務上次存取的資料，其中顯示每個所選角色上次存取 AWS 服務的時間。這可協助您確認角色目前是否作用中。若要繼續，請選擇 **Yes, Delete (是，刪除)**。

1. 查看 IAM 主控台通知，監視服務連結角色刪除的進度。由於 IAM 服務連結角色刪除是非同步的，因此在您提交服務連結角色進行刪除之後，刪除任務可能會成功或失敗。如果任務失敗，您可以從通知中選擇 **View details (檢視詳細資訊)** 或 **View Resources (檢視資源)**，以了解刪除失敗的原因。如果刪除因角色使用服務中資源而失敗，則失敗原因會包含資源清單。

### 刪除服務連結角色 (IAM CLI)
<a name="delete-service-linked-role-iam-cli"></a>

您可以從 使用 IAM 命令 AWS Command Line Interface 來刪除服務連結角色。因為無法刪除正在使用或具有相關聯資源的服務連結角色，所以您必須提交刪除要求。如果不符合這些條件，則該要求可能遭拒。

**刪除服務連結角色 (CLI)**

1. 若要檢查刪除任務的狀態，您必須從回應中擷取 `deletion-task-id`。鍵入下列命令，以提交服務連結角色刪除要求：

   ```
   $ aws iam [delete-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-service-linked-role.html) --role-name AWSServiceRoleForEMRCleanup
   ```

1. 鍵入下列命令，以檢查刪除任務的狀態：

   ```
   $ aws iam [get-service-linked-role-deletion-status](https://docs.aws.amazon.com/cli/latest/reference/iam/get-service-linked-role-deletion-status.html) --deletion-task-id deletion-task-id
   ```

   刪除任務的狀態可以是 `NOT_STARTED`、`IN_PROGRESS`、`SUCCEEDED` 或 `FAILED`。如果刪除失敗，則呼叫會傳回失敗原因，以進行疑難排解。

### 刪除服務連結角色 (IAM API)
<a name="delete-service-linked-role-iam-api"></a>

您可以使用 IAM API 刪除服務連結角色。因為無法刪除正在使用或具有相關聯資源的服務連結角色，所以您必須提交刪除要求。如果不符合這些條件，則該要求可能遭拒。

**刪除服務連結角色 (API)**

1. 若要提交服務連結角色的刪除請求，請呼叫 [DeleteServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceLinkedRole.html)。在請求中，指定 AWSServiceRoleForEMRCleanup 角色名稱。

   若要檢查刪除任務的狀態，您必須從回應中擷取 `DeletionTaskId`。

1. 如需檢查刪除的狀態，請呼叫 [GetServiceLinkedRoleDeletionStatus](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServiceLinkedRoleDeletionStatus.html)。在請求中，指定 `DeletionTaskId`。

   刪除任務的狀態可以是 `NOT_STARTED`、`IN_PROGRESS`、`SUCCEEDED` 或 `FAILED`。如果刪除失敗，則呼叫會傳回失敗原因，以進行疑難排解。

## AWSServiceRoleForEMRCleanup 支援的 區域
<a name="emr-slr-regions"></a>

Amazon EMR 支援在下列區域中使用 AWSServiceRoleForEMRCleanup 服務連結角色。


****  

| 區域名稱 | 區域身分 | 在 Amazon EMR 中支援 | 
| --- | --- | --- | 
| 美國東部 (維吉尼亞北部) | us-east-1 | 是 | 
| 美國東部 (俄亥俄) | us-east-2 | 是 | 
| 美國西部 (加利佛尼亞北部) | us-west-1 | 是 | 
| 美國西部 (奧勒岡) | us-west-2 | 是 | 
| 亞太區域 (孟買) | ap-south-1 | 是 | 
| 亞太區域 (大阪) | ap-northeast-3 | 是 | 
| 亞太區域 (首爾) | ap-northeast-2 | 是 | 
| 亞太區域 (新加坡) | ap-southeast-1 | 是 | 
| 亞太區域 (雪梨) | ap-southeast-2 | 是 | 
| 亞太區域 (東京) | ap-northeast-1 | 是 | 
| 加拿大 (中部) | ca-central-1 | 是 | 
| 歐洲 (法蘭克福) | eu-central-1 | 是 | 
| 歐洲 (愛爾蘭) | eu-west-1 | 是 | 
| 歐洲 (倫敦) | eu-west-2 | 是 | 
| 歐洲 (巴黎) | eu-west-3 | 是 | 
| 南美洲 (聖保羅) | sa-east-1 | 是 | 

# 使用服務連結角色搭配 Amazon EMR 進行預先寫入記錄
<a name="using-service-linked-roles-wal"></a>

Amazon EMR 使用 AWS Identity and Access Management (IAM) [服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)。服務連結角色是直接連結至 Amazon EMR 的一種特殊 IAM 角色類型。服務連結角色是由 Amazon EMR 預先定義，並包含該服務代表您呼叫其他 AWS 服務所需的所有許可。

服務連結角色可與 Amazon EMR 服務角色和 Amazon EMR 的 Amazon EC2 執行個體描述檔搭配使用。如需服務角色和執行個體設定檔的詳細資訊，請參閱[設定服務和資源的 Amazon EMR 許可的 IAM AWS 服務角色](emr-iam-roles.md)。

服務連結角色可讓您更輕鬆地設定 Amazon EMR，因為您不必手動新增必要的許可。Amazon EMR 會定義其服務連結角色的許可，除非另有定義，否則只有 Amazon EMR 可以擔任其角色。定義的許可包括信任政策和許可政策，且該許可政策無法附加至其他 IAM 實體。

只有在刪除 Amazon EMR 的相關資源並終止帳戶中的所有 EMR 叢集之後，您才能刪除 Amazon EMR 的服務連結角色。這可保護您的 Amazon EMR 資源，讓您不會不小心移除存取資源的許可。

## 預先寫入記錄 (WAL) 的服務連結角色許可
<a name="using-service-linked-roles-permissions-wal"></a>

Amazon EMR 使用服務連結角色 **AWSServiceRoleForEMRWAL** 來擷取叢集狀態。

AWSServiceRoleForEMRWAL 服務連結角色信任下列服務擔任該角色：
+ `emrwal.amazonaws.com`

服務連結角色的[`EMRDescribeClusterPolicyForEMRWAL`](EMRDescribeClusterPolicyForEMRWAL.md)許可政策允許 Amazon EMR 對指定的資源完成下列動作：
+ 動作：`*` 上的 `DescribeCluster`

您必須設定許可，以允許 IAM 實體 （在此情況下為 Amazon EMR WAL) 建立、編輯或刪除服務連結角色。視需要將下列陳述式新增至執行個體描述檔的許可政策：

## CreateServiceLinkedRole
<a name="iam-create-wal"></a>

**允許 IAM 實體建立 AWSServiceRoleForEMRWAL 服務連結角色**

將下列陳述式新增至 IAM 實體建立服務連結角色所需的許可政策：

```
{
    "Effect": "Allow",
    "Action": [
        "iam:CreateServiceLinkedRole",
        "iam:PutRolePolicy"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/emrwal.amazonaws.com*/AWSServiceRoleForEMRWAL*",
    "Condition": {
        "StringLike": {
            "iam:AWSServiceName": [
                "emrwal.amazonaws.com",
                "elasticmapreduce.amazonaws.com.rproxy.govskope.us.cn"
            ]
        }
    }
}
```

## UpdateRoleDescription
<a name="iam-update-wal"></a>

**允許 IAM 實體編輯 AWSServiceRoleForEMRWAL 服務連結角色的描述**

將下列陳述式新增至 IAM 實體編輯服務連結角色描述所需的許可政策：

```
{
    "Effect": "Allow",
    "Action": [
        "iam:UpdateRoleDescription"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/emrwal.amazonaws.com*/AWSServiceRoleForEMRWAL*",
    "Condition": {
        "StringLike": {
            "iam:AWSServiceName": [
                "emrwal.amazonaws.com",
                "elasticmapreduce.amazonaws.com.rproxy.govskope.us.cn"
            ]
        }
    }
}
```

## DeleteServiceLinkedRole
<a name="iam-delete-wal"></a>

**允許 IAM 實體刪除 AWSServiceRoleForEMRWAL 服務連結角色**

將下列陳述式新增至 IAM 實體刪除服務連結角色所需的許可政策：

```
{
    "Effect": "Allow",
    "Action": [
        "iam:DeleteServiceLinkedRole",
        "iam:GetServiceLinkedRoleDeletionStatus"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/elasticmapreduce.amazonaws.com*/AWSServiceRoleForEMRCleanup*",
    "Condition": {
        "StringLike": {
            "iam:AWSServiceName": [
                "emrwal.amazonaws.com",
                "elasticmapreduce.amazonaws.com.rproxy.govskope.us.cn"
            ]
        }
    }
}
```

## 建立 Amazon EMR 的服務連結角色
<a name="create-service-linked-role-wal"></a>

您不需要手動建立 AWSServiceRoleForEMRWAL 角色。當您使用 EMRWAL CLI 或從中建立 WAL 工作區時，Amazon EMR 會自動建立此服務連結角色 AWS CloudFormation，或者當您為 Amazon EMR WAL 設定工作區且服務連結角色尚不存在時，HBase 會建立服務連結角色。您必須具有建立服務連結角色的許可。如需將此功能新增至 IAM 實體 （例如使用者、群組或角色） 許可政策的範例陳述式，請參閱上一節：[預先寫入記錄 (WAL) 的服務連結角色許可](#using-service-linked-roles-permissions-wal)。

## 編輯 Amazon EMR 的服務連結角色
<a name="edit-service-linked-role-wal"></a>

Amazon EMR 不允許您編輯 AWSServiceRoleForEMRWAL 服務連結角色。建立服務連結角色之後，您無法變更服務連結角色的名稱，因為各種實體可能會參考服務連結角色。不過，您可以使用 IAM 編輯服務連結角色的描述。

### 編輯服務連結角色說明 (IAM 主控台)
<a name="edit-service-linked-role-iam-console"></a>

您可以使用 IAM 主控台來編輯服務連結角色的說明。

**編輯服務連結角色的說明 (主控台)**

1. 在 IAM 主控台的導覽窗格中，選擇 **Roles** (角色)。

1. 選擇要修改之角色的名稱。

1. 在**角色描述**右側，選擇**編輯**。

1. 在方塊中輸入新說明，然後選擇 **Save changes** (儲存變更)。

### 編輯服務連結角色描述 (IAM CLI)
<a name="edit-service-linked-role-iam-cli"></a>

您可以使用 的 IAM 命令 AWS Command Line Interface 來編輯服務連結角色的描述。

**變更服務連結角色的說明 (CLI)**

1. (選用) 若要檢視角色的目前說明，請使用下列命令：

   ```
   $ aws iam get-role --role-name role-name
   ```

   透過 CLI 命令，使用角色名稱 (而非 ARN) 來參照角色。例如，如果角色具有下列 ARN：`arn:aws:iam::123456789012:role/myrole`，請將角色參照為 **myrole**。

1. 若要更新服務連結角色的說明，請使用下列其中一個命令：

   ```
   $ aws iam update-role-description --role-name role-name --description description
   ```

### 編輯服務連結角色說明 (IAM API)
<a name="edit-service-linked-role-iam-api"></a>

您可以使用 IAM API 來編輯服務連結角色的說明。

**變更服務連結角色的說明 (API)**

1. (選用) 若要檢視角色的目前說明，請使用下列命令：

   IAM API：[GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html) 

1. 若要更新角色的說明，請使用下列命令：

   IAM API：[UpdateRoleDescription](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRoleDescription.html)

## 刪除 Amazon EMR 的服務連結角色
<a name="delete-service-linked-role-wal"></a>

如果您不再需要使用需要服務連結角色的功能或服務，我們建議您刪除該服務連結角色。如此一來，您就沒有未主動監控或維護的未使用實體。然而，務必清除您的服務連結角色，之後才能將其刪除。

**注意**  
如果您刪除 AWSServiceRoleForEMRWAL 角色，預先寫入記錄操作不會受到影響，但一旦 EMR 叢集終止，Amazon EMR 就不會自動刪除其建立的日誌。因此，如果您刪除服務連結角色，則需要手動刪除 Amazon EMR WAL 日誌。

### 清除服務連結角色
<a name="service-linked-role-review-before-delete"></a>

您必須先確認服務連結角色沒有作用中的工作階段，並移除該角色使用的資源，之後才能使用 IAM 將其刪除。

**檢查服務連結角色是否於 IAM 主控台有作用中的工作階段**

1. 在以下網址開啟 IAM 主控台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在導覽窗格中，選擇**角色**。選取 AWSServiceRoleForEMRWAL 角色的名稱 （非核取方塊）。

1. 在所選角色的 **Summary (摘要)** 頁面中，選擇 **Access Advisor (存取 Advisor)**。

1. 在 **Access Advisor (存取 Advisor)** 標籤中，檢閱服務連結角色的近期活動。
**注意**  
如果您不確定 Amazon EMR 是否使用 AWSServiceRoleForEMRWAL 角色，您可以嘗試刪除服務連結角色。如果服務使用 角色，則刪除會失敗，而且您可以檢視使用服務連結角色的區域。如果正在使用服務連結角色，則必須等待工作階段結束，才能刪除服務連結角色。您無法撤銷服務連結角色的工作階段。

**移除 AWSServiceRoleForEMRWAL 使用的 Amazon EMR 資源**
+ 終止您帳戶內的所有叢集。如需詳細資訊，請參閱[在啟動、執行或等待狀態下終止 Amazon EMR 叢集](UsingEMR_TerminateJobFlow.md)。

### 刪除服務連結角色 (IAM 主控台)
<a name="delete-service-linked-role-iam-console"></a>

您可以使用 IAM 主控台刪除服務連結角色。

**刪除服務連結角色 (主控台)**

1. 在以下網址開啟 IAM 主控台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在導覽窗格中，選擇**角色**。選取 AWSServiceRoleForEMRWAL 旁的核取方塊，而非名稱或資料列本身。

1. 在頁面頂端的 **Role (角色)** 動作中選擇 **Delete (刪除)** 角色。

1. 在確認對話方塊中，檢閱服務上次存取的資料，其中顯示每個所選角色上次存取 AWS 服務的時間。這可協助您確認角色目前是否作用中。若要繼續，請選擇 **Yes, Delete (是，刪除)**。

1. 查看 IAM 主控台通知，監視服務連結角色刪除的進度。因為 IAM 服務連結角色刪除不同步，所以在您提交角色進行刪除之後，刪除任務可能會成功或失敗。如果任務失敗，您可以從通知中選擇 **View details (檢視詳細資訊)** 或 **View Resources (檢視資源)**，以了解刪除失敗的原因。如果刪除因角色使用服務中資源而失敗，則失敗原因會包含資源清單。

### 刪除服務連結角色 (IAM CLI)
<a name="delete-service-linked-role-iam-cli"></a>

您可以從 使用 IAM 命令 AWS Command Line Interface 來刪除服務連結角色。因為無法刪除正在使用或具有相關聯資源的服務連結角色，所以您必須提交刪除要求。如果不符合這些條件，則該要求可能遭拒。

**刪除服務連結角色 (CLI)**

1. 若要檢查刪除任務的狀態，您必須從回應中擷取 `deletion-task-id`。鍵入下列命令，以提交服務連結角色刪除要求：

   ```
   $ aws iam [delete-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-service-linked-role.html) --role-name AWSServiceRoleForEMRWAL
   ```

1. 鍵入下列命令，以檢查刪除任務的狀態：

   ```
   $ aws iam [get-service-linked-role-deletion-status](https://docs.aws.amazon.com/cli/latest/reference/iam/get-service-linked-role-deletion-status.html) --deletion-task-id deletion-task-id
   ```

   刪除任務的狀態可以是 `NOT_STARTED`、`IN_PROGRESS`、`SUCCEEDED` 或 `FAILED`。如果刪除失敗，則呼叫會傳回失敗原因，以進行疑難排解。

### 刪除服務連結角色 (IAM API)
<a name="delete-service-linked-role-iam-api"></a>

您可以使用 IAM API 刪除服務連結角色。因為無法刪除正在使用或具有相關聯資源的服務連結角色，所以您必須提交刪除要求。如果不符合這些條件，則該要求可能遭拒。

**刪除服務連結角色 (API)**

1. 若要提交服務連結角色的刪除請求，請呼叫 [DeleteServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceLinkedRole.html)。在請求中，指定 AWSServiceRoleForEMRWAL 角色名稱。

   若要檢查刪除任務的狀態，您必須從回應中擷取 `DeletionTaskId`。

1. 如需檢查刪除的狀態，請呼叫 [GetServiceLinkedRoleDeletionStatus](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServiceLinkedRoleDeletionStatus.html)。在請求中，指定 `DeletionTaskId`。

   刪除任務的狀態可以是 `NOT_STARTED`、`IN_PROGRESS`、`SUCCEEDED` 或 `FAILED`。如果刪除失敗，則呼叫會傳回失敗原因，以進行疑難排解。

## AWSServiceRoleForEMRWAL 支援的 區域
<a name="emr-slr-regions-wal"></a>

Amazon EMR 支援在下列區域中使用 AWSServiceRoleForEMRWAL 服務連結角色。


****  

| 區域名稱 | 區域身分 | 在 Amazon EMR 中支援 | 
| --- | --- | --- | 
| 美國東部 (維吉尼亞北部) | us-east-1 | 是 | 
| 美國東部 (俄亥俄) | us-east-2 | 是 | 
| 美國西部 (加利佛尼亞北部) | us-west-1 | 是 | 
| 美國西部 (奧勒岡) | us-west-2 | 是 | 
| 亞太區域 (孟買) | ap-south-1 | 是 | 
| 亞太區域 (新加坡) | ap-southeast-1 | 是 | 
| 亞太區域 (雪梨) | ap-southeast-2 | 是 | 
| 亞太區域 (東京) | ap-northeast-1 | 是 | 
| 歐洲 (法蘭克福) | eu-central-1 | 是 | 
| 歐洲 (愛爾蘭) | eu-west-1 | 是 | 

# 使用 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
```

# 設定向 Amazon S3 請求使用 EMRFS 的 IAM 角色
<a name="emr-emrfs-iam-roles"></a>

**注意**  
在 Amazon EMR 6.15.0 中引入 Amazon S3 Access Grants 後，本頁所述的 EMRFS 角色映射功能便已獲得改善。針對 Amazon S3 中資料的可擴展存取控制解決方案，建議您將 [S3 Access Grants 與 Amazon EMR 搭配使用](emr-access-grants.md)。

當叢集上執行的應用程式參考使用 `s3://mydata` 格式的資料時，Amazon EMR 將使用 EMRFS 發出請求。若要與 Amazon S3 互動，EMRFS 會假設附接至您的 [Amazon EC2 執行個體設定檔](emr-iam-role-for-ec2.md)的許可政策。無論執行應用程式的使用者或群組，或 Amazon S3 中資料的位置為何，都使用相同 Amazon EC2 執行個體設定檔。

如果您的叢集有多個使用者，他們需要透過 EMRFS 對 Amazon S3 中的資料有不同層級的存取，您可以設定含 EMRFS 的 IAM 角色的安全組態。EMRFS 可以根據發出請求的使用者或群組或是根據 Amazon S3 中資料的位置擔任叢集 EC2 執行個體的不同服務角色。針對存取 Amazon S3 中的資料，EMRFS 的每個 IAM 角色可以擁有不同的許可。如需有關叢集 EC2 執行個體的服務角色的詳細資訊，請參閱 [叢集 EC2 執行個體的服務角色 (EC2 執行個體設定檔)](emr-iam-role-for-ec2.md)。

Amazon EMR 5.10.0 版及更新版本支援針對 EMRFS 使用自訂 IAM 角色。如果您使用較早版本或您的需求超出 EMRFS 的 IAM 角色提供的範圍，可以改為建立自訂憑證提供者。如需詳細資訊，請參閱[授權存取 Amazon S3 中的 EMRFS 資料](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-plan-credentialsprovider)。

在使用安全組態來指定 EMRFS 的 IAM 角色時，設定角色映射。每個角色映射指定對應至識別符的 IAM 角色。這些識別符決定透過 EMRFS 存取 Amazon S3 的基礎。識別符可以是使用者、群組或顯示資料位置的 Amazon S3 字首。當 EMRFS 向 Amazon S3 發出請求時，如果請求符合存取基準，EMRFS 便可讓叢集 EC2 執行個體擔任請求的對應 IAM 角色。附接至該角色的 IAM 許可，而不是附接至叢集 EC2 執行個體服務角色的 IAM 許可。

角色映射中的使用者和群組是叢集上定義的 Hadoop 使用者和群組。在應用程式使用 EMRFS 的情況下，使用者和群組會傳送給 EMRFS (例如，YARN 使用者模擬)。Amazon S3 字首可以是任何深度的儲存貯體指標 (例如，`s3://amzn-s3-demo-bucket` 或 `s3://amzn-s3-demo-bucket/myproject/mydata`)。您可以在單一角色映射中指定多個識別符，但識別符必須全部都是相同的類型。

**重要**  
EMRFS 的 IAM 角色在應用程式使用者之間提供應用程式層級隔離。它不提供主機上使用者之間的主機層級隔離。任何有權存取叢集的使用者，都可以略過隔離以承擔任何角色。

叢集應用程式透過 EMRFS 向 Amazon S3 提出請求時，EMRFS 會依角色映射出現在安全組態中的順序，由上而下進行評估。如果透過 EMRFS 提出的請求不符合任何識別符，EMRFS 會回退至使用叢集 EC2 執行個體的服務角色。因此，建議附接至此角色的政策限制對 Amazon S3 的許可。如需詳細資訊，請參閱[叢集 EC2 執行個體的服務角色 (EC2 執行個體設定檔)](emr-iam-role-for-ec2.md)。

## 設定角色
<a name="emr-emrfs-iam-roles-role-configuration"></a>

使用 EMRFS 的 IAM 角色設定安全組態前，請規劃並建立角色和要附接至角色的許可政策。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [EC2 執行個體的角色如何運作？](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)。建立許可政策時，建議您從附接至 EC2 預設 Amazon EMR 角色的受管政策開始，接著根據您的需求編輯此政策。預設角色名稱是 `EMR_EC2_DefaultRole`，而要編輯的預設受管政策是 `AmazonElasticMapReduceforEC2Role`。如需詳細資訊，請參閱[叢集 EC2 執行個體的服務角色 (EC2 執行個體設定檔)](emr-iam-role-for-ec2.md)。

### 更新承擔角色許可的信任政策
<a name="emr-emrfs-iam-role-trust-policy"></a>

EMRFS 使用的每個角色都必須擁有信任政策，以允許 EC2 的叢集 Amazon EMR 角色來擔任此角色。同樣地，EC2 的叢集 Amazon EMR 角色也必須擁有信任政策，以允許 EMRFS 角色來擔任此角色。

以下範例信任政策連接到 EMRFS 的角色。陳述式允許 EC2 的預設 Amazon EMR 角色擔任此角色。例如，如果您有兩個虛構的 EMRFS 角色：`EMRFSRole_First` 和 `EMRFSRole_Second`，此政策陳述式會新增到這兩個角色的信任政策。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole"
      ],
      "Resource": "arn:aws:iam::123456789012:role/EMR_EC2_DefaultRole",
      "Sid": "AllowSTSAssumerole"
    }
  ]
}
```

------

此外，以下範例信任政策陳述式新增到 `EMR_EC2_DefaultRole` 以允許兩個虛構的 EMRFS 角色擔任此角色。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/EMRFSRole_First",
        "arn:aws:iam::123456789012:role/EMRFSRole_Second"
      ],
      "Sid": "AllowSTSAssumerole"
    }
  ]
}
```

------

**更新 IAM 角色的信任政策**

前往 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 選擇 **Roles (角色)**、在 **Search (搜尋)** 中輸入角色的名稱，然後選取它的 **Role name (角色名稱)**。

1. 選擇 **Trust relationships (信任關係)**、**Edit trust relationship (編輯信任關係)**。

1. 依照上述指導方針，根據**政策文件**新增信任陳述式，然後選擇**更新信任政策**。

### 將角色指定為金鑰使用者
<a name="emr-emrfs-iam-role-key-user"></a>

如果角色允許存取 Amazon S3 中的位置，而此位置已使用 AWS KMS key加密，請確定已將該角色指定為金鑰使用者。這會授予角色使用 KMS 金鑰的許可。如需詳細資訊，請參閱*《AWS Key Management Service 開發人員指南》*中的[在 AWS KMS中使用金鑰政策](https://docs.aws.amazon.com//kms/latest/developerguide/key-policies.html#key-policy-default-allow-users)。

## 使用 EMRFS 的 IAM 角色設定安全組態
<a name="emr-emrfs-iam-roles-setup"></a>

**重要**  
如果您指定 EMRFS 的 IAM 角色皆不套用，EMRFS 會回退至 EC2 的 Amazon EMR 角色。請考慮自訂此角色，來為您的應用程式適當地限制對 Amazon S3 的許可，然後在建立叢集時指定此自訂角色，而非指定 `EMR_EC2_DefaultRole`。如需詳細資訊，請參閱[使用 Amazon EMR 自訂 IAM 角色](emr-iam-roles-custom.md)及[建立叢集時指定自訂 IAM 角色](emr-iam-roles-custom.md#emr-iam-roles-launch-jobflow)。

**使用主控台指定向 Amazon S3 請求使用 EMRFS 的 IAM 角色**

1. 建立指定角色映射的安全組態：

   1. 在 Amazon EMR 主控台中，選取**安全組態**和**建立**。

   1. 輸入安全組態的 **Name (名稱)**。您建立叢集時會使用此名稱來指定安全組態。

   1. 選擇**向 Amazon S3 請求使用 EMRFS 的 IAM 角色**。

   1. 選取要套用的 **IAM 角色)**，然後在**存取的基準**下，從清單中選取識別符類型 (**使用者**、**群組**或 **S3 字首**)，並輸入對應的識別符。如果您使用多個識別符，以逗號和不含空格的方式分隔識別符。如需每個識別符類型的詳細資訊，請參閱下面的「[JSON configuration reference](#emrfs-seccfg-json)」。

   1. 選擇 **Add role (新增角色)**，來設定如先前步驟中所述的額外角色對應。

   1. 適當地設定其他的安全組態選項，然後選擇 **Create (建立)**。如需詳細資訊，請參閱[使用 Amazon EMR 主控台或使用 建立安全組態 AWS CLI](emr-create-security-configuration.md)。

1. 建立叢集時指定您在上面建立的安全組態。如需詳細資訊，請參閱[指定 Amazon EMR 叢集的安全組態](emr-specify-security-configuration.md)。

**使用 為 Amazon S3 的 EMRFS 請求指定 IAM 角色 AWS CLI**

1. 使用 `aws emr create-security-configuration` 命令，指定安全組態的名稱，以及採用 JSON 格式的安全組態詳細資訊。

   以下所示範例命令建立名稱為 `EMRFS_Roles_Security_Configuration` 的安全組態。這是以 `MyEmrfsSecConfig.json` 檔案中的 JSON 結構為基礎，其儲存在與命令執行的相同目錄中。

   ```
   aws emr create-security-configuration --name EMRFS_Roles_Security_Configuration --security-configuration file://MyEmrFsSecConfig.json.
   ```

   使用下列針對 `MyEmrFsSecConfig.json` 檔案結構的指導方針。您可以指定此結構以及其他安全組態選項的結構。如需詳細資訊，請參閱[使用 Amazon EMR 主控台或使用 建立安全組態 AWS CLI](emr-create-security-configuration.md)。

   以下是 JSON 程式碼片段範例，用於在安全組態內為 EMRFS 指定自訂 IAM 角色。它示範了三種不同標識符類型的角色映射，後接參數參考。

   ```
   {
     "AuthorizationConfiguration": {
       "EmrFsConfiguration": {
         "RoleMappings": [{
           "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_for_user1",
           "IdentifierType": "User",
           "Identifiers": [ "user1" ]
         },{
           "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_to_demo_s3_buckets",
           "IdentifierType": "Prefix",
           "Identifiers": [ "s3://amzn-s3-demo-bucket1/","s3://amzn-s3-demo-bucket2/" ]
         },{
           "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_for_AdminGroup",
           "IdentifierType": "Group",
           "Identifiers": [ "AdminGroup" ]
         }]
       }
     }
   }
   ```    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-emrfs-iam-roles.html)

1. 使用 `aws emr create-cluster` 命令來建立叢集並指定您在上一個步驟建立的安全組態。

   以下範例在安裝預設核心 Hadoop 應用程式下建立叢集。該叢集會使用上面建立為 `EMRFS_Roles_Security_Configuration` 的安全組態，也會使用 EC2 的自訂 Amazon EMR 角色 `EC2_Role_EMR_Restrict_S3`，這個角色是透過 `--ec2-attributes` 參數的 `InstanceProfile` 引數所指定。
**注意**  
包含 Linux 行接續字元 (\$1) 是為了提高可讀性。它們可以在 Linux 命令中移除或使用。對於 Windows，請將其移除或取代為插入符號 (^)。

   ```
   aws emr create-cluster --name MyEmrFsS3RolesCluster \
   --release-label emr-7.12.0 --ec2-attributes InstanceProfile=EC2_Role_EMR_Restrict_S3,KeyName=MyKey \
   --instance-type m5.xlarge --instance-count 3 \
   --security-configuration EMRFS_Roles_Security_Configuration
   ```

# 使用資源型政策來存取 AWS Glue Data Catalog
<a name="emr-iam-roles-glue"></a>

如果您在 AWS Amazon EMR 中使用 Glue 搭配 Hive、Spark 或 Presto， AWS Glue 支援以資源為基礎的政策來控制對 Data Catalog 資源的存取。這些資源包含資料庫、資料表、連線和使用者定義的函數。如需詳細資訊，請參閱《AWS Glue 開發人員指南》**中的 [AWS Glue 資源政策](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html)。

使用資源型政策限制從 Amazon EMR 內存取 AWS Glue 時，您在許可政策中指定的委託人必須是與建立叢集時指定的 EC2 執行個體描述檔相關聯的角色 ARN。例如，對於附接至型錄的資源型政策，您可以使用下列範例所示的格式，將叢集 EC2 執行個體的預設服務角色的角色 ARN (*EMR\$1EC2\$1DefaultRole*) 指定為 `Principal`：

```
arn:aws:iam::acct-id:role/EMR_EC2_DefaultRole
```

*acct-id* 可以與 Glue AWS 帳戶 ID 不同。這可讓您從不同帳戶中的 EMR 叢集進行存取。您可以指定多個主體，每個主體都來自不同的帳戶。

# 將 IAM 角色與直接呼叫 AWS 服務的應用程式搭配使用
<a name="emr-iam-roles-calling"></a>

在叢集的 EC2 執行個體上執行的應用程式可以使用 EC2 執行個體描述檔，在呼叫 AWS 服務時取得臨時安全登入資料。

可與 Amazon EMR 2.3.0 版及更新版本搭配使用的 Hadoop 版本已更新為可使用 IAM 角色。如果您的應用程式在 Hadoop 架構上嚴格執行，且未直接呼叫任何 服務 AWS，則應該使用 IAM 角色而不進行任何修改。

如果您的應用程式 AWS 直接在 中呼叫 服務，您需要更新它以利用 IAM 角色。這表示，與其在叢集中 EC2 執行個體上透過 `/etc/hadoop/conf/core-site.xml` 取得帳戶憑證，應用程式現在會使用 SDK 來使用 IAM 角色存取資源，或是呼叫 EC2 執行個體中繼資料，以取得暫時憑證。

**使用 SDK 存取具有 IAM 角色 AWS 的資源**
+ 下列主題說明如何使用數個 AWS SDKs 來存取使用 IAM 角色的臨時登入資料。每個主題以應用程式的版本開始 (該應用程式不會使用 IAM 角色)，然後逐步引導您將該應用程式轉換為使用 IAM 角色的程序。
  +  《適用於 Java 的 AWS SDK 開發人員指南》**中的[將 Amazon EC2 執行個體的 IAM 角色 與適用於 Java 的 SDK 搭配使用](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java-dg-roles.html) 
  +  《適用於 .NET 的 AWS SDK 開發人員指南》**中的[將 Amazon EC2 執行個體的 IAM 角色 與適用於 .NET 的 SDK 搭配使用](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-roles.html) 
  +  《適用於 PHP 的 AWS SDK 開發人員指南》**中的[將 Amazon EC2 執行個體的 IAM 角色 與適用於 PHP 的 SDK 搭配使用](https://docs.aws.amazon.com/sdk-for-php/latest/developer-guide/php-dg-roles.html) 
  +  《適用於 Ruby 的 AWS SDK 開發人員指南》**中的[將 Amazon EC2 執行個體的 IAM 角色 與適用於 PHP 的 SDK 搭配使用](https://docs.aws.amazon.com/sdk-for-ruby/latest/developer-guide/ruby-dg-roles.html) 

**若要從 EC2 執行個體中繼資料取得臨時登入資料**
+ 從使用指定 IAM 角色執行的 EC2 執行個體中呼叫下列 URL，會傳回關聯的暫時安全憑證 (AccessKeyId、SecretAccessKey、SessionToken 和 Expiration)。下列範例使用 Amazon EMR 的預設執行個體設定檔 `EMR_EC2_DefaultRole`。

  ```
  GET http://169.254.169.254/latest/meta-data/iam/security-credentials/EMR_EC2_DefaultRole
  ```

如需撰寫使用 IAM 角色的應用程式的詳細資訊，請參閱[授予在 Amazon EC2 執行個體上執行的應用程式存取 AWS 資源](https://docs.aws.amazon.com/IAM/latest/UserGuide/role-usecase-ec2app.html)。

如需有關暫時安全憑證的詳細資訊，請參閱《使用暫時安全憑證》**指南中的[使用暫時安全憑證](https://docs.aws.amazon.com/STS/latest/UsingSTS/using-temp-creds.html)。

# 允許使用者和群組以建立和修改角色
<a name="emr-iam-roles-create-permissions"></a>

必須允許建立、修改和指定叢集角色 (包括預設角色) 的 IAM 主體 (使用者和群組) 執行下列動作。如需有關每個動作的詳細資訊，請參閱《IAM API 參考》**中的[動作](https://docs.aws.amazon.com/IAM/latest/APIReference/API_Operations.html)。
+ `iam:CreateRole`
+ `iam:PutRolePolicy`
+ `iam:CreateInstanceProfile`
+ `iam:AddRoleToInstanceProfile`
+ `iam:ListRoles`
+ `iam:GetPolicy`
+ `iam:GetInstanceProfile`
+ `iam:GetPolicyVersion`
+ `iam:AttachRolePolicy`
+ `iam:PassRole`

`iam:PassRole` 許可會允許叢集建立。剩餘的許可允許預設角色的建立。

如需有關將許可指派給使用者的詳細資訊，請參閱《IAM 使用者指南》**中的[變更使用者的許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html)。