是否可以使用.Net Core 2.2在AWS Lambda上使用Kinesis FireHose执行PutRecord?

问题描述 投票:0回答:2

之所以问这个问题,是因为我没有看到任何官方文件提到执行从AWS Lambda函数到FireHose的PutRecord。我想在Kinesis FireHose上从AWS Lambda执行PutRecord。我还将适当的PutRecord策略赋予了我要从其中进行PutRecord的AWS Lambda函数。使用.Net 2.2从AWS Lambda执行PutRecord操作时,出现以下错误:

用户:arn:aws:sts :: accountnumber:assumed-role / listener-role / lambda无权执行:kinesis:PutRecord在资源上:arn:aws:kinesis:us-west-1:accountnumber:assumed:流/ firehose-stream

我有以下政策

{
  "permissionsBoundary": {},
  "roleName": "listener-role",
  "policies": [
    {
      "document": {
        "Version": "2012-10-17",
        "Statement": [
          {....},
          {
            "Effect": "Allow",
            "Action": [
              "firehose:PutRecord",
              "firehose:PutRecordBatch"
            ],
            "Resource": [
              "*"
            ]
          }
        ]
      },
      "name": "policy",
      "type": "inline"
    }
  ],
  "trustedEntities": [
    "lambda.amazonaws.com"
  ]
}

enter image description here

。Net在Kinesis FireHose上放置记录被剪断

_ kinesisClient是AmazonKinesisClient

        MemoryStream recordStream = new MemoryStream();
        IFormatter formatter = new BinaryFormatter();
        formatter.Serialize(recordStream, data);
        var request = new PutRecordRequest
        {
            PartitionKey = Guid.NewGuid().ToString(),
            Data = recordStream,
            StreamName = Environment.GetEnvironmentVariable("KinesisStream")
        };
        await _kinesisClient.PutRecordAsync(request);

之所以问这个问题,是因为我没有看到任何官方文件提到执行从AWS Lambda函数到FireHose的PutRecord。我想在Kinesis上从AWS Lambda执行PutRecord ...

amazon-web-services aws-lambda amazon-iam amazon-kinesis amazon-kinesis-firehose
2个回答
1
投票

您正在尝试将数据放入Kinesis数据流中。您的策略允许您将数据放入Kinesis Firehose。由于Kinesis的不同口味,这可能会造成混淆。如果确实试图将数据放入Kinesis Data Stream


0
投票

我使用了错误的客户端在Kinesis Firehose上放置记录。KinesisFireHose客户端看起来像这样。

© www.soinside.com 2019 - 2024. All rights reserved.