ar
Feedback
AWS Notes

AWS Notes

الذهاب إلى القناة على Telegram

AWS Notes — Amazon Web Services Educational and Information Channel Chat: https://t.me/aws_notes_chat Contacts: @apple_rom, https://www.linkedin.com/in/roman-siewko/ No ads.

إظهار المزيد
5 797
المشتركون
لا توجد بيانات24 ساعات
-57 أيام
-330 أيام
أرشيف المشاركات
Официальные разъяснения по использованию появившейся возможности с помощью Conditions aws:CalledVia ограничивать IAM на уровне сервисов Амазона: https://aws.amazon.com/blogs/security/how-to-define-least-privileged-permissions-for-actions-called-by-aws-services/ Показывается на примере ограничения доступа к бакету лишь для Athena и в определённой VPC. Правда я б в последнем #bucket_policy использовал бы не Principal на роль, а Condition на организацию, но это уже по вкусу. #IAM

Лямбда теперь тоже входит в Savings Plans: https://aws.amazon.com/blogs/aws/savings-plan-update-save-up-to-17-on-your-lambda-workloads/ Т.е. если у вас активно и постоянно используется в окружениях Лямбды - можно купить скидку на 1 или 3 года, которая по-максимуму даст экономию до 17%. Важно отметить, что скидка распространяется и на другие сервисы Амазона, используеющие Лямбду, например, если вы работаете с SAM (Serverless Application Model), Step Functions или другие вещи, что под капотом запускают Лямбду (которая после попадает в ваш биллинг) — на всех них тоже будет распространяться скидка. Ну, а если вы уже купили Savings Plans для своих Fargate-ов, то ничего делать не нужно — за февраль (и далее) автоматически получите скидку на все свои Лямбды вместе с Fargate. #Lambda #Cost_Optimization

Форсирование создания ресурсов только через CloudFormation Если раньше создание ресурсов через CloudFormation было лишь рекомендацией и #best_practices, то теперь с помощью нового Condition параметра aws:CalledViaFirst это можно сделать требованием: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-calledviafirst Также, в продолжение предыдущего поста - можно защитить окружение от создания Терраформом. Не знаю зачем, но можно. :) #IAM #SCP #Condition #CloudFormation

CloudFormation vs Terraform И вновь продолжается бой: https://globaldatanet.com/blog/cloudformation-vs-terraform Свежая (2020г.) таблица сравнения фич CloudFormation и Terraform. Если у вас есть свои соображения по каким-то пунктам (у меня, вот, есть) — пишите в чат (кнопка комментировать). #info #comparison #CloudFormation #Terraform

S3 и защита от копирования (обнаружение утечки данных) Когда в приватном бакете находятся важные данные и вам нужно максимально быстро узнать, если кто-то вдруг получил к ним доступ - такая задача решается с помощью CloudTrail + Events (CloudWatch Events или EventsBridge): https://darkbit.io/blog/2020/02/18/simple-dlp-for-amazon-s3 Включаем CloudTrail, создаём SNS топик, запускаем в него эвенты на CopyObject с помощью EventsBridge, и прикручиваем лямбду, чтобы слала алерты сразу в Slack. Предотвратить копирование так не получится, однако смысл в том, что мы можем контролировать и если кто-то поломает какую-то часть нашей системы, попытавшись скопировать в легальное место (например, какой-то "нормальный", но поломанный аккаунт организации) - мы об этом сможем узнать и принять какие-то действия. p.s. DLP = Data Loss Prevention #security #s3 #EventsBridge #DLP

Сравнение AWS сервисов: https://tutorialsdojo.com/comparison-of-aws-services/ Особо актуально для тех, кто готовится к сертификации. #AWS_Certification

При создании ES (Amazon Elasticsearch Service) кластера, выбирая тип инстанса нужно учитывать, что слабые виртуалки под него имеют ограничения по макимальному размеру диска. Например, поставив слабенькую t2.medium виртуалку - не получится к ней подцепить диск больше 35 GB. И если в консоли это хоть как-то видно (но тоже плохо), то при написании шаблонов или каких-то скриптов, ошибка вылезет лишь при их отработке. Потому лучше сразу зайти сюда: https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/aes-limits.html#ebsresource И выбрать нужно сочетание «тип виртуалки – объём диска». #ES

Временное выключение масштабирования AutoScaling Group Теперь есть удобная возможность отключить на время масштабирование ASG: https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-enable-disable-scaling-policy.html И включить полиси масштабирования после, когда потребуется. #AutoScaling

