将 EBS 卷附加到 AutoScalingGroup

Ahu*_*evo 2 amazon-ec2 amazon-web-services aws-cloudformation

我需要设置一个 EC2 实例并通过 CloudFormation 附加一个现有的 EBS 卷。

目前,EC2 实例有一个 AutoScalingGroup,并且minsize=1maxsize=1就位。我无法将 EBS 卷附加到 AutoScalingGroup 的 LaunchConfiguration。原因是我找不到类似于 AWS::EC2::VolumeAttachment 的选项。

问题:

  • 当前的最小值和最大值为 1 的设置是否有意义?目标是在发生故障时自动重新创建虚拟机。有没有更好的办法?
  • 我可以使用当前 AutoScaling 设置通过 CloudFormation 将 EBS 卷附加到实例吗?

Joh*_*ein 9

您似乎希望将现有 Amazon EBS 卷附加到由 Auto Scaling 启动的 Amazon EC2 实例。

使用最小/最大为 1 的 Auto Scaling 是一种常见做法。这可以确保实例即使发生故障或可用区发生故障也能运行。

但是,我认为您不会找到 Auto Scaling 或 CloudFormation 选项来附加现有的 Amazon EBS 卷。Auto Scaling 组用于启动大量相同的实例以进行水平扩展。他们将拥有自己的 EBS 卷,但不会“共享”EBS 卷。

您可以使用在实例启动时运行的用户数据脚本,而不是尝试通过 Auto Scaling / CloudFormation 配置附加它。它可以使用 AWS CLI 将卷附加到自身。该脚本需要通过元数据检索实例的 InstanceId,然后将其传递给附件调用。


sub*_*pta 5

我没有找到启动配置的卷附件选项,因此关于您的第二个问题,我认为使用用户数据会更容易。

在用户数据中,您可以instanceid使用以下命令提取:

$instanceId = Invoke-WebRequest -Uri http://169.254.169.254/latest/meta-data/instance-id 
Run Code Online (Sandbox Code Playgroud)

然后您可以使用 AWS CLI 命令附加 EBS 卷。例子:

aws ec2 attach-volume --volume-id vol-1234567890abcdef0 --instance-id i-01474ef662b89480 --device /dev/sdf
Run Code Online (Sandbox Code Playgroud)

关于调试日志,您始终可以设置用户数据执行日志或将命令的输出重定向到文件以获取调试信息。