本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
IAM使用KCL者应用程序所需的权限
您必须向与您的KCL使用者应用程序关联的IAM角色或用户添加以下权限。
的安全最佳实践 AWS 要求使用细粒度的权限来控制对不同资源的访问权限。 AWS Identity and Access Management (IAM) 允许您在中管理用户和用户权限 AWS。IAM策略明确列出了允许的操作以及这些操作适用的资源。
下表显示了使用KCL者应用程序通常需要的最低IAM权限:
服务 | 操作 | 资源 (ARNs) | 用途 |
---|---|---|---|
Amazon Kinesis Data Streams |
|
您的KCL应用程序将从中处理数据的 Kinesis 数据流。
|
在尝试读取记录前,消费端会检查数据流是否存在,数据流是否处于活动状态,以及分片是否包含在数据流中。 将消费者注册到分片。 |
Amazon Kinesis Data Streams |
|
您的KCL应用程序将从中处理数据的 Kinesis 数据流。
|
从分片读取记录。 |
Amazon Kinesis Data Streams |
|
您的KCL应用程序将从中处理数据的 Kinesis 数据流。只有在使用增强型扇出 (EFO) 使用者时才添加此操作。
|
为增强型扇出 () 消费者订阅分片。EFO |
Amazon DynamoDB |
|
租用表(由 DynamoDB 中创建的元数据表)。KCL
|
这些操作是管理在 Dynam KCL oDB 中创建的租用表所必需的。 |
Amazon DynamoDB |
|
由创建的工作器指标和协调器状态表(DynamoDB 中的元数据表)。KCL
|
这些操作是管理 Dynamo KCL DB 中的工作人员指标和协调器状态元数据表所必需的。 |
Amazon DynamoDB |
|
租赁表上的全局二级索引。
|
读取在 DynamoDB 中创建的租用表的全局二级索引需要执行此操作。KCL |
Amazon CloudWatch |
|
* |
上传指标对于监控应用程序非常有用。 CloudWatch 之所以使用星号 (*),是因为没有用于调用 |
注意
将中的 “区域”、“账户” StreamName、“” 和 “” KCLApplicationName 分别替换为您自己的 AWS 账户 号码 AWS 区域、Kinesis 数据流名称和KCL应用程序名称。ARNsKCL3.x 在 DynamoDB 中又创建了两个元数据表。有关由创建KCL的 DynamoDB 元数据表的详细信息,请参阅。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应用程序的名称。