Я настраиваю преобразование записи для потока пожарного шланга, используя Lambda.Проблема в том, что функция преобразования никогда не вызывается, когда в пожарный шланг поступает новая запись.
Я продолжил отладку и обнаружил, что политика должна разрешать invokeFunction
в роли пожарного шланга и getRecords
в Kinesis.Поток в Лямбде.Но у меня нет никакого потока Kinesis.Только пожарный поток, который не имеет действия getRecords
.
Я прочитал их документацию:
, но не удалось найти пример для настройки лямбда-политики для использования в качестве функции преобразования Firehose.
Хотя подробно объясняется, как настроить пожарный шланг,Лямбда-сторона не располагает большой информацией о требуемых политиках 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 из выпадающего списка Kinesis stream
.То, что я ищу, - это поток 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 не запускается вообще.