Lambda — Для остановки EC2 инстансов, RDS инстансов и сдувания ASG во всех регионах

Данный Python скрипт получает список всех регионов, находит в них EC2 инстансы, RDS инстансы и ASG, и если на ресурсе нет тега "prevent_stop" равного значению "true", то останавливает данный ресурс, а в случае с ASG сжимает его до 0. main.py:   Список нужных разрешений для запуска (помимо "AWSLambdaExecute" политики): ec2:DescribeRegions ec2:DescribeInstances ec2:StopInstances rds:ListTagsForResource rds:DescribeDBInstances rds:StopDBInstance … Продолжить читать "Lambda — Для остановки EC2 инстансов, RDS инстансов и сдувания ASG во всех регионах"

PagerDuty — Python скрипт для создания событий

Данный Python скрипт создает события в PagerDuty используя APIv2. За основу был взят следующий скрипт. Для начала нужно создать "Routing Key", он же "Integration Key", не путать с "API Access Key", который можно использовать для любых API вызовов, нам же нужен только ключ от определенного сервиса. Переходим в настройки сервиса, в моем случае он называется … Продолжить читать "PagerDuty — Python скрипт для создания событий"

AWS Cli — Lambda: Обновить значение одной переменной

Ключ "—environment" утилиты AWS Cli заменяет все переменные, на те которые вы укажете в качестве аргумента. Чтобы изменить значение только одной переменной не стирая другие, или не перечисляя их все, можно воспользоваться следующим BASH скриптом:   aws_lambda_update_env.sh:   Для работы этого скрипта нужна утилита jq   Скрипт вычитывает все текущие переменные, подменяет значение переменной "ECR_TAG" … Продолжить читать "AWS Cli — Lambda: Обновить значение одной переменной"

AWS — Lambda: kubectl

Пример того, как можно создавать сущности в Kubernetes, используя AWS Lambda. Функция будет на Python3, так что воспользуемся Kubernetes Python Client Больше примеров по использованию можно найти тут. Так как AWS Lambda не поддерживает данный пакет, упакуем в нашу функцию модули "kubernetes" и "boto3". "boto3" понадобится для обращения в AWS SSM, где будет хранится kubeconfig … Продолжить читать "AWS — Lambda: kubectl"

FIX ERROR — AWS Lambda Python: "main() takes 0 positional arguments but 2 were given"

При попытке выполнить Lambda Python функцию возникает следующая ошибка: { "errorMessage": "main() takes 0 positional arguments but 2 were given", "errorType": "TypeError", "stackTrace": [ " File \"/var/runtime/bootstrap.py\", line 131, in handle_event_request\n response = request_handler(event, lambda_context)\n" ] }   Решение: Из сообщения видим, что мы в качестве хендлера используем функцию "main", которая не имеет входящих аргументов. … Продолжить читать "FIX ERROR — AWS Lambda Python: "main() takes 0 positional arguments but 2 were given""

AWS — ресайз изображений на лету

Ресайз изображения на лету используя: Gateway API Lambda CloudFront S3 Bucket При этом в S3 Bucket будет только оригинал изображения.     Описание работы и CloudFormation template можно найти тут. Скачиваем CloudFormation template с сайта или же по этой ссылке.     Заходим в консоль AWS В сервисах находим "CloudFormation" — "Create stack" Задаем имя … Продолжить читать "AWS — ресайз изображений на лету"

AWS — CodeBuild: Добавляем инкрементный номер сборки

Как оказалось CodeBuild не имеет встроенной инкрементной переменной для номера сборки, как в том же Jenkins'е к примеру. Решение было найдено на medium.com Для добавления номера сборки понадобятся следующие сервисы: AWS SSM (Systems Manager Parameter Store) AWS Lambda AWS CloudWatch AWS IAM   Создаем Parameter Store Переходим в сервис AWS Systems Manager —> Parameter Store … Продолжить читать "AWS — CodeBuild: Добавляем инкрементный номер сборки"