Для автоматического создания "Sign-in URL" в новый добавленный аккаунт Control Tower понадобится следующее: создать на мастер аккаунте Lambda функцию (регион обязательно us-east-1 — Virginia, так будем использовать CloudTrail как триггер); создать политику разрешающую асюмить роль и приатачиваем ее к Лямбда роли; создаем CloudWatch Event Rule и в качестве таргета указываем лямбду; на мастер аккаунте создать …
Продолжить читать "AWS Organization — Автоматическое добавление Sign-in URL для новых аккаунтов"
In order to allow read access from the S3 Bucket for all members included in the organization, the following policy must be applied to the S3 Bucket: Where "stackset-lambdas" is the S3 Bucket name and "o-xxxxxxxxxx" is your Organization ID.
Данный 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 во всех регионах"
Данный Python скрипт создает события в PagerDuty используя APIv2. За основу был взят следующий скрипт. Для начала нужно создать "Routing Key", он же "Integration Key", не путать с "API Access Key", который можно использовать для любых API вызовов, нам же нужен только ключ от определенного сервиса. Переходим в настройки сервиса, в моем случае он называется …
Продолжить читать "PagerDuty — Python скрипт для создания событий"
AWS Transfer поддерживает 3 протокола: SFTP, FTP и FTPS. И только SFTP может иметь публичный эндпоинт, FTP/FTPS можно запускать только внутри VPC. Так же для авторизации по логину/паролю, необходимо использовать кастомный провайдер, больше информации об этом вы можете найти тут. Цель: Создать AWS Transfer сервер для протокола FTP, сервис должен быть публичным и так же …
Продолжить читать "AWS Transfer — Public FTP"
При создании RDS указав не верное значение параметра "ParameterGroupFamily" может возникнуть похожая ошибка: Error creating DB Parameter Group: InvalidParameterValue: ParameterGroupFamily default.mariadb10.2 is not a valid parameter group family Чтобы посмотреть список всех возможных значений параметра "ParameterGroupFamily" можно использовать следующую команду:
На момент написания статьи EKS Fargate не поддерживал драйверлог для записи в CloudWatch. Единственный вариант — использовать Sidecar Создадим ConfigMap, в котором укажем имя EKS кластера, регион и namespace: Далее создадим сервис аккаунт и ConfigMap с файлом конфигурации для Fluentd. Для этого скопируем текст ниже и сохраним его как файл "fluentd.yaml" И применим …
Продолжить читать "AWS — EKS Fargate — Fluentd CloudWatch"
Ключ "—environment" утилиты AWS Cli заменяет все переменные, на те которые вы укажете в качестве аргумента. Чтобы изменить значение только одной переменной не стирая другие, или не перечисляя их все, можно воспользоваться следующим BASH скриптом: aws_lambda_update_env.sh: Для работы этого скрипта нужна утилита jq Скрипт вычитывает все текущие переменные, подменяет значение переменной "ECR_TAG" …
Продолжить читать "AWS Cli — Lambda: Обновить значение одной переменной"
Пример того, как можно создавать сущности в Kubernetes, используя AWS Lambda. Функция будет на Python3, так что воспользуемся Kubernetes Python Client Больше примеров по использованию можно найти тут. Так как AWS Lambda не поддерживает данный пакет, упакуем в нашу функцию модули "kubernetes" и "boto3". "boto3" понадобится для обращения в AWS SSM, где будет хранится kubeconfig …
Продолжить читать "AWS — Lambda: kubectl"
При попытке выполнить 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""