Полезная статья по установке SSM Manager - есть отсутствующий в документации список используемых SSM менеджером API.
Вообще, по теме доступа для SSM Manager, единственный найденный список, чтобы не использовать встроенную AmazonEC2RoleforSSM - policy для SSM.
В реальности это, видимо, компиляция из официальной доки, которая описыват лишь отдельные права (потому нужно проверять), а полные даются лишь присоединяемой (ManagedPolicy) ролью, чтобы это делать отдельно, а не давать в шаблоне изначально — иначе будут полные права, в частности, на s3, которые есть в AmazonEC2RoleforSSM. Итого, я пока оставляю свои, вручную подобратнные когда-то для SSM-agent (чтобы не было ошибок в логах - уже может устарело, нужно обновить):
Вообще, по теме доступа для SSM Manager, единственный найденный список, чтобы не использовать встроенную AmazonEC2RoleforSSM - policy для SSM.
В реальности это, видимо, компиляция из официальной доки, которая описыват лишь отдельные права (потому нужно проверять), а полные даются лишь присоединяемой (ManagedPolicy) ролью, чтобы это делать отдельно, а не давать в шаблоне изначально — иначе будут полные права, в частности, на s3, которые есть в AmazonEC2RoleforSSM. Итого, я пока оставляю свои, вручную подобратнные когда-то для SSM-agent (чтобы не было ошибок в логах - уже может устарело, нужно обновить):
- PolicyName: amazon-ssm-agent#ssm #ssm_manager #policy #AmazonEC2RoleforSSM #check #todo
PolicyDocument:
Statement:
- Effect: Allow
Action:
- 'ssm:UpdateInstanceInformation'
- 'ssm:ListAssociations'
Resource:
- 'arn:aws:ec2:*:*:instance/*'
- 'arn:aws:ssm:*:*:*'
Easy Cloud
Setting Up AWS Systems Manager
This section describes tasks and prerequisites for setting up AWS Systems Manager. Use the following table to help you get started.
What do you want to do with Systems Manager?
Set up tasks
Verify...
What do you want to do with Systems Manager?
Set up tasks
Verify...
Получаем последние версии AMI ID с помощью SSM Parameter Store.
Amazon Linux 2:
#CloudFormation #ami #ami_id #ssm #ssm_parameter
Amazon Linux 2:
LatestAmiId:
Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
Description: Latest Amazon Linux 2 AMI ID
Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2
...ImageId: !Ref LatestAmiId
ECS-optimized:LatestEcsAmiId:
Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
Description: Latest ECS-optimized 2 AMI ID
Default: /aws/service/ecs/optimized-ami/amazon-linux/recommended/image_id
#CloudFormation #ami #ami_id #ssm #ssm_parameter
Amazon
Query for the latest Amazon Linux AMI IDs using AWS Systems Manager Parameter Store | Amazon Web Services
This post is courtesy of Arend Castelein, Software Development Engineer – AWS Want a simpler way to query for the latest Amazon Linux AMI? AWS Systems Manager Parameter Store already allows for querying the latest Windows AMI. Now, support has been expanded…
Troposphere - The #troposhere library allows for easier creation of the AWS CloudFormation JSON by writing Python code to describe the AWS resources.
Попытка упростить создание CloudFormation шаблонов (поддерживается также OpenStack). Питонистам может быть полезным, однако на выходе лишь JSON. В общем, для тех, кто не осилил Terraform и ещё не перешёл на Kubernetes.
#CloudFormation #openstack
Попытка упростить создание CloudFormation шаблонов (поддерживается также OpenStack). Питонистам может быть полезным, однако на выходе лишь JSON. В общем, для тех, кто не осилил Terraform и ещё не перешёл на Kubernetes.
#CloudFormation #openstack
GitHub
GitHub - cloudtools/troposphere: troposphere - Python library to create AWS CloudFormation descriptions
troposphere - Python library to create AWS CloudFormation descriptions - cloudtools/troposphere
Stacker is a tool and library used to create & update multiple CloudFormation stacks.
Весьма интересная штука для работы с большим количеством стэков. Написана поверх #troposhere и может быть отличным решением для CI/CD каких-то проектов, не использующих своих централизованных решений.
#stacker #CloudFormation #multiple_stacks
Весьма интересная штука для работы с большим количеством стэков. Написана поверх #troposhere и может быть отличным решением для CI/CD каких-то проектов, не использующих своих централизованных решений.
#stacker #CloudFormation #multiple_stacks
GitHub
GitHub - cloudtools/stacker: An AWS CloudFormation Stack orchestrator/manager.
An AWS CloudFormation Stack orchestrator/manager. Contribute to cloudtools/stacker development by creating an account on GitHub.
Design VPC #best_practices или как разбить на подсетки VPC, какую схему выбрать для dev/stg/prod, как грамотно организовать VPC для разных целей. Рекомендуемые ссылки почитать:
- Официальная дока
- Пошаговые инструкции с примерами для консоли и AWS CLI (не совсем про дизайн, но может быть полезно)
- Базовые понятия и общие рекомендации (13 пунктов)
- Старенькая, но тоже можно глянуть
- Тоже старенькая, но весьма подробная (25 пунктов)
- Полезное обсуждение на Reddit по вопросу разбивке на CIDR-blocks
- Не про VPC, но полезные общие практики AWS Cloud Design Patterns
#vpc #design #vpc_design #cidr
- Официальная дока
- Пошаговые инструкции с примерами для консоли и AWS CLI (не совсем про дизайн, но может быть полезно)
- Базовые понятия и общие рекомендации (13 пунктов)
- Старенькая, но тоже можно глянуть
- Тоже старенькая, но весьма подробная (25 пунктов)
- Полезное обсуждение на Reddit по вопросу разбивке на CIDR-blocks
- Не про VPC, но полезные общие практики AWS Cloud Design Patterns
#vpc #design #vpc_design #cidr
Amazon
Architecture - Building a Modular and Scalable Virtual Network Architecture with Amazon VPC
Architecture for highly available, modular Amazon VPC architecture on the AWS Cloud, overview of relevant AWS services, and best practices.
Большой сборник примеров шаблонов от самого амазона. Очень стоит просмотреть при вопросах реализации каких-то фрагментов - все забывают, что есть первоисточник.
#CloudFormation #templates #useit
#CloudFormation #templates #useit
GitHub
GitHub - aws-cloudformation/aws-cloudformation-templates: A collection of useful CloudFormation templates
A collection of useful CloudFormation templates . Contribute to aws-cloudformation/aws-cloudformation-templates development by creating an account on GitHub.
VPC endpoints есть не для всех сервисов, поэтому не все могут работать чисто в VPC.
#vpc #vpc_endpoints
#vpc #vpc_endpoints
Amazon
AWS PrivateLink concepts - Amazon Virtual Private Cloud
Use AWS PrivateLink to establish connectivity between the resources in your VPC private subnets and VPC endpoint services that are outside your VPC.
Для отладки проблем на AWS - мои #best_practices:
- включить логирование с помощью awslogs
- включить vpc flow logs (их можно/нужно складывать в ES для просмотра)
- не забывать / проверить права Network ACL
- не забывать про исходящий трафик, который может быть почему-то закрыт
- смотреть в awslogs-логах на инстансе с проблемами - каких конкретно прав не хватает сервисам типа SSM
- для S3 не забывать про зависимость от регионов
- для cross-account работы S3 не забывать, что у аккаунта из которого идёт доступ даже админу нужно дать права на s3://bucket-in-other-acc (т.к. по умолчанию лишь на свои #check_it)
- не забывать про Route Tables, особенно при VPC-пиринге в разные подсети
- не забывать про текущие ограничения некоторых сервисов, что не всё может делаться через CloudFormation и что новообъявленные фичи не сразу имплементируются (в CloudFormation + зависит от региона)
- не забывать про отличие IAM и S3 policy как resource-based
- не забывать, что для public-ресурсов (например, ES) нельзя использовать IAM role (только user + credentials и уже у юзера может быть роль) - для IAM role нужно использовать ресурсы в VPC
#trace #logs #todo #use_it
- включить логирование с помощью awslogs
- включить vpc flow logs (их можно/нужно складывать в ES для просмотра)
- не забывать / проверить права Network ACL
- не забывать про исходящий трафик, который может быть почему-то закрыт
- смотреть в awslogs-логах на инстансе с проблемами - каких конкретно прав не хватает сервисам типа SSM
- для S3 не забывать про зависимость от регионов
- для cross-account работы S3 не забывать, что у аккаунта из которого идёт доступ даже админу нужно дать права на s3://bucket-in-other-acc (т.к. по умолчанию лишь на свои #check_it)
- не забывать про Route Tables, особенно при VPC-пиринге в разные подсети
- не забывать про текущие ограничения некоторых сервисов, что не всё может делаться через CloudFormation и что новообъявленные фичи не сразу имплементируются (в CloudFormation + зависит от региона)
- не забывать про отличие IAM и S3 policy как resource-based
- не забывать, что для public-ресурсов (например, ES) нельзя использовать IAM role (только user + credentials и уже у юзера может быть роль) - для IAM role нужно использовать ресурсы в VPC
#trace #logs #todo #use_it
Чтобы в #ECS скопировать #task_definition через JSON и потом вставить это при создании другой #task_definition (т.е. сделать условный экспорт-импорт в консоли) - нужно удалить в полученном (скопированном) JSON следующие переменные:
Иначе #error: Should only contain "family", "containerDefinitions", "volumes", "taskRoleArn", "networkMode", "placementConstraints", "requiresCompatibilities", "cpu", "memory", "executionRoleArn".
compatibilities
requiresAttributes
taskDefinitionArn
revision
statusИначе #error: Should only contain "family", "containerDefinitions", "volumes", "taskRoleArn", "networkMode", "placementConstraints", "requiresCompatibilities", "cpu", "memory", "executionRoleArn".
#recommendation - периодически обновлять #AMI (в т.ч. докерных образов, как минимум сервисного) - раз в квартал (так обычно выходят обновления Amazon Linux).
Для срочных патчей (очередная критическая уязвимость чего бы то ни было) - отработать процедуру запуска критических обновлений.
Для срочных патчей (очередная критическая уязвимость чего бы то ни было) - отработать процедуру запуска критических обновлений.
#issue При обновлении #AMI для #ECS Autoscaling group через шаблон - есть проблема для действующих #prod систем. #CloudFormation не учитывает скорости деплоя убиваемых докеров (#task_definition) - новые инстансы (с обновлённым AMI) поднимаются очень быстро и как только они становятся доступными, предыдущие (ещё работающие с набитыми докерами) тупо терминируются. В результате появляется #downtime - пока на поднявшиеся новые инстансы задеплоятся убитые вместе с инстансами докеры.
Обсуждение этой проблемы на Reddit.
Обсуждение этой проблемы на Reddit.
reddit
Refreshing an Amazon ECS Container Instance Cluster With a New AMI
Posted in r/aws by u/scarhill • 29 points and 12 comments
Когда в #CloudFormation #templates нужно иметь переменное количество параметров, то можно использовать Fn::Transform:
#transform можно использовать и для отдельных параметров и для блоков.
Targets:
- Id: !Ref SwarmMaster
Port: 888
- Id: !Ref SwarmWorker1
Port: 888
Fn::Transform:
Name: AWS::Include
Parameters:
Location: !If [ IsProd, !Ref ProdS3linkToYaml, !Ref DevS3linkToYaml ]#transform можно использовать и для отдельных параметров и для блоков.
Amazon
AWS::Include transform - AWS CloudFormation
Learn about how to create reusable Transform function snippets and include them in one or more AWS CloudFormation templates using the AWS::Include transform.