当前位置: 首页 > 知识库问答 >
问题:

使用KCL时,Kinesis消费者需要哪些IAM权限?

阎烨
2023-03-14

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

我从文档中了解到:

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

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

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

共有2个答案

乐正秦斩
2023-03-14

这应该是您需要的权限集。表名由客户端代码提供,默认为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/*"]]
杨轶
2023-03-14

我也有同样的问题,在设置此策略后能够解决问题,应该有一个适当的权限来访问动画

{
    "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*"
        }
    ]
}
 类似资料:
  • 我观察到,运动流中存在一些记录,但KCL消费者应用程序尚未收到这些记录。发生这种情况的原因是什么?之前和之后的记录都很好。 所有异常都在我的应用程序中消耗,KCL不会收到。所以http://docs.aws.amazon.com/streams/latest/dev/troubleshooting-consumers.html#w1ab1c11c11c15b9的情况也没有发生。 一些细节:打开分片

  • 请帮忙。我在为中的Kinesis数据流设置消费者时遇到问题。NET控制台应用程序。 我已经按照留档做了所有的事情,但是每当我运行消费者时,我仍然会得到一个空白的控制台屏幕。到目前为止,生产者工作正常,AWS凭据也在工作。 我的系统上的JDK配置良好(对Java开发来说并不新鲜) 我有所有必要的政策附加到我的IAM用户 我可以看到生产者可以使用相同的AWS凭据以编程方式创建流、desc流等 我可以在

  • 假设我有一个Docker容器来保存一些数据。我希望这些数据能够持久化--如果容器被停止、删除、升级等,我仍然希望这些数据位于主机OS文件系统中的一个可访问的位置。 那么,如何对正在挂载的目录设置正确的权限呢?

  • 在Bash中是否有需要转义的字符的全面列表?是否可以只使用检查它? 并且工作正常,没有转义。是否意味着不需要转义?这是检查必要性的好方法吗? 更一般的是:在和中转义的字符是否相同?

  • 我想制作下面的数据发送架构。 生产商-- 消费者服务器可以关闭,因此我认为应该至少有两个消费者。是这样吗? 当一个数据流有两个使用者时,是否有任何方法可以处理每个使用者一半的数据?正如我所知,这是不可能的。如果每个消费者都使用相同的数据,那就是浪费时间和成本。因为我只为高可用性提供了两个消费者。(用于故障切换) 在web was体系结构中,ELB或L4可以通过负载平衡将一半数据发送到每个was服务