我正在配置使用Lambda的流水流的记录转换。问题在于,当新记录进入firehose时,永远不会调用transform函数。
我对此进行了进一步调试,发现该策略应允许invokeFunction
充当firehose角色,并且应允许getRecords
用于Lambda的Kinesis流。但是我没有任何Kinesis流。只有没有getRecords
操作的firehose流。
我阅读了他们的文档:
但找不到用于配置Lambda策略用作Firehose转换功能的示例。
尽管已对如何配置Firehose进行了详细说明,但Lambda方面并没有太多有关所需IAM策略的信息。
有人用适当的策略成功配置了此吗?
更新:
Firehose流策略可以访问S3存储桶(GetBucketLocation,ListBucket,ListBucketMultipartUploads,GetObject,PutObject)
还有如下所述的Lambda调用权限。
{
"Sid": "",
"Effect": "Allow",
"Action": [
"lambda:InvokeFunction",
"lambda:GetFunctionConfiguration"
],
"Resource": "arn:aws:lambda:us-east-1:xxxxxxxxxxxx:function:my_test_function:$LATEST"
}
在Lambda端,在控制台中,我选择了Kinesis选项作为触发器。但是它允许从Kinesis stream
下拉列表中仅选择Kinesis流。我正在寻找的是允许记录转换的Firehose流。但是此Firehose流完全没有出现在下拉列表中。
此外, https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html说明了Kinesis触发器所需的权限(kinesis:GetRecords从Kinesis流中读取记录)
但是https://docs.aws.amazon.com/lambda/latest/dg/services-kinesisfirehose.html完全不提供有关Firehose所需权限的任何信息。如果我使用与Kinesis流相同的权限,则Lambda根本不会触发。