Kinesis Data Analytics 中的 Identity and Access Management - Amazon Kinesis Data Analytics for SQL 应用程序开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

Kinesis Data Analytics 中的 Identity and Access Management

Amazon Kinesis Data Analytics 需要具有相应的权限,以从应用程序输入配置上指定的流式传输源中读取记录。Amazon Kinesis Data Analytics 还需要具有相应的权限,以将应用程序输出写入到在应用程序输出配置上指定的流中。

您可以创建 Amazon Kinesis Data Analytics 可担任的 IAM 角色以授予这些权限。您为该角色授予的权限决定了 Amazon Kinesis Data Analytics 服务在担任该角色时可以执行的操作。

注意

如果要自己创建 IAM 角色,此部分中的信息是非常有用的。在 Amazon Kinesis Data Analytics 控制台中创建应用程序时,控制台可以在此时为您创建一个 IAM 角色。对于控制台创建的 IAM 角色,控制台使用以下命名约定。

kinesis-analytics-ApplicationName

在创建角色后,您可以在 IAM 控制台中查看该角色和附加的策略。

每个 IAM 角色附加了两个策略。在信任策略中,您可以指定谁可以代入该角色。在权限策略(可以有一个或多个)中,您应当指定要向此角色授予的权限。以下部分说明了这些策略,您可以在创建 IAM 角色时使用这些策略。

信任策略

要为 Amazon Kinesis Data Analytics 授予担任某个角色的权限以访问流式传输或引用源,您可以将以下信任策略附加到 IAM 角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "kinesisanalytics.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

权限策略

如果要创建 IAM 角色以允许 Amazon Kinesis Data Analytics 从应用程序流式传输源中读取,您必须授予相关读取操作的权限。根据您的源(例如,Kinesis 流、Kinesis Data Firehose 传输流或 Amazon S3 存储桶中的引用源),您可以附加以下权限策略。

读取 Kinesis 流的权限策略

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadInputKinesis", "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": [ "arn:aws:kinesis:aws-region:aws-account-id:stream/inputStreamName" ] } ] }

读取 Kinesis Data Firehose 传输流的权限策略

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadInputFirehose", "Effect": "Allow", "Action": [ "firehose:DescribeDeliveryStream", "firehose:Get*" ], "Resource": [ "arn:aws:firehose:aws-region:aws-account-id:deliverystream/inputFirehoseName" ] } ] }
注意

firehose:Get* 权限是指 Kinesis Data Analytics 用于访问流的内部访问器。Kinesis Data Firehose 传输流没有公共访问器。

如果您指示 Amazon Kinesis Data Analytics 将输出写入到应用程序输出配置中的外部目标,您需要为 IAM 角色授予以下权限。

写入到 Kinesis 流的权限策略

{ "Version": "2012-10-17", "Statement": [ { "Sid": "WriteOutputKinesis", "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:PutRecord", "kinesis:PutRecords" ], "Resource": [ "arn:aws:kinesis:aws-region:aws-account-id:stream/output-stream-name" ] } ] }

写入到 Firehose 传输流的权限策略

{ "Version": "2012-10-17", "Statement": [ { "Sid": "WriteOutputFirehose", "Effect": "Allow", "Action": [ "firehose:DescribeDeliveryStream", "firehose:PutRecord", "firehose:PutRecordBatch" ], "Resource": [ "arn:aws:firehose:aws-region:aws-account-id:deliverystream/output-firehose-name" ] } ] }

从 Amazon S3 存储桶中读取引用数据源的权限策略

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "*" } ] }