【问题标题】:What IAM permissions does a Kinesis Consumer need when using KCL?Kinesis 使用者在使用 KCL 时需要哪些 IAM 权限?
【发布时间】:2019-11-08 14:41:14
【问题描述】:

我有一个使用 Kinesis Client Library (KCL) 编写的 Kinesis 消费者。此使用者在假定的 IAM 角色下运行。

我从documentation 读到:

KCL 使用应用程序名称创建一个 DynamoDB 表,并使用该表来维护应用程序的状态信息(例如检查点和工作分片映射)。每个应用程序都有自己的 DynamoDB 表。有关更多信息,请参阅跟踪 Amazon Kinesis Data Streams 应用程序状态。

当然,我需要将 dynamodb:CreateTable 权限添加到我的 IAM 角色。但是,我在其他方面遇到了错误(例如dynamodb:DescribeTable)。

是否有我的 KCL 使用者需要访问的所有 DynamoDB 操作的列表?似乎缺少文档,我宁愿拥有一份权威列表,也不愿继续尝试运行我的应用程序。

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb amazon-kinesis amazon-kcl


    【解决方案1】:

    我也遇到了同样的问题 设置此策略后能够解决问题,还应该启用适当的权限来访问 Kinesis

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "kinesis:Get*",
                    "kinesis:DescribeStream",
                    "kinesis:ListShards"
                ],
                "Resource": [
                    "arn:aws:kinesis:ap-south-1:ACCOUNT_ID:stream/STREAM_NAME"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "kinesis:ListStreams"
                ],
                "Resource": [
                    "arn:aws:kinesis:ap-south-1:ACCOUNT_ID:stream/STREAM_NAME"
                ]
            },
            {
                "Sid": "SpecificTable",
                "Effect": "Allow",
                "Action": [
                    "dynamodb:BatchGet*",
                    "dynamodb:DescribeStream",
                    "dynamodb:DescribeTable",
                    "dynamodb:Get*",
                    "dynamodb:Query",
                    "dynamodb:Scan",
                    "dynamodb:BatchWrite*",
                    "dynamodb:CreateTable",
                    "dynamodb:Delete*",
                    "dynamodb:Update*",
                    "dynamodb:PutItem"
                ],
                "Resource": "arn:aws:dynamodb:ap-south-1:ACCOUNT_ID:table/TABLE_NAME*"
            }
        ]
    }
    

    【讨论】:

      【解决方案2】:

      这应该是您需要的权限集。表名由客户端代码提供,默认为appName,但可以在ConfigsBuilder中覆盖:

                - Effect: Allow
                  Action:
                    - dynamodb:CreateTable
                    - dynamodb:DescribeTable
                    - dynamodb:Scan
                    - dynamodb:PutItem
                    - dynamodb:GetItem
                    - dynamodb:UpdateItem
                    - dynamodb:DeleteItem
                  Resource:
                    - !Join ["", ["arn:aws:dynamodb:*:", !Ref 'AWS::AccountId', ":table/*"]]
      

      【讨论】:

        猜你喜欢
        • 2019-11-28
        • 2017-08-08
        • 2012-10-09
        • 1970-01-01
        • 2018-03-04
        • 2013-01-18
        • 1970-01-01
        • 2014-08-28
        • 2020-11-03
        相关资源
        最近更新 更多