AWS Notes
#issue При обновлении #AMI для #ECS Autoscaling group через шаблон - есть проблема для действующих #prod систем. #CloudFormation не учитывает скорости деплоя убиваемых докеров (#task_definition) - новые инстансы (с обновлённым AMI) поднимаются очень быстро…
Для решения такой проблемы можно использовать специально обученную #Lambda, которая триггерится перед удалением инстанс в #ECS cluster, когда обновляется #AMI инстанса:
https://aws.amazon.com/blogs/compute/how-to-automate-container-instance-draining-in-amazon-ecs/
https://aws.amazon.com/blogs/compute/how-to-automate-container-instance-draining-in-amazon-ecs/
Amazon
How to Automate Container Instance Draining in Amazon ECS | Amazon Web Services
Update 24 Aug 2023: The approach described in this post relies on a recursive AWS Lambda function. Lambda announced a recursion control to detect and stop Lambda functions in July 2023. Accounts having recursive Lambda functions were automatically opted-out…
При планировании новых проектов стоит учитывать новые #AWS #region, которые есть сейчас и которые откроются в ближайшем будущем. Например, для питерских проектов может быть важным, что вскоре появится #AWS в Швеции, а для болгарских - что в Италии.
https://aws.amazon.com/about-aws/global-infrastructure/
https://aws.amazon.com/about-aws/global-infrastructure/
Не стоит забывать, что #aws_cli поддерживает linux pipes, а потому, например, для для #s3 многие операции с файлами в бакете можно делать без предварительного их сохранения (используя stdin/stdout):
https://loige.co/aws-command-line-s3-content-from-stdin-or-to-stdout/
https://loige.co/aws-command-line-s3-content-from-stdin-or-to-stdout/
loige.co
AWS Command line: S3 content from stdin or to stdout
The AWS CLI s3 cp command supports streaming content to and from S3 using stdin/stdout with the - argument. This enables powerful pipelines without intermediary files.
Это боль, когда у тебя больше пяти #AWS_accont (т.к. на текущий момент максимум 5 аккаунтов в history при переключении). Пока амазонозаводчики не порешали это у себя - можно использовать плагин под #Chrome для переключения ролей.
https://chrome.google.com/webstore/detail/aws-extend-switch-roles/jpmkfafbacpgapdghgdpembnojdlgkdl?hl=en
Такой же для #Firefox:
https://addons.mozilla.org/en-US/firefox/addon/aws-extend-switch-roles3/
https://chrome.google.com/webstore/detail/aws-extend-switch-roles/jpmkfafbacpgapdghgdpembnojdlgkdl?hl=en
Такой же для #Firefox:
https://addons.mozilla.org/en-US/firefox/addon/aws-extend-switch-roles3/
Google
AWS Extend Switch Roles - Chrome Web Store
Extend your AWS IAM switching roles. You can set the configuration like aws config format
Автоматизация преобразования #NVMe типов #EBS #volume вида
https://github.com/oogali/ebs-automatic-nvme-mapping
Проблема актуальна для новых Nitro-based виртуалок (C5/M5/T3/etc), где в качестве EBS используются NVMe block devices.
/dev/nvme0n1 в обычные /dev/xvdf:https://github.com/oogali/ebs-automatic-nvme-mapping
Проблема актуальна для новых Nitro-based виртуалок (C5/M5/T3/etc), где в качестве EBS используются NVMe block devices.
GitHub
GitHub - oogali/ebs-automatic-nvme-mapping: Automatic mapping of EBS volumes via NVMe block devices to standard block device paths
Automatic mapping of EBS volumes via NVMe block devices to standard block device paths - oogali/ebs-automatic-nvme-mapping
В случаях, когда нужно иметь #StaticIP для #ALB обычно используется #NLB перед ним (который имеет статический IP для каждой зоны) и #lambda, которая отрабатывает регистрации текущих IP у ALB в качестве целей для NLB.
https://aws.amazon.com/blogs/networking-and-content-delivery/using-static-ip-addresses-for-application-load-balancers/
С появлением AWS Global Accelerator можно упростить реализацию ALB Static IP, поставив перед ALB #Global_Accelerator (вместо NLB + Lambda). Решение "с перебором" (и более дороже), но может оказаться быстрым "на попробовать" и где-то более удобным в поддержке.
https://aws.amazon.com/blogs/networking-and-content-delivery/using-static-ip-addresses-for-application-load-balancers/
С появлением AWS Global Accelerator можно упростить реализацию ALB Static IP, поставив перед ALB #Global_Accelerator (вместо NLB + Lambda). Решение "с перебором" (и более дороже), но может оказаться быстрым "на попробовать" и где-то более удобным в поддержке.
Amazon
Using AWS Lambda to enable static IP addresses for Application Load Balancers | Amazon Web Services
Update: On September 27th, 2021, we launched Application Load Balancer(ALB)-type target groups for Network Load Balancer (NLB). With this launch, you can register ALB as a target of NLB to forward traffic from NLB to ALB without needing to actively manage…
В случаях, когда узким местом становится скорость работы #S3 - не забываем, что дефолтные настройки можно изменить:
https://docs.aws.amazon.com/cli/latest/topic/s3-config.html
Например, для бакетов, имеющих #S3_Accelerate (в то время как по дефолту use_accelerate_endpoint=
https://docs.aws.amazon.com/cli/latest/topic/s3-config.html
Например, для бакетов, имеющих #S3_Accelerate (в то время как по дефолту use_accelerate_endpoint=
false) или просто для увеличения скорости загрузки (или наоборот - для уменьшения нагрузки на виртуалку).
AWS Notes
В общем случае стоит избегать использования #IAM #ManagedPolicy, т.к. граждане в Амазоне не утруждают себя использованием ограниченных #permissions в них и запросто ставят "жирные" #policy. Например, в AmazonEC2RoleforSSM, которое рекомендуется для работы…
Чтобы использовать безопасные #iam_policy для #SSM #Session_Manager, придётся использовать длинную простыню правил:
https://github.com/applerom/cloudformation-examples/blob/master/ssm/ssm-manager-policy.yml
#security
https://github.com/applerom/cloudformation-examples/blob/master/ssm/ssm-manager-policy.yml
#security
GitHub
applerom/cloudformation-examples
AWS CloudFormation code examples. Contribute to applerom/cloudformation-examples development by creating an account on GitHub.
Очень полезный и детальный список #best_practices и #worst_practices или паттернов и анти-паттернов для современного #CI_CD.
https://www.gronau-it-cloud-computing.de/pattern-and-anti-pattern-cicd/
#design
https://www.gronau-it-cloud-computing.de/pattern-and-anti-pattern-cicd/
#design
Если вы умеете работать в #AWS_Console, но не умеете или лишь осваиваете #CloudFormation, то для вас #AWSConsoleRecorder может быть бесценной находкой.
https://github.com/iann0036/AWSConsoleRecorder
Вы делаете всё нужное в браузере с помощью плагина, а на выходе получаете готовый сценарий в виде команд, CloudFormation шаблона или других вещей, в частности #Terraform.
https://github.com/iann0036/AWSConsoleRecorder
Вы делаете всё нужное в браузере с помощью плагина, а на выходе получаете готовый сценарий в виде команд, CloudFormation шаблона или других вещей, в частности #Terraform.
GitHub
GitHub - iann0036/AWSConsoleRecorder: Records actions made in the AWS Management Console and outputs the equivalent CLI/SDK commands…
Records actions made in the AWS Management Console and outputs the equivalent CLI/SDK commands and CloudFormation/Terraform templates. - iann0036/AWSConsoleRecorder
Добавление в #ECR возможности тэгировать репозитории может поломать ваши сценарии, т.к. в #IAM добавилось новое #policy 'ecr:ListTagsForResource':
... error getting ECR repository tags: AccessDeniedException: User: ... is not authorized to perform: ecr:ListTagsForResource ...Amazon Web Services, Inc.
Amazon ECR now allows Repository Tagging
В прошлом году под Рождество выкатили AWS SSO, в этот раз таким подарком для меня может оказаться AWS Client VPN.
Amazon
Introducing AWS Client VPN to Securely Access AWS and On-Premises Resources
В частности, про #SSO — небольшая утилитка на Go для аутентификации с использованием #Shibboleth Identity Provider.
https://github.com/CUBoulder-OIT/aws-shib
https://github.com/CUBoulder-OIT/aws-shib
Использование секции #Rules в #CloudFormation #templates для дополнительной валидации входных параметров (например, чтобы проверить, что один параметр равен другому).
https://www.cloudar.be/awsblog/undocumented-feature-using-template-constraint-rules-in-cloudformation/
Работает лишь в консоли, но для случаев её использования может быть крайне удобным.
https://www.cloudar.be/awsblog/undocumented-feature-using-template-constraint-rules-in-cloudformation/
Rules:
ValidateEqual:
Assertions:
- AssertDescription: Both parameters must be the same
Assert:
"Fn::Equals":
- !Ref CanBeAnything
- !Ref MustBeTheSame
Работает лишь в консоли, но для случаев её использования может быть крайне удобным.
Cloudar
Undocumented feature: Using Template Constraint Rules in CloudFormation - Cloudar
Last month there was a post on the AWS Management Tools blog about how you can use Template Constraint Rules in CloudFormation. Template Constraints is a Service Catalog feature that allows you to validate the values of different parameters against each other.…