amazon-web-services - 是否可以使用 .Net Core 2.2 在 AWS Lambda 上使用 Kinesis FireHose 执行 PutRecord?
问题描述
我之所以问这个问题是因为我没有看到任何官方文件提到从 AWS Lambda 函数到 FireHose 执行 PutRecord。我想在 Kinesis FireHose 上从 AWS Lambda 执行 PutRecord。我还为我尝试从中进行 PutRecord 的 AWS Lambda 函数提供了适当的 PutRecord 策略。当使用 .Net 2.2 从 AWS Lambda 执行 PutRecord 操作时,我收到以下错误
用户:arn:aws:sts::accountnumber:assumed-role/listener-role/lambda 无权执行:kinesis:PutRecord on resource:arn:aws:kinesis:us-west-1:accountnumber:assumed: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);
解决方案
您正在尝试将数据放入Kinesis Data Stream中。您的策略允许您将数据放入Kinesis Firehose中。由于 Kinesis 的不同风格,这可能会有些混乱。如果您确实尝试将数据放入Kinesis Data Stream中,则应将策略操作更改为kinesis:Put*
。
另一方面,如果您想将数据放入Kinesis Firehose中,请将您的 .NET 代码更改为以下内容(我不是 .NET 专家):
var putRecordRequest = new PutRecordRequest();
var deliveryStreamName = Environment.GetEnvironmentVariable("KinesisStream");
putRecordRequest.setDeliveryStreamName(deliveryStreamName);
var record = new Record().withData(ByteBuffer.wrap(data.getBytes()));
putRecordRequest.setRecord(record);
// Put record into the DeliveryStream
firehoseClient.putRecord(putRecordRequest);
推荐阅读
- java - 为什么我无法写入文件?
- delphi - 如何计算 Firemonkey 中 TBitmap 的主色?
- android - 将图片从图库导入并保存到内存
- python - “NoneType”对象没有“解码”属性
- javascript - 在什么情况下 viewProviders 在 Angular 中有用?
- java - 如何删除缓存中的条目
- android - 如何为我的离线应用使用大尺寸图片
- tfs - 如何从 tfs 源代码管理中抓取/获取 url 并将其附加到 markdown 文件?
- wordpress - Woocommerce 仅削减 7 号
- python - 如何使用 pyqtgraph 的 GLViewWidget 将轴特征(标签、刻度、值)添加到 3D 图中?