Преобразование данных 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"
Другие вопросы по тегам