Запустите лямбда python код локально с разрешением роли IAM - PullRequest
0 голосов
/ 31 марта 2020

Я попытался выяснить способ отладки лямбда-кода в python локально. В настоящее время используется безсерверный фреймворк и Visual Studio Code IDE.

Лямбда-код хорошо работает в AWS лямбда-удаленной консоли, но как я могу тестировать python код локально с присоединенной ролью лямбда-выполнения всякий раз, когда мне нужно отладить. У меня есть пример события и учетные данные базы данных.

Лямбда-код использует boto3 для доступа к AWS ресурсам и использует лямбда-слой с python пакетами.

Некоторые предложения с минимальными изменениями и изменение кода? Безсерверный вызов локального?

1 Ответ

1 голос
/ 31 марта 2020

Для быстрой отладки я предлагаю использовать sls invoke local. Это не будет использовать AWS лямбда-роль, но будет использовать AWS учетные данные, если они доступны в вашей среде.

Если у меня возникают проблемы с AWS ролями или разрешениями, я предлагаю использовать sls invoke.

Вы можете передать тело JSON обоим sls invoke и sls invoke local:

sls invoke -f myFunctionName -d '{"Records":[{"messageId":"059f36b4-87a3-44ab-83d2-661975830a7d","receiptHandle":"AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...","body":"{\"functionArn\": \"arn:aws:lambda:us-west-2:377024778620:function:my-function-name\"}","attributes":{"ApproximateReceiveCount":"1","SentTimestamp":"1545082649183","SenderId":"AIDAIENQZJOLO23YVJ4VO","ApproximateFirstReceiveTimestamp":"1545082649185"},"messageAttributes":{},"md5OfBody":"098f6bcd4621d373cade4e832627b4f6","eventSource":"aws:sqs","eventSourceARN":"arn:aws:sqs:us-east-2:123456789012:my-queue","awsRegion":"us-east-2"}]}'

Я использую sls generate-event для создания различных тел для различных AWS услуги:

sls generate-event -t aws:sqs -b '{"functionArn": "arn:aws:lambda:us-east-1:123456:function:ci-service-fakeError"}'

А затем направить вывод этого на вход sls invoke

...