

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

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

MemoryDB 使用 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)。服務連結角色是直接連結至 AWS 服務的唯一 IAM 角色類型，例如 MemoryDB。MemoryDB 服務連結角色是由 MemoryDB 預先定義。此角色包含服務需要的所有許可，以代您來呼叫其他的 AWS 服務。

服務連結角色可讓您更輕鬆地設定 MemoryDB，因為您不必手動新增必要的許可。這些角色已存在於您的帳戶中， AWS 但會連結至 MemoryDB 使用案例，並具有預先定義的許可。只有 MemoryDB 可以擔任這些角色，而且只有這些角色可以使用預先定義的許可政策。您必須先刪除角色的相關資源，才能刪除角色。這可保護您的 MemoryDB 資源，因為您不會不小心移除存取資源的必要許可。

如需關於支援服務連結角色的其他服務的資訊，請參閱[可搭配 IAM 運作的AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)，並尋找 **Service-Linked Role** (服務連結角色) 欄顯示為 **Yes** (是) 的服務。選擇具有連結的**是**，以檢視該服務的服務連結角色文件。

**Contents**
+ [服務連結角色許可](#service-linked-role-permissions)
+ [建立服務連結角色 (IAM)](#create-service-linked-role-iam)
  + [使用 IAM 主控台](#create-service-linked-role-iam-console)
  + [使用 IAM CLI](#create-service-linked-role-iam-cli)
  + [使用 IAM API](#create-service-linked-role-iam-api)
+ [編輯服務連結角色描述](#edit-service-linked-role)
  + [使用 IAM 主控台](#edit-service-linked-role-iam-console)
  + [使用 IAM CLI](#edit-service-linked-role-iam-cli)
  + [使用 IAM API](#edit-service-linked-role-iam-api)
+ [刪除 MemoryDB 的服務連結角色](#delete-service-linked-role)
  + [清除服務連結角色](#service-linked-role-review-before-delete)
  + [刪除服務連結角色 (IAM 主控台)](#delete-service-linked-role-iam-console)
  + [刪除服務連結角色 (IAM CLI)](#delete-service-linked-role-iam-cli)
  + [刪除服務連結角色 (IAM API)](#delete-service-linked-role-iam-api)

## MemoryDB 的服務連結角色許可
<a name="service-linked-role-permissions"></a>

MemoryDB 使用名為 **AWSServiceRoleForMemoryDB** 的服務連結角色 – 此政策允許 MemoryDB 視需要代表您管理 AWS 資源，以管理您的叢集。

AWSServiceRoleForMemoryDB 服務連結角色許可政策允許 MemoryDB 對指定的資源完成下列動作：

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

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"ec2:CreateTags"
			],
			"Resource": "arn:aws-cn:ec2:*:*:network-interface/*",
			"Condition": {
				"StringEquals": {
					"ec2:CreateAction": "CreateNetworkInterface"
				},
				"ForAllValues:StringEquals": {
					"aws:TagKeys": [
						"AmazonMemoryDBManaged"
					]
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"ec2:CreateNetworkInterface"
			],
			"Resource": [
				"arn:aws-cn:ec2:*:*:network-interface/*",
				"arn:aws-cn:ec2:*:*:subnet/*",
				"arn:aws-cn:ec2:*:*:security-group/*"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"ec2:DeleteNetworkInterface",
				"ec2:ModifyNetworkInterfaceAttribute"
			],
			"Resource": "arn:aws-cn:ec2:*:*:network-interface/*",
			"Condition": {
				"StringEquals": {
					"ec2:ResourceTag/AmazonMemoryDBManaged": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"ec2:DeleteNetworkInterface",
				"ec2:ModifyNetworkInterfaceAttribute"
			],
			"Resource": "arn:aws-cn:ec2:*:*:security-group/*"
		},
		{
			"Effect": "Allow",
			"Action": [
				"ec2:DescribeSecurityGroups",
				"ec2:DescribeNetworkInterfaces",
				"ec2:DescribeAvailabilityZones",
				"ec2:DescribeSubnets",
				"ec2:DescribeVpcs"
			],
			"Resource": "*"
		},
		{
			"Effect": "Allow",
			"Action": [
				"cloudwatch:PutMetricData"
			],
			"Resource": "*",
			"Condition": {
				"StringEquals": {
					"cloudwatch:namespace": "AWS/MemoryDB"
				}
			}
		}
	]
}
```

------

如需詳細資訊，請參閱[AWS 受管政策：MemoryDBServiceRolePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-memorydbServiceRolePolicy)。

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

將以下政策陳述式新增到該 IAM 實體的許可中：

```
{
    "Effect": "Allow",
    "Action": [
        "iam:CreateServiceLinkedRole",
        "iam:PutRolePolicy"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/memorydb.amazonaws.com/AWSServiceRoleForMemoryDB*",
    "Condition": {"StringLike": {"iam:AWS ServiceName": "memorydb.amazonaws.com"}}
}
```

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

將以下政策陳述式新增到該 IAM 實體的許可中：

```
{
    "Effect": "Allow",
    "Action": [
        "iam:DeleteServiceLinkedRole",
        "iam:GetServiceLinkedRoleDeletionStatus"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/memorydb.amazonaws.com/AWSServiceRoleForMemoryDB*",
    "Condition": {"StringLike": {"iam:AWS ServiceName": "memorydb.amazonaws.com"}}
}
```

或者，您可以使用 AWS 受管政策來提供 MemoryDB 的完整存取權。

## 建立服務連結角色 (IAM)
<a name="create-service-linked-role-iam"></a>

您可以使用 IAM 主控台、CLI 或 API 建立服務連結角色。

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

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

**建立服務連結角色 (主控台)**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在 IAM 主控台的左側導覽窗格中，選擇**角色**。然後選擇 **Create new role (建立新角色)**。

1. 在 **Select type of trusted entity (選擇可信任的實體類型)** 下，選擇 **AWS Service (AWS 服務)**。

1. 在 **或選取要檢視其使用案例的服務**下，選擇 **MemoryDB**。

1. 選擇**下一步：許可**。

1. 在 **Policy name (政策名稱)**，請注意 `MemoryDBServiceRolePolicy` 是此角色的必要項目。選擇 **Next: Add Tags (下一步：新增標籤)**。

1. 請注意，服務連結的角色不支援標籤。選擇 **Next:Review (下一步：檢閱)**。

1. (選擇性) 針對 **Role description (角色描述)**，編輯新服務連結角色的描述。

1. 檢閱角色，然後選擇 **Create role (建立角色)**。

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

您可以從 使用 IAM 操作 AWS Command Line Interface 來建立服務連結角色。此角色可包含服務擔任該角色所需的信任政策與內嵌政策。

**建立服務連結角色 (CLI)**

使用以下操作：

```
$ aws iam [create-service-linked-role](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html) --aws-service-name memorydb.amazonaws.com
```

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

您可以使用 IAM API 建立服務連結角色。此角色可包含服務擔任該角色所需的信任政策與內嵌政策。

**建立服務連結角色 (API)**

使用 [CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html) API 呼叫。在請求中指定 `memorydb.amazonaws.com` 的服務名稱。

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

MemoryDB 不允許您編輯 AWSServiceRoleForMemoryDB 服務連結角色。因為有各種實體可能會參考服務連結角色，所以您無法在建立角色之後變更角色名稱。然而，您可使用 IAM 來編輯角色描述。

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

您可以使用 IAM 主控台來編輯服務連結角色描述。

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

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

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

1. 在 **Role description** (角色說明) 的最右邊，選擇 **Edit** (編輯)。

1. 在方塊中輸入新的描述，然後選擇 **Save (儲存)**。

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

您可以從 使用 IAM 操作 AWS Command Line Interface 來編輯服務連結角色描述。

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

1. （選用） 若要檢視角色的目前描述，請使用適用於 IAM 操作 AWS CLI 的 `[get-role](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html)`。  
**Example**  

   ```
   $ aws iam [get-role](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html) --role-name AWSServiceRoleForMemoryDB
   ```

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

1. 若要更新服務連結角色的描述，請使用適用於 IAM 操作 AWS CLI 的 `[update-role-description](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRoleDescription.html)`。

   針對 Linux、macOS 或 Unix：

   ```
   $ aws iam [update-role-description](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRoleDescription.html) \
       --role-name AWSServiceRoleForMemoryDB \
       --description "new description"
   ```

   針對 Windows：

   ```
   $ aws iam [update-role-description](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRoleDescription.html) ^
       --role-name AWSServiceRoleForMemoryDB ^
       --description "new 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)。  
**Example**  

   ```
   https://iam.amazonaws.com/
      ?Action=[GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html)
      &RoleName=AWSServiceRoleForMemoryDB
      &Version=2010-05-08
      &AUTHPARAMS
   ```

1. 若要更新角色的描述，請使用 IAM API 操作 [UpdateRoleDescription](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRoleDescription.html)。  
**Example**  

   ```
   https://iam.amazonaws.com/
      ?Action=[UpdateRoleDescription](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRoleDescription.html)
      &RoleName=AWSServiceRoleForMemoryDB
      &Version=2010-05-08
      &Description="New description"
   ```

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

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

MemoryDB 不會為您刪除服務連結角色。

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

在您使用 IAM 刪除服務連結角色之前，請先確認角色沒有與其相關聯的資源 （叢集）。

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

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在 IAM 主控台的左側導覽窗格中，選擇**角色**。然後選擇 AWSServiceRoleForMemoryDB 角色的名稱 （非核取方塊）。

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

1. 在 **Access Advisor (存取 Advisor)** 分頁中，檢閱服務連結角色的近期活動。

**刪除需要 AWSServiceRoleForMemoryDB （主控台） 的 MemoryDB 資源 AWSServiceRoleForMemoryDB**
+ 若要刪除叢集，請參閱下列指示：
  + [使用 AWS 管理主控台](getting-started.md#clusters.deleteclusters.viewdetails)
  + [使用 AWS CLI](getting-started.md#clusters.delete.cli)
  + [使用 MemoryDB API](getting-started.md#clusters.delete.api)

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

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

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

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在 IAM 主控台的左側導覽窗格中，選擇**角色**。然後，選擇您要刪除的角色名稱旁的核取方塊，而非名稱或資料列本身。

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. 如果您不知道想要刪除的服務連結角色名稱，請輸入以下命令。此命令會列出您的帳戶中的角色及其 Amazon 資源名稱 (ARN)。

   ```
   $ aws iam [get-role](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html) --role-name role-name
   ```

   透過 CLI 操作，使用角色名稱 (而非 ARN) 來參照角色。例如，如果角色的 ARN 為 `arn:aws:iam::123456789012:role/myrole`，參考這個角色時就需使用 **myrole**。

1. 因為無法刪除正在使用或具有相關聯資源的服務連結角色，所以您必須提交刪除要求。如果不符合這些條件，則可以拒絕該請求。您必須從回應中擷取 `deletion-task-id`，以檢查刪除任務的狀態。輸入下列內容，提交服務連結角色刪除請求。

   ```
   $ aws iam [delete-service-linked-role](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceLinkedRole.html) --role-name role-name
   ```

1. 輸入下列內容來檢查刪除任務的狀態。

   ```
   $ aws iam [get-service-linked-role-deletion-status](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServiceLinkedRoleDeletionStatus.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)。在請求中，指定角色名稱。

   因為無法刪除正在使用或具有相關聯資源的服務連結角色，所以您必須提交刪除要求。如果不符合這些條件，則可以拒絕該請求。您必須從回應中擷取 `DeletionTaskId`，以檢查刪除任務的狀態。

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

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