KCL 取用者應用程式所需的 IAM 許可 - Amazon Kinesis Data Streams

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

KCL 取用者應用程式所需的 IAM 許可

您必須將下列許可新增至與您的 KCL 取用者應用程式相關聯的 IAM 角色或使用者。

AWS 指定使用精細許可來控制對不同資源之存取的安全最佳實務。 AWS Identity and Access Management (IAM) 可讓您管理 中的使用者和使用者許可 AWS。IAM 政策將明確列出允許的動作以及各項動作所適用的資源。

下表顯示 KCL 取用者應用程式通常所需的最低 IAM 許可:

KCL 取用者應用程式的最低 IAM 許可
服務 動作 資源 ARNs) 用途
Amazon Kinesis Data Streams

DescribeStream

DescribeStreamSummary

RegisterStreamConsumer

Kinesis 資料串流,KCL 應用程式將從中處理資料。

arn:aws:kinesis:region:account:stream/StreamName

嘗試讀取記錄之前,消費者應先檢查資料串流是否存在、是否處於作用中狀態,以及資料串流中是否含有碎片。

將消費者註冊到碎片。

Amazon Kinesis Data Streams

GetRecords

GetShardIterator

ListShards

Kinesis 資料串流,KCL 應用程式將從中處理資料。

arn:aws:kinesis:region:account:stream/StreamName

從碎片讀取記錄。

Amazon Kinesis Data Streams

SubscribeToShard

DescribeStreamConsumer

Kinesis 資料串流,KCL 應用程式將從中處理資料。只有在您使用增強型扇出 (EFO) 取用者時,才新增此動作。

arn:aws:kinesis:region:account:stream/StreamName/consumer/*

為增強型扇出 (EFO) 取用者訂閱碎片。

Amazon DynamoDB

CreateTable

DescribeTable

UpdateTable

Scan

GetItem

PutItem

UpdateItem

DeleteItem

租用資料表 (由 KCL 建立的 DynamoDB 中中繼資料資料表。

arn:aws:dynamodb:region:account:table/KCLApplicationName

KCL 需要這些動作,才能管理在 DynamoDB 中建立的租用資料表。

Amazon DynamoDB

CreateTable

DescribeTable

Scan

GetItem

PutItem

UpdateItem

DeleteItem

工作者指標和協調器狀態資料表 (DynamoDB 中的中繼資料資料表),由 KCL 建立。

arn:aws:dynamodb:region:account:table/KCLApplicationName-WorkerMetricStats

arn:aws:dynamodb:region:account:table/KCLApplicationName-CoordinatorState

KCL 需要這些動作來管理 DynamoDB 中的工作者指標和協調器狀態中繼資料資料表。

Amazon DynamoDB

Query

租用資料表上的全域次要索引。

arn:aws:dynamodb:region:account:table/KCLApplicationName/index/*

KCL 必須執行此動作,才能讀取在 DynamoDB 中建立之租用資料表的全域次要索引。

Amazon CloudWatch

PutMetricData

*

將指標上傳到 CloudWatch,這對於監控應用程式很有用。星號 (*) 是使用,因為 CloudWatch 中沒有叫用PutMetricData動作的特殊資源。

注意

分別將 ARNs 中的「region,」「account,」「StreamName」和「KCLApplicationName」取代為您自己的 AWS 區域、 AWS 帳戶 number、Kinesis 資料串流名稱和 KCL 應用程式名稱。KCL 3.x 在 DynamoDB 中建立另外兩個中繼資料資料表。如需 KCL 建立的 DynamoDB 中繼資料資料表的詳細資訊,請參閱 KCL 中的 DynamoDB 中繼資料資料表和負載平衡。如果您使用組態來自訂 KCL 建立的中繼資料資料表名稱,請使用這些指定的資料表名稱,而不是 KCL 應用程式名稱。

以下是 KCL 消費者應用程式的範例政策文件。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:DescribeStreamSummary", "kinesis:RegisterStreamConsumer", "kinesis:GetRecords", "kinesis:GetShardIterator", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:REGION:ACCOUNT_ID:stream/STREAM_NAME" }, { "Effect": "Allow", "Action": [ "kinesis:SubscribeToShard", "kinesis:DescribeStreamConsumer" ], "Resource": "arn:aws:kinesis:REGION:ACCOUNT_ID: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:REGION:ACCOUNT_ID: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:REGION:ACCOUNT_ID:table/KCL_APPLICATION_NAME-WorkerMetricStats", "arn:aws:dynamodb:REGION:ACCOUNT_ID:table/KCL_APPLICATION_NAME-CoordinatorState" ] }, { "Effect": "Allow", "Action": [ "dynamodb:Query" ], "Resource": [ "arn:aws:dynamodb:REGION:ACCOUNT_ID:table/KCL_APPLICATION_NAME/index/*" ] }, { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData" ], "Resource": "*" } ] }

使用此範例政策之前,請檢查下列項目:

  • 將 REGION 取代為您的 AWS 區域 (例如 us-east-1)。

  • 將 ACCOUNT_ID 取代為您的 AWS 帳戶 ID。

  • 將 STREAM_NAME 取代為 Kinesis 資料串流的名稱。

  • 將 CONSUMER_NAME 取代為消費者的名稱,通常是使用 KCL 時的應用程式名稱。

  • 將 KCL_APPLICATION_NAME 取代為您的 KCL 應用程式名稱。