

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

# 使用 Amazon Kinesis Data Streams 和 Amazon DynamoDB 專用的 IAM 政策
<a name="kds_iam"></a>

第一次為 Amazon DynamoDB 啟用 Amazon Kinesis Data Streams 時，DynamoDB 會自動為您建立 AWS Identity and Access Management (IAM) 服務連結角色。 DynamoDB 這個角色 (`AWSServiceRoleForDynamoDBKinesisDataStreamsReplication`) 可讓 DynamoDB 代表您管理對 Kinesis Data Streams 的項目層級變更的複寫。請勿刪除此服務連結角色。

如需服務連結角色的詳細資訊，請參閱《*IAM 使用者指南*》中的[使用服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html)。

**注意**  
DynamoDB 不支援 IAM 政策的標籤型條件。

若要啟用 Amazon DynamoDB 專用 Amazon Kinesis Data Streams，您必須擁有下列資料表許可：
+ `dynamodb:EnableKinesisStreamingDestination`
+ `kinesis:ListStreams`
+ `kinesis:PutRecords`
+ `kinesis:DescribeStream`

若要為指定的 DynamoDB 資料表描述 Amazon DynamoDB 專用 Amazon Kinesis Data Streams，您必須擁有下列資料表許可。
+ `dynamodb:DescribeKinesisStreamingDestination`
+ `kinesis:DescribeStreamSummary`
+ `kinesis:DescribeStream`

若要停用 Amazon DynamoDB 專用 Amazon Kinesis Data Streams，您必須擁有下列資料表許可。
+ `dynamodb:DisableKinesisStreamingDestination`

若要更新 Amazon DynamoDB 專用 Amazon Kinesis Data Streams，您必須擁有下列資料表許可。
+ `dynamodb:UpdateKinesisStreamingDestination`

下列範例顯示如何使用 IAM 政策授予 Amazon DynamoDB 專用 Amazon Kinesis Data Streams 的許可。

## 範例：啟用 Amazon DynamoDB 專用 Amazon Kinesis Data Streams
<a name="access-policy-kds-example1"></a>

以下 IAM 政策會授予 `Music` 資料表啟用 Amazon DynamoDB 專用 Amazon Kinesis Data Streams 的許可。其不會授予 `Music` 資料表停用、更新或描述 DynamoDB 專用 Kinesis Data Streams 的許可。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/kinesisreplication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBKinesisDataStreamsReplication",
            "Condition": {
                "StringLike": {
                    "iam:AWSServiceName": "kinesisreplication.dynamodb.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:EnableKinesisStreamingDestination"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:{{111122223333}}:table/Music"
        }
    ]
}
```

------

## 範例：更新 Amazon DynamoDB 專用 Amazon Kinesis Data Streams
<a name="access-policy-kds-example2"></a>

以下 IAM 政策會授予 `Music` 資料表更新 Amazon DynamoDB 專用 Amazon Kinesis Data Streams 的許可。其不會授予 `Music` 資料表啟用、停用或描述 Amazon DynamoDB 專用 Amazon Kinesis Data Streams 的許可。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:UpdateKinesisStreamingDestination"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:{{111122223333}}:table/Music"
        }
    ]
}
```

------

## 範例：停用 Amazon DynamoDB 專用 Amazon Kinesis Data Streams
<a name="access-policy-kds-example2"></a>

以下 IAM 政策會授予 `Music` 資料表停用 Amazon DynamoDB 專用 Amazon Kinesis Data Streams 的許可。其不會授予 `Music` 資料表啟用、更新或描述 Amazon DynamoDB 專用 Amazon Kinesis Data Streams 的許可。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:DisableKinesisStreamingDestination"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:{{111122223333}}:table/Music"
        }
    ]
}
```

------

## 範例：根據資源選擇性地為 Amazon DynamoDB 專用 Amazon Kinesis Data Streams 套用許可
<a name="access-policy-kds-example3"></a>

下列 IAM 政策會授予 `Music` 資料表啟用及描述 Amazon DynamoDB 專用 Amazon Kinesis Data Streams 的許可，但不會授予 `Orders` 資料表停用 Amazon DynamoDB 專用 Amazon Kinesis Data Streams 的許可。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:EnableKinesisStreamingDestination",
                "dynamodb:DescribeKinesisStreamingDestination"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:{{111122223333}}:table/Music"
        },
        {
            "Effect": "Deny",
            "Action": [
                "dynamodb:DisableKinesisStreamingDestination"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:{{111122223333}}:table/Orders"
        }
    ]
}
```

