

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

# 使用服務連結角色搭配 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.ca.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.ca.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.ca.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 | 是 | 