步骤 2:创建 IAM policy 和用户 - Amazon Kinesis Data Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

步骤 2:创建 IAM policy 和用户

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

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

创建者
操作 资源 目的
DescribeStream, DescribeStreamSummary, DescribeStreamConsumer Kinesis 数据流 在尝试读取记录前,使用者会检查数据流是否存在,数据流是否处于活动状态,以及分片是否包含在数据流中。
SubscribeToShard, RegisterStreamConsumer Kinesis 数据流 订阅使用者并将其注册到分片。
PutRecord, PutRecords Kinesis 数据流 将记录写入 Kinesis Data Streams。
使用者
操作 资源 目的
DescribeStream Kinesis 数据流 在尝试读取记录前,使用者会检查数据流是否存在,数据流是否处于活动状态,以及分片是否包含在数据流中。
GetRecords, GetShardIterator Kinesis 数据流 从分片读取记录。
CreateTable, DescribeTable, GetItem, PutItem, Scan, UpdateItem Amazon DynamoDB 表 如果使用器是使用 Kinesis Client Library(KCL)(版本 1.x 或 2.x)开发的,则需要 DynamoDB 表的权限才能跟踪应用程序的处理状态。
DeleteItem Amazon DynamoDB 表 使用器在 Kinesis Data Streams 分片上执行拆分/合并操作时适用。
PutMetricData Amazon CloudWatch 日志 KCL 还会将指标上传到 CloudWatch,这对于监控应用程序很有用。

对于此教程,您将创建授予上述所有权限的单个 IAM policy。在生产中,您可能需要创建两个策略,一个针对创建器,另一个针对使用者。

创建 IAM policy
  1. 找到您在上述步骤中创建的新数据流的 Amazon 资源名称 (ARN)。您可以在详细信息选项卡顶部找到作为流 ARN 列出的此 ARN。ARN 格式如下所示:

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

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

    账户

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

    name

    您在上述步骤中创建的数据流的名称,即 StockTradeStream

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

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

    区域和账户 ID 与您在本教程中使用的数据流 ARN 中的值相同,但 name 是使用器应用程序创建并使用的 DynamoDB 表的名称。KCL 使用应用程序名称作为表名称。在此步骤中,将 StockTradesProcessor 用作 DynamoDB 表名称,因为这是本教程后续步骤中使用的应用程序名称。

  3. 在 IAM 控制台的策略https://console.aws.amazon.com/iam/home#policies)中,选择创建策略。如果这是您首次使用 IAM policy,请依次选择开始使用创建策略

  4. Policy Generator 旁,选择 Select

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

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

  7. 输入您在本教程中使用的数据流的 ARN。

  8. 对以下各项使用 Add Statement (添加语句)

    Amazon 服务 操作 ARN
    Amazon DynamoDB CreateTable, DeleteItem, DescribeTable, GetItem, PutItem, Scan, UpdateItem 您在此过程的步骤 2 中创建的 DynamoDB 表的 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", "kinesis:ListShards", "kinesis:DescribeStreamSummary", "kinesis:RegisterStreamConsumer" ], "Resource": [ "arn:aws:kinesis:us-west-2:123:stream/StockTradeStream" ] }, { "Sid": "Stmt234", "Effect": "Allow", "Action": [ "kinesis:SubscribeToShard", "kinesis:DescribeStreamConsumer" ], "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.aws.amazon.com/iam/

  2. Users (用户) 页面上,选择 Add user (添加用户)

  3. 对于 User name,键入 StockTradeStreamUser

  4. 对于 Access type (访问类型),选择 Programmatic access (编程访问),然后选择 Next: Permissions (下一步: 权限)

  5. 选择 Attach existing policies directly(直接附上现有策略)。

  6. 按名称搜索您在上述过程中创建的策略 (StockTradeStreamPolicy)。选中策略名称左侧的框,然后选择 Next: Review (下一步: 审核)

  7. 查看详细信息和摘要,然后选择 Create user (创建用户)

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

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

    [default] aws_access_key_id=access key aws_secret_access_key=secret access key
将 IAM policy 附加到用户
  1. 在 IAM 控制台中打开策略,然后选择策略操作

  2. 选择 StockTradeStreamPolicyAttach (附加)

  3. 选择 StockTradeStreamUserAttach Policy (附加策略)

后续步骤

步骤 3:下载并构建代码