Поиск по значениям всех переменных среды функции AWS Lambda в учетной записи AWS - PullRequest
4 голосов
/ 11 октября 2019

У меня есть аккаунт AWS с огромным количеством лямбда-функций AWS, и я хотел бы проверить все переменные окружения всех функций и попытаться найти там функции, которые используют некоторые конкретные значения. Как я могу сделать это без ручной проверки каждой функции в консоли AWS? AWS CLI позволяет это делать?

Ответы [ 2 ]

2 голосов
/ 15 октября 2019

Да, интерфейс командной строки AWS позволяет проверять переменные среды Lambda. Чтобы автоматизировать это от начала до конца, вам нужно объединить несколько команд. Также я по умолчанию использовал jq для тяжелой работы. Я уверен, что есть способ сделать это в JMESPath, но у меня не было времени выяснить это.

Вот краткий обзор того, как это работает:

  1. Получитьсписок имен лямбда-функций путем вызова list-functions и передачи этого списка в виде текста на xargs
  2. Возьмите вывод из предыдущего шага и используйте его для получения всех деталей конфигурации лямбда-функции, вызвав get-function-configuration.
  3. Канал, который выводит на jq, убедитесь, что поле Environment не равно нулю, и найдите нужную переменную. В этом случае я ищу переменную с именем customer, которая имеет значение shared_services.
  4. Вывести имя лямбда-функции.

Код:

aws lambda list-functions --query 'Functions[*].[FunctionName]' --output text | xargs -I {} aws lambda get-function-configuration --function-name {} | jq -r 'select((.Environment) and select(.Environment.Variables.customer == "shared_services"))| .FunctionName'

Вывод

copy_snaps_shared_services
snapshot_by_customer

Ссылки

JQ Руководство
JQ Наличие ключа перед повторением
Примеры использования CLS AWS
AWS Lambda GetКонфигурация функций
Функции лямбда-списка AWS

1 голос
/ 11 октября 2019

Вы можете использовать функцию get CLI AWS , чтобы получить метаданные о функции Lambda. Возвращенные метаданные включают в себя заранее заданный URL-адрес для загрузки пакета развертывания. Вы можете загрузить пакет развертывания, распаковать его и найти в исходном коде ссылки на переменные среды, которые вы ищете.

Взгляните на этот скрипт, чтобы увидеть, как это легко сделать: https://gist.github.com/nemaniarjun/defdde356b6678352bcd4af69b7fe529

...