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

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

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

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

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

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

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

DescribeStream

DescribeStreamSummary

RegisterStreamConsumer

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

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

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

將消費者註冊到碎片。

Amazon Kinesis Data Streams

GetRecords

GetShardIterator

ListShards

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

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

從碎片讀取記錄。

Amazon Kinesis Data Streams

SubscribeToShard

DescribeStreamConsumer

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

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

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

Amazon DynamoDB

CreateTable

DescribeTable

UpdateTable

Scan

GetItem

PutItem

UpdateItem

DeleteItem

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

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

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

Amazon DynamoDB

Query

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

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

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

Amazon CloudWatch

PutMetricData

*

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

注意

將 中的「區域」、「帳戶」、「StreamName、」和「KCLApplicationName」分別取代ARNs為您自己的 AWS 區域、 AWS 帳戶 數字、Kinesis 資料串流名稱和KCL應用程式名稱。KCL 3.x 在 DynamoDB 中建立另外兩個中繼資料資料表。如需 建立的 DynamoDB 中繼資料資料表的詳細資訊KCL,請參閱 DynamoDB 中繼資料資料表和 中的負載平衡 KCL。如果您使用組態來自訂 建立的中繼資料資料表名稱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應用程式名稱。