如何创建可以休眠的 ec2 实例?

han*_*ast 3 amazon-ec2 hibernation amazon-ami

我被困在存储阶段。它说:To use hibernation, encrypt the root volume.。但是我无法单击加密复选框,也没有找到任何加密根卷的方法。

han*_*ast 5

更新 2020-03

自从我在下面发帖以来发生了很多变化,休眠现在是小菜一碟。加密可以在 AWS 控制台的正常 ec2 创建流程中完成,也支持 Amazon Linux 2。

所有你需要知道的:

  • 并非所有实例类型都受支持,请参阅此处获取最新列表
  • 不支持 RAM > 150GB
  • 您的磁盘空间需要大于您的 RAM(因为 RAM 会在休眠时写入磁盘)

原帖:

最后我被困在了很多阶段,官方文档不知何故缺乏所以我想我会记录我的发现:

为了使实例休眠,它需要是C3、C4、C5、M3、M4、M5、R3、R4 或 R5 类型。此外,它需要是Amazon Linux 1 AMI(这可能已过时,请参阅此处以获取最新列表)。我从 Linux 2 AMI 开始并没有收到任何警告,直到它最终不起作用(仅在 /var/log/messages 中显示Suspend key pressed., Requested operation not supported, ignoring.),甚至他们建议的启用休眠的步骤也不起作用,因为ec2-hibinit-agent不是 Amazon Linux 2 上的可用数据包。

休眠需要加密启动卷。为了实现这一点,您需要在启动启动向导之前加密 AWS Linux 1 AMI :

  1. 使用 AWS 控制台创建 KMS 密钥
  2. 找到您所在地区的 AWS Linux 1(不是 2!)的 ami id,例如使用 ec2 启动向导。就我而言(eu-central-1)这是ami-0cfbf4f6db41068ac
  3. 创建您自己的加密 ami(将eu-central-1、ami和kms密钥替换为您自己的

 

aws ec2 copy-image --source-region eu-central-1 --source-image-id ami-0cfbf4f6db41068ac \
--region eu-central-1 --name "LinuxAMIEncrypted" --encrypted \
--kms-key-id arn:aws:kms:eu-central-1:123412341234:key/aaaaaaaa-1234-abce-abcd-1234abcdef01
Run Code Online (Sandbox Code Playgroud)

等待几分钟,直到您看到新的 AMI 出现在 EC2 -> AMIs 中

  1. 从AMIs(在 EC2 AWS 控制台中)启动您的新 AMI
  2. 选择 C3、C4、C5、M3、M4、M5、R3、R4 或 R5
  3. 点击 Enable hibernation as an additional stop behavior

要测试它:

  • tail -f /var/log/messages在 ec2 实例上运行以检查错误
  • aws ec2 stop-instances --instance-ids "i-…" --hibernate通过终端运行休眠,或者通过 aws 控制台运行

另外我在/var/log/messages以下位置看到了这个错误:

Agent hibernate - AccessDeniedException: User: arn:… is not authorized to perform: ssm:UpdateInstanceInformation on resource: ssm:UpdateInstanceInformation. 我需要附加AmazonEC2RoleforSSM并AmazonSSMAutomationRole消除这些错误。