

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# KCL コンシューマーアプリケーションに必要な IAM アクセス許可
<a name="kcl-iam-permissions"></a>

 KCL コンシューマーアプリケーションに関連付けられている IAM ロールまたはユーザーに、次の許可を追加する必要があります。

 のセキュリティのベストプラクティス AWS により、きめ細かなアクセス許可を使用してさまざまなリソースへのアクセスを制御できます。 AWS Identity and Access Management (IAM) では、 でユーザーとユーザーのアクセス許可を管理できます AWS。IAM ポリシーは、許可されるアクションとそのアクションが適用されるリソースを明示的にリストアップします。

次の表は、KCL コンシューマーアプリケーションに一般的に必要となる最小限の IAM アクセス許可を示しています。


**KCL コンシューマーアプリケーションの最小限の IAM アクセス許可**  

| サービス | アクション | リソース (ARN) | 目的 | 
| --- | --- | --- | --- | 
| Amazon Kinesis Data Streams | `DescribeStream`<br />`DescribeStreamSummary`<br />`RegisterStreamConsumer` | KCL アプリケーションがデータを処理する Kinesis データストリーム。<br />`arn:aws:kinesis:region:account:stream/StreamName` | レコードを読み取る前に、コンシューマーは、データストリームが存在すること、アクティブであること、シャードを含んでいることを確認します。<br />コンシューマーをシャードに登録します。 | 
| Amazon Kinesis Data Streams | `GetRecords`<br />`GetShardIterator`<br />`ListShards` | KCL アプリケーションがデータを処理する Kinesis データストリーム。<br />`arn:aws:kinesis:region:account:stream/StreamName` | シャードからレコードを読み取ります。 | 
| Amazon Kinesis Data Streams | `SubscribeToShard`<br />`DescribeStreamConsumer` | KCL アプリケーションがデータを処理する Kinesis データストリーム。このアクションは、拡張ファンアウト (EFO) コンシューマーを使用する場合にのみ追加します。<br />`arn:aws:kinesis:region:account:stream/StreamName/consumer/*` | 拡張ファンアウト (EFO) コンシューマー用にシャードをサブスクライブします。 | 
| Amazon DynamoDB | `CreateTable`<br />`DescribeTable`<br />`UpdateTable`<br />`Scan`<br />`GetItem`<br />`PutItem`<br />`UpdateItem`<br />`DeleteItem` | リーステーブル (KCL によって作成された DynamoDB のメタデータテーブル。<br />`arn:aws:dynamodb:region:account:table/KCLApplicationName` | これらのアクションは、KCL が DynamoDB で作成されたリーステーブルを管理するために必要です。 | 
| Amazon DynamoDB | `CreateTable`<br />`DescribeTable`<br />`Scan`<br />`GetItem`<br />`PutItem`<br />`UpdateItem`<br />`DeleteItem` | KCL によって作成されたワーカーメトリクスとコーディネーター状態テーブル (DynamoDB のメタデータテーブル)。<br />`arn:aws:dynamodb:region:account:table/KCLApplicationName-WorkerMetricStats`<br />`arn:aws:dynamodb:region:account:table/KCLApplicationName-CoordinatorState` | KCL が DynamoDB でワーカーメトリクスとコーディネーター状態メタデータテーブルを管理するには、これらのアクションが必要です。 | 
| Amazon DynamoDB | `Query` | リーステーブルのグローバルセカンダリインデックス<br />`arn:aws:dynamodb:region:account:table/KCLApplicationName/index/*` | KCL が DynamoDB で作成されたリーステーブルのグローバルセカンダリインデックスを読み取るには、このアクションが必要です。 | 
| Amazon CloudWatch | `PutMetricData` | \* | アプリケーションをモニタリングするのに便利なメトリクスを CloudWatch にアップロードします。CloudWatch では `PutMetricData` アクションが実行される特定のリソースが存在しないため、アスタリスク (\*) が使用されています。 | 

**注記**  
ARNsStreamName」、KCLApplicationName」をそれぞれ独自の AWS リージョン名前、 AWS アカウント 数値、Kinesis データストリーム名、および KCL アプリケーション名に置き換えます。KCL 3.x は、DynamoDB にさらに 2 つのメタデータテーブルを作成します。KCL によって作成された DynamoDB メタデータテーブルの詳細については、[KCL における DynamoDB メタデータテーブルと負荷分散](kcl-dynamoDB.md) を参照してください。KCL が作成するメタデータテーブルの名前を設定でカスタマイズしている場合は、KCL アプリケーション名ではなく、その指定したテーブル名を使用してください。

以下は、KCL コンシューマーアプリケーションのサンプルポリシードキュメントです。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesis:DescribeStream",
                "kinesis:DescribeStreamSummary",
                "kinesis:RegisterStreamConsumer",
                "kinesis:GetRecords",
                "kinesis:GetShardIterator",
                "kinesis:ListShards"
            ],
            "Resource": "arn:aws:kinesis:{{us-east-1}}:{{123456789012}}:stream/{{STREAM_NAME}}"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kinesis:SubscribeToShard",
                "kinesis:DescribeStreamConsumer"
            ],
            "Resource": "arn:aws:kinesis:{{us-east-1}}:{{123456789012}}:stream/{{STREAM_NAME}}/consumer/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:CreateTable",
                "dynamodb:DescribeTable",
                "dynamodb:UpdateTable",
                "dynamodb:GetItem",
                "dynamodb:UpdateItem",
                "dynamodb:PutItem",
                "dynamodb:DeleteItem",
                "dynamodb:Scan"
            ],
            "Resource": [
            "arn:aws:dynamodb:{{us-east-1}}:{{123456789012}}:table/{{KCL_APPLICATION_NAME}}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:CreateTable",
                "dynamodb:DescribeTable",
                "dynamodb:GetItem",
                "dynamodb:UpdateItem",
                "dynamodb:PutItem",
                "dynamodb:DeleteItem",
                "dynamodb:Scan"
            ],
            "Resource": [
            "arn:aws:dynamodb:{{us-east-1}}:{{123456789012}}:table/{{KCL_APPLICATION_NAME-WorkerMetricStats}}",
    "arn:aws:dynamodb:{{us-east-1}}:{{123456789012}}:table/{{KCL_APPLICATION_NAME-CoordinatorState}}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:Query"
            ],
            "Resource": [
            "arn:aws:dynamodb:{{us-east-1}}:{{123456789012}}:table/{{KCL_APPLICATION_NAME}}/index/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData"
            ],
            "Resource": "*"
        }
    ]
}
```

------

このサンプルポリシーを使用する前に、次の項目を確認してください。
+ REGION を your AWS リージョン (us-east-1 など) に置き換えます。
+ ACCOUNT\_ID を AWS アカウント ID に置き換えます。
+ STREAM\_NAME を自分の Kinesis データストリーム名に置き換えます。
+ CONSUMER\_NAME を自分のコンシューマー名に置き換えます (KCL を使用する場合、通常はアプリケーション名)。
+ KCL\_APPLICATION\_NAME を自分の KCL アプリケーション名に置き換えます。