Как установить «моментальный снимок при удалении» для тома AWS EBS, созданного с помощью LaunchTemplate - PullRequest
0 голосов
/ 08 июля 2020

В облаке Amazon Web Services (AWS) я хочу создать шаблон запуска, который запускает AMI с томом root EBS и отдельным томом данных EBS. При удалении экземпляра я хочу удалить оба тома , но сначала я хочу, чтобы для тома данных был сделан снимок с использованием DeletionPolicy из Snapshot, а не Delete или Retain. Я хотел бы создать этот шаблон запуска с AWS CDK в Python, но в крайнем случае было бы полезно, если бы я мог настроить тома EBS таким образом любыми способами, включая сценарий запускать после запуска экземпляра.

В настоящее время у меня есть шаблон запуска, настроенный для создания томов EBS и их удаления при завершении работы AMI. Все идет нормально. Чего я не могу найти, так это того, чтобы сделать снимок тома «данных» перед его удалением. Самое близкое, что я могу сделать, - это запустить сценарий для ответа на сигнал завершения экземпляра, инициируя моментальный снимок, но я беспокоюсь, что это ненадежно.

Документация AWS CloudFormation утверждает, что вы можно установить DeletionPolicy из Snapshot на AWS::EC2::Volume. Обычно я не могу понять, как заставить это работать для случайного тома EBS, подключенного к экземпляру EC2 в качестве тома данных (не root или тома AMI).

  • Я не вижу места в консоли AWS, чтобы установить DeletionPolicy
  • Я не вижу места в aws CLI для чтения DeletionPolicy
  • Глядя на LaunchTemplate , я не вижу места для установки этой политики

Так что, возможно, я неправильно думаю об этом, или, возможно, документация просто вводит в заблуждение. После изучения документации в течение нескольких часов, мне осталось поверить, что это не реальный вариант, а скорее способ включить «снимок при удалении» для кластеров RDS.

Как я могу заставить это работать для обычного инстанса EC2?

1 Ответ

0 голосов
/ 12 июля 2020

Вы также можете попробовать использовать терраформ, если вам это удобно. Пример:

    resource "aws_ebs_volume" "example" {
  availability_zone = "us-west-2a"
  size              = 40

  tags = {
    Name = "HelloWorld"
  }
}

resource "aws_ebs_snapshot" "example_snapshot" {
  volume_id = "${aws_ebs_volume.example.id}"

  tags = {
    Name = "HelloWorld_snap"
  }
}

Итак, когда том будет удален, моментальный снимок будет там, и вы сможете восстановить данные из него в любое время.

вы можете установить для параметра DeleteOnTermination значение true или false. Когда инстанс завершается, Amazon Elasti c Compute Cloud (Amazon EC2) использует значение атрибута DeleteOnTermination для каждого присоединенного тома EBS, чтобы определить, следует ли сохранить или удалить том при завершении работы инстанса. По умолчанию для атрибута DeleteOnTermination для тома root экземпляра установлено значение true, но для всех других типов томов установлено значение false.

...