Zone ID vs Zone Name Подзоны (Availabilty Zones) имеют свои уникальные имена (Zone Name), например, us-east-1d, us-east-1f, eu-central-1a, eu-central-1b и т.д. В общем случае для простоты можно считать, что такая подзона — это какой-то датацентр. Однако в реальности у разных аккаунтов какой-то eu-central-1b совсем не обязательно будет один и тот же датацентр — набор соответствий «реальный датацентр – имя (Zone Name)» генерируется случайным образом при создании аккаунта. Почему так сделано? Всё просто. Если бы не было такой случайности, то ваши скрипты, одинаково настроенные на очевидные по алфавиту us-east-1 и us-east-1b никогда бы не загрузили датацентры us-east-1e и не так давно появившийся us-east-1f. Перемешивание всё решает. Итого – одна и та же подсеть в us-east-1a у каждого AWS аккаунта в реальности будет своя (может совпасть лишь случайным образом, но скорее нет). Shared VPC Однако с появлением Resource Access Manager и его возможности шарить ресурсы, в том числе VPC (точней подсети) возникла проблема — мы таки должны иметь возможность совмещать реальные подсети, т.е. чтобы был механизм узнать, что это один и тот же датацентр. Это для того, чтобы логика приложений, работающих на таких шареных подсетках, не страдала - чтобы не получалось дополнительных задержек и трафика между случайным образом выбранных датацентров. Чтобы решить эту проблему к Zone Name добавили Zone ID - реальные идентификаторы, которые соотносятся с конкретным датацентром. Так и волки остались целы — старые скрипты не нужно переписывать и в общем случае получается случайный порядок. И овцы целы — если мы хотим получить реальное соответствие, смотрим Zone ID и ориентируемся на подсетки у него, а не на Zone Name. В результате, если вам потребуется автоматизировать что-то для VPC Sharing - ориентируйтесь и закладывайте в свои скрипты именно Zone ID, который всегда можно получить для нужной VPC через стандартную команду describe-availability-zones.

PCI DSS + Security Hub В Security Hub реализаована частичная поддержка PCI DSS (стандарта безопасности платёжных карт): https://aws.amazon.com/blogs/security/how-to-use-the-aws-security-hub-pci-dss-v3-2-1-standard/ Детальное описание реализованных 32 пунктов из PCI DSS 3.2.1 в официальной документации: https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-pci-controls.html #security

Отличная шпаргалка для тех, кто готовится к AWS сертификации: https://tutorialsdojo.com/aws-cheat-sheets/ #AWS_Certification

Понимаю, что уже понедельник, но это прекрасно: https://twitter.com/ScribblingOn/status/1228758330769903618 Литературный перевод: Никакой ваш предыдущий жизненный опыт не подготовит вас к использованию AWS консоли. Ни-ка-кой. #AWS_Console

Есть ли поддержка IPv6 в вашем AWS-окружении? #опрос

EBS Volumes + Multi-Attach Теперь на смешной вопрос новичков, а можно ли примонтировать один EBS диск к двум инстансам, вам придётся сдержать свой сарказм и ответить - да, можно: https://aws.amazon.com/blogs/aws/new-multi-attach-for-provisioned-iops-io1-amazon-ebs-volumes/ Nitro-based системы продолжают удивлять и даже, вот, как теперь, обескураживать. Действительно, теперь можно элементарно подцепить один диск к нескольким инстансам. Они все смогут туда и писать и читать как на обычный диск. Просто сказка! Подводные камни EBS io1 Volumes Multi-Attach Ох, их есть, всё не просто так во всех смыслах. Цена Ну, для начала, собственно, это лишь для io1 (Provisioned IOPS дисков), т.е., как минимум, банально дороже (по сравнению с gp2 General Purpose SSD). Как минимум на треть для больших объёмов и в разы для маленьких. Но тут понятно и каждый сможет выбрать и посчитать. EFS Killer? (спойлер - нет) Далее - консистентность. Возможность монтировать к нескольким инстансам теперь есть, но кто позаботится о том, чтобы несколько пишущих одновременно на такой диск не потёрли сделанное соседом? Ответ - вы, ваше приложение. Вам дали возможность, а вот, чтобы было всё пучком - давайте, уж, сами. А если нет - используйте EFS, где за вас такое (с)делает Амазон. В том числе поэтому выход данной фичи не заменит (и не убьёт) EFS, которой мы пользовались раньше для реализации подобного функционала. Опять же, EFS это MultiAZ, а диск, понятно, находится в какой-то конкретной одной подзоне. И, наконец, EFS масштабируется по объёму, что не сделает EBS Multi-Attach. Так что, нет, EFS никуда не денется. Хотя, конечно, для простых случаев, его можно будет заменить. Файловая система В примере по ссылке выше лихо показывается, как такое делается на файловой системе XFS, которая ничего не знает про кластерность и не заботится о подобных вещах. Если вы озаботитесь - тогда это OCFS или GFS2. Способы применения Однако, если мы подцепим диск и настроим, чтобы каждый инстанс писал в свою директорию (например, дружно складывая на такой логи с именем хоста в пути) - получим простую (с той же XFS) и при этом рабочую конструкцию. Или когда один пишет, а все остальные лишь читают. И куча других вариантов, где, собственно, и получается, что Вы забодитесь о консистентности (учитывая возможные проблемы чтения/записи, а потому избегая их возникновения способом взаимодействия). Сходу видятся способы применения для Warm DR - это когда основная система трудится, а другая стоит под парами и готова сразу же подхватить знамя, как только упадёт главная (и для этого к ней примонтирован тот же диск, с которым она не работает, пока работает-жива основная). Опять же кубернетовское общество сейчас возрадуется и наверняка что-то понапридумывает для задействования в качестве Persistent Storage. В общем, применений Multi-Attach for Provisioned IOPS (io1) EBS Volumes наверняка будет не мало - поделитесь своими вариантами в комментариях. В любом случае - отличная фича, нужно осваивать. #EBS

