之所以问这个问题,是因为我没有看到任何官方文件提到执行从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"
]
}
。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 ...
您正在尝试将数据放入Kinesis数据流中。您的策略允许您将数据放入Kinesis Firehose。由于Kinesis的不同口味,这可能会造成混淆。如果确实试图将数据放入Kinesis Data Stream
我使用了错误的客户端在Kinesis Firehose上放置记录。KinesisFireHose客户端看起来像这样。