------

## 為 DynamoDB 專用 Kinesis Data Streams 使用服務連結角色
<a name="kds-service-linked-roles"></a>

Amazon DynamoDB 的 Amazon Kinesis Data Streams 使用 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)。 DynamoDB 服務連結角色是特殊類型的 IAM 角色，此角色可直接連結到 DynamoDB 專用 Kinesis Data Streams。服務連結角色由適用於 DynamoDB 的 Kinesis Data Streams 預先定義，並包含該服務代表您呼叫其他 AWS 服務所需的所有許可。

服務連結角色可讓 DynamoDB 專用 Kinesis Data Streams 的設定更為簡單，因為您不必手動新增必要的許可。DynamoDB 專用 Kinesis Data Streams 會定義其服務連結角色的許可，除非另有定義，否則僅有 DynamoDB 專用 Kinesis Data Streams 可以擔任其角色。定義的許可包括信任政策和許可政策，並且該許可政策不能連接到任何其他 IAM 實體。

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

### DynamoDB 專用 Kinesis Data Streams 的服務連結角色許可
<a name="slr-permissions"></a>

DynamoDB 專用 Kinesis Data Streams 會使用名為 **AWSServiceRoleForDynamoDBKinesisDataStreamsReplication** 的服務連結角色。服務連結角色的目的是讓 Amazon DynamoDB 代表您管理對 Kinesis Data Streams 項目層級變更的複寫。

`AWSServiceRoleForDynamoDBKinesisDataStreamsReplication` 服務連結角色信任下列服務以擔任角色：
+ `kinesisreplication.dynamodb.amazonaws.com`

此角色許可政策允許 DynamoDB 專用 Kinesis Data Streams 對指定資源完成下列動作：
+ 動作：`Kinesis stream` 上的 `Put records and describe`
+ 動作：`Generate data keys`開啟 `AWS KMS` 以將資料放置在使用使用者產生 AWS KMS 金鑰加密的 Kinesis 串流上。

如需政策文件的確切內容，請參閱 [DynamoDBKinesisReplicationServiceRolePolicy](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/aws-service-role/DynamoDBKinesisReplicationServiceRolePolicy)。

您必須設定許可，IAM 實體 (如使用者、群組或角色) 才可建立、編輯或刪除服務連結角色。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[服務連結角色許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/contributorinsights-service-linked-roles.html#service-linked-role-permissions)。

### 為 DynamoDB 專用 Kinesis Data Streams 建立服務連結角色
<a name="create-slr"></a>

您不需要手動建立服務連結角色，當您在 AWS 管理主控台、 AWS CLI或 AWS API 中啟用 DynamoDB 的 Kinesis Data Streams 時，DynamoDB 的 Kinesis Data Streams 會為您建立服務連結角色。

若您刪除此服務連結角色，之後需要再次建立，您可以在帳戶中使用相同程序重新建立角色。在啟用 DynamoDB 專用 Kinesis Data Streams 時，DynamoDB 專用 Kinesis Data Streams 會再次為您建立服務連結角色。

### 為 DynamoDB 專用 Kinesis Data Streams 編輯服務連結角色
<a name="edit-slr"></a>

DynamoDB 專用 Kinesis Data Streams 不允許您編輯 `AWSServiceRoleForDynamoDBKinesisDataStreamsReplication` 服務連結角色。因為有各種實體可能會參考服務連結角色，所以您無法在建立角色之後變更角色名稱。然而，您可使用 IAM 來編輯角色描述。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[編輯服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/contributorinsights-service-linked-roles.html#edit-service-linked-role)。

### 為 DynamoDB 專用 Kinesis Data Streams 刪除服務連結角色
<a name="delete-slr"></a>

您也可以使用 IAM 主控台、 AWS CLI 或 AWS API 手動刪除服務連結角色。若要執行此操作，您必須先手動清除服務連結角色的資源，然後才能手動刪除它。

**注意**  
若 DynamoDB 專用 Kinesis Data Streams 服務在您試圖刪除資源時正在使用該角色，刪除可能會失敗。若此情況發生，請等待數分鐘後並再次嘗試操作。

**使用 IAM 手動刪除服務連結角色**

使用 IAM 主控台 AWS CLI、 或 AWS API 來刪除`AWSServiceRoleForDynamoDBKinesisDataStreamsReplication`服務連結角色。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[刪除服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html)。