Кому нужны подробности: bad gateway также переводится как "плохой роутер" (это он слева на картинке). Также напомню, что спросить, если что (подробности), можно в чате канала (да, такой есть - ссылка лежит в описании канала или кнопка комментировать под постом). В частности, там недавно был отличный вопрос по подробностям работы SSM в ABAC схеме и другие вещи, которые неудобно спамить сюда.

Bad gateway #пятничное

ECS task + init container Часто нужно, чтобы ECS task-а сначала была проиниацилизирована, а уже потом стартовал сервис. Пример, как такое можно сделать с помощью CloudFormation: https://github.com/applerom/cloudformation-examples/blob/master/ecs/task-with-init-container.yaml Код из рабочего конфига, но отредактирован (длинный, выброшено не относящееся к делу), чисто к тому, как такое можно сделать. В нём будут интересны следующие строчки.
ecsTaskWithInit:
 Type: AWS::ECS::TaskDefinition
 Properties:
...
   ContainerDefinitions:
   - Name:      !Ref StdNameInit
     Image:     !Ref DockerImage
     Essential: false
...
     Command:
       - sh
       - '-c'
       - !Sub |
         cd /home/my/app \
           && ./setup.py migrate --noinput \
           && ./setup.py rebuild_index --noinput
...
   - Name:      !Ref StdName
     Image:     !Ref DockerImage
     Essential: true
     Links:
       - !Ref StdNameInit
     Environment:
... Поднимаем task-у с двумя контейнерами - один будет для инициализации, а другой уже стартует сервис (это может быть один и тот же образ, лишь с разными переменными, как в данном случае). Контейнер для инициализации отрабатывает первым и умирает, потому ставим ему: Essential: false Он должен выполнить какую-то команду(-ы), запускаем следующим способом:
Command:
 - sh
 - '-c'
 - !Sub |
   cd /home/my/app \
     && ./setup.py migrate --noinput \
     && ./setup.py rebuild_index --noinput
После него должен стартовать основной контейнер, чтобы реализовать такую последовательность (сначала - init, а уже потому главный), добавляем зависимость от первого:
Links:
 - !Ref StdNameInit
И ставим главному контейнеру: Essential: true Так можно регулировать последовательность запуска и инициализировать что-то перед работой основного сервиса. #CloudFormation #templates #examples

Встроенный SSM-агент для ECS-Optimized Amazon Linux 2 AMI: https://aws.amazon.com/about-aws/whats-new/2020/02/amazon-ecs-optimized-linux-2-amis-come-pre-installed-aws-systems-manager-agent/ Теперь можно будет убрать из скриптов ставшую лишней строчку yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm (т.к. теперь SSM-агент идёт из коробки). #SSM #ECS #AMI

DaC - Diagram as Code Если вы не любите рисовать диаграммы (а нужно) и любите питон (и правильно), то у меня для вас есть выход: https://diagrams.mingrammer.com/docs/examples Он же вход, подход и переход. https://github.com/mingrammer/diagrams Согласитесь, ведь проще написать:
from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB

with Diagram("Web Service", show=False):
    ELB("lb") >> EC2("web") >> RDS("userdb")
...чем рисовать эти дурацкие квадратики и стрелочки (на картинке ниже). В общем, для тех, кто предпочитает кодить - отличный способ кодить в том числе диаграммы для своих отчётов и презентаций! #info #python