CloudFormation part 1 Flashcards

1
Q

Stack Policies
Зачем нужны?
В каком формате объявлены?
Чем отличаются от обычный resource-based policy?

A

Чтобы защитить некоторые ресурсы от недопустимого обновления
В формате JSON с точностью как обычные resource-based policy - только для CloudFormation Stack’а

Отличаются только тем, что пока их (Stack Policies) никто ещё НЕ объявил, то обновлять (модифицировать) стэк могут ВСЕ
+ когда создаётся Stack Policy по-умолчанию (“пустая”), то она наоборот ЗАПРЕЩАЕТ ВСЕМ модифицировать (нужно явно указать, что разрешено)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

DeletionPolicy
Какие значения она может иметь?
Она относится к целому стэку?

Где она объявляется и в виде чего?
Что оно обозначает?

Какое значение имеет по-умолчанию?
Почему так легко забыть, что это такое?

A

Может иметь значения Delete / Retain / Snapshot
Относится к конкретному ресурсу с стэке (у каждого ресурса в стэке есть своя Deletion Policy)

Объявляется в yaml файле там же, где все поля ресурса в виде поля “DeletionPolicy”
Обозначает, будет ли ресурс удалён при удалении стэка (или останется или удалится с предварительным созданием snapshot’а)

По-умолчанию имеет значение “Delete”
Пока в yaml template’е явно НЕ указано другое значение, то будет по-умолчанию “Delete”
Поэтому легко забыть, что она вообще есть (по-умолчанию при удалении стэка все его ресурсы, имеющие поле Delete, будут удалены)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

В чём особенность S3 bucket’ов в плане удаления через CloudFormation?

Как решить эту проблему?

A

Пока в бакете есть S3 objects, то он НЕ будет удалён (даже если DeletionPolicy: Delete)

  • предварительно удалить все объекты в S3 bucket’е (опустошить бакет)
  • создать Custom CloudFormation ресурс через Лямбду и использовать его вместо S3
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Для каких ресурсов доступен DeletionPolicy: Snapshot?

A

Только для определённых
Базы данных, EBS volumes, ElastiCache, кластеры с данными

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Что такое Termination Protection?
Чем она отличается от DeletionPolicy?
Чем она отличается от StackPolicy?

A

Termination Protection - это булевская property, которую можно активировать для защиты от случайного удаления стэка.
Тогда для удаления стэка нужно иметь права на
- отключение этой TerminationProtection
- удаление самого стэка

DeletionPolicy указывается для отдельных ресурсов, а НЕ для стэка целиком. И указывает, что произойдёт с ресурсом при удалении стэка. А НЕ препятствует удалению стэка.

StackPolicy указывает, кто может модифицировать стэк. А НЕ препятствует удалению стэка.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Service Role
Что это такое?
Как использовать в рамках работы с CloudFormation?

A
  • сам user НЕ должен иметь право на создание AWS ресурсов (S3, EC2, etc)
  • вместо этого, user должен создать специальную роль в сервисе IAM - и передать эту роль сервису CloudFormation
    Такая роль называется Service Role

Она создаётся для сервиса, НЕ для юзера.
А в данном случае - именно для сервиса CloudFormation
Эта Service Role содержит права на создание AWS ресурсов (S3, EC2, etc)

  • user должен иметь ТОЛЬКО право передать эту роль (iam:PassRole) сервису CloudFormation
  • а сервис CloudFormation будет выполнять создание ресурсов согласно полученной роли
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Capabilities CAPABILITY_NAMED_IAM, CAPABILITY_IAM, CAPABILITY_AUTO_EXPAND
Зачем они нужны в CloudFormation?
Зачем нужна каждая из них?
Что значит “InsufficientCapabilitiesException”?

A

Capability - птичка под пунктом “я понимаю, что делаю и к чему это может привести”

  • CAPABILITY_NAMED_IAM и CAPABILITY_IAM - значит CloudFormation при применении стэка внесёт изменения в IAM (roles, users, policies, groups, etc)
  • CAPABILITY_AUTO_EXPAND - значит CloudFormation перед применением будет ДИНАМИЧЕСКИ расширен (expanded) контентом используемого Nested Stack’а

“InsufficientCapabilitiesException” - этот exception происходит, когда CloudFormation НЕ передали нужную Capability для выполнения операции

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Custom Resources
Для каких целей используются?
Как связано с S3 bucket?
Какой синтаксис объявления?
Через какие сервисы обычно реализуют Custom Resource?
Что за поле ServiceToken?

A
  • объявить (те немногочисленные) AWS ресурсы, которые пока ещё НЕ поддерживает CloudFormation
  • объявить НЕ AWS ресурсы (on-premises, 3-rd party)
  • объявить кастомный скрипт (через Лямбду), который будет запущен во время создания / обновления / удаления

Use-case с Лямбдой и S3 bucket’ом
Например, кастомный скрипт (реализованный в виде Лямбды) очистит содержимое S3 bucket’а перед удалением этого S3 bucket’а

AWS::CloudFormation::CustomResource или Custom::MyCustomResourceTypeName

Через Lambda или (редко) через SNS
Поле ServiceToken содержит ARN Лямбды/Топика

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Какие способы есть, чтобы задать порядок создания ресурсов?
А какие - удаления?

A
  • DependsOn атрибут
  • !Ref или !GetAtt intrinsic функции

Удаление соблюдает те же конструкции, что и создание, но в ОБРАТНОМ порядке

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

AppConfig
Что позволяет сделать?
В чём удобство использования?
Что может выступать в роли App?
Что включает в себя Config?
Где может храниться Config?
Как можно валидировать Config?

A

AWS AppConfig позволяет содержать конфигурацию приложения в отдельном месте.

Валидировать и деплоить Dynamic Configurations,
изменяя конфигурацию приложения БЕЗ рестарта приложения.

Приложением может выступать EC2, Lambda, ECS, EKS, etc
Config может включать фиче-флаги, block lists

Config может храниться в
- SSM Parameter Store
- SSM Documents
- S3 bucket

2 способа валидировать конфигурации в AppConfig
- Соответствие JSON schema
- Lambda функция проверит соответствие семантике (более гибко)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly