Преобразование данных AWS, поступающих в конвейер IoT Analytics, с ошибкой разрешения функции Lambda
У меня в IoT Core есть правило, которое отправляет сообщения в канал IoT Analytics, а затем эти данные передаются в конвейер Analytics, однако в конвейере я хочу использовать активность конвейера для преобразования сообщения, в частности: сообщение Transform с лямбда-функцией активности.
Моя лямбда-функция возвращает значение, полученное из DynamoDB, я проверил лямбду в AWS Lambda, и она работает и работает так, как должна, однако, когда я нажимаю кнопку "Просмотр предварительного просмотра", которая должна теперь показать мне преобразованное сообщение, я получаю следующую ошибку:
Мы не смогли запустить трубопроводную деятельность. ОШИБКА: невозможно выполнить лямбда-функцию из-за недостаточных разрешений; отбрасывание сообщений, количество отброшенных сообщений: 1, functionArn: arn:aws:lambda:eu-west-1:x:function:y
Роль IAM, связанная с функцией Lambda y, имеет следующие разрешения:
- AmazonDynamoDBFullAccess
- AWSIoTAnalyticsFullAccess
- AWSIoTFullAccess
Может быть, есть какая-то политика, которой у меня нет в роли IAM для Lambda, которая мешает ей делать то, что мне нужно?
1 ответ
Похоже, вы не предоставили разрешение для своей лямбда-функции, убедитесь, что вы предоставили разрешение IoT Analytics для вызова вашей лямбда-функции
Пример команды CLI AWS:
1)
aws lambda add-permission --function-name filter_to_cloudwatch --statement-id filter_to_cloudwatch_perms --principal iotanalytics.amazonaws.com --action lambda:InvokeFunction
2)
aws lambda add-permission --function-name LambdaForWeatherCorp --region us-east-1 --principal iot.amazonaws.com --source-arn arn:aws:iot:us-east-1:123456789012:rule/WeatherCorpRule --source-account 123456789012 --statement-id "unique_id" --action "lambda:InvokeFunction"