Amazon Kinesis Data Streams
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

步骤 2:创建 IAM 策略和用户

AWS 的安全最佳实践描述了如何使用精细权限来控制对各种资源的访问。利用 AWS Identity and Access Management (IAM),可以管理 AWS 中的用户和用户权限。IAM 策略 明确列出了允许的操作以及这些操作适用于的资源。

下面是 Kinesis Data Streams 创建器和使用者通常需要的最低权限。

创建者

操作 资源 目的
DescribeStream Kinesis data stream 在尝试写入记录前,创建器应检查流是否存在且处于活动状态。
PutRecordPutRecords Kinesis data stream 将记录写入 Kinesis Data Streams。

使用者

操作 资源 目的
DescribeStream Kinesis data stream 在尝试读取记录前,使用者需检查流是否存在并处于活动状态,以及分片是否包含在流中。
GetRecordsGetShardIterator Kinesis data stream 从 Kinesis Data Streams 分片读取记录。
CreateTableDescribeTableGetItemPutItemScanUpdateItem Amazon DynamoDB 表 如果使用者是使用 Kinesis 客户端库 (KCL) 开发的,它需要 DynamoDB 表的权限才能跟踪应用程序的处理状态。第一个使用者已开始创建表。
DeleteItem Amazon DynamoDB 表 适用于使用者在 Kinesis Data Streams 分片上执行拆分/合并操作时。
PutMetricData Amazon CloudWatch 日志 KCL 还会将指标上传到 CloudWatch,这对于监控应用程序很有用。

对于此应用程序,请创建授予上述所有权限的单个 IAM 策略。实际上,您可能需要考虑创建两个策略,一个策略适用于创建器,另一个策略适用于使用者。

创建 IAM 策略

  1. 找到新流的 Amazon 资源名称 (ARN)。您可以在 Details 选项卡顶部找到作为 Stream ARN 列出的此 ARN。ARN 格式如下所示:

    arn:aws:kinesis:region:account:stream/name
    区域

    区域代码,例如 us-west-2。有关更多信息,请参阅区域和可用区域概念

    account

    AWS 账户 ID,如账户设置中所示。

    name

    步骤 1:创建数据流 中的流名称,即 StockTradeStream

  2. 确定要由使用者使用(并由第一个使用者实例创建)的 DynamoDB 表的 ARN。它必须采用以下格式:

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

    区域和账户来自上一步骤中的相同位置,但这一次,名称为使用者应用程序创建和使用的表的名称。使用者所使用的 KCL 将应用程序名称用作表名称。使用 StockTradesProcessor,它是稍后使用的应用程序名称。

  3. 在 IAM 控制台中,从 Policies (https://console.amazonaws.cn/iam/home#policies) 中选择 Create policy。如果这是您首次使用 IAM 策略,请依次选择 Get StartedCreate Policy

  4. Policy Generator 旁,选择 Select

  5. 选择 Amazon Kinesis 作为 AWS 服务。

  6. 选择 DescribeStreamGetShardIteratorGetRecordsPutRecordPutRecords 作为允许的操作。

  7. 输入您在步骤 1 中创建的 ARN。

  8. 对以下各项使用 Add Statement

    AWS 服务 操作 ARN
    Amazon DynamoDB CreateTableDeleteItemDescribeTableGetItemPutItemScanUpdateItem 您在步骤 2 中创建的 ARN
    Amazon CloudWatch PutMetricData *

    在不需要指定 ARN 时使用的星号 (*)。在此示例中,这是因为 CloudWatch 中没有可对其调用 PutMetricData 操作的特定资源。

  9. 选择 Next Step

  10. Policy Name 更改为 StockTradeStreamPolicy,审阅代码,然后选择 Create Policy

生成的策略文档应类似于以下内容:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt123", "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:PutRecord", "kinesis:PutRecords", "kinesis:GetShardIterator", "kinesis:GetRecords" ], "Resource": [ "arn:aws:kinesis:us-west-2:123:stream/StockTradeStream" ] }, { "Sid": "Stmt456", "Effect": "Allow", "Action": [ "dynamodb:*" ], "Resource": [ "arn:aws:dynamodb:us-west-2:123:table/StockTradesProcessor" ] }, { "Sid": "Stmt789", "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData" ], "Resource": [ "*" ] } ] }

创建 IAM 用户

  1. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

  2. Users 页面上,选择 Add user

  3. 对于 User name,键入 StockTradeStreamUser

  4. 对于 Access type,选择 Programmatic access,然后选择 Next: Permissions

  5. 选择直接附加现有策略

  6. 按名称搜索您创建的策略。选中策略名称左侧的框,然后选择 Next: Review

  7. 查看详细信息和摘要,然后选择 Create user

  8. 复制 Access key ID,并将其私下保存。在 Secret access key 下面选择 Show,然后也将该密钥私下保存。

  9. 将访问密钥和私有密钥粘贴到一个只有您可以访问的位于安全位置的本地文件中。对于此应用程序,请创建名为 ~/.aws/credentials(具有严格权限)的文件。该文件应采用以下格式:

    [default] aws_access_key_id=access key aws_secret_access_key=secret access key

将 IAM 策略附加到用户

  1. 在 IAM 控制台中,打开 Policies 并选择 Policy Actions

  2. 选择 StockTradeStreamPolicyAttach

  3. 选择 StockTradeStreamUserAttach Policy

后续步骤

步骤 3:下载和构建实施代码

本页内容: