我想创build一个ASG,这样我就可以将现有的EBS卷(因为我拥有这些卷上的持久数据)重用到通过ASG实例化的新EC2实例。 这可能吗?
更新从评论复制
为了澄清我原来的问题,我不想同时将EBS卷附加到两个EC2实例。 相反,当一个EC2实例终止时,我想用以前的EBS卷启动一个新的EC2实例,而不是创build一个全新的EBS卷
没有。
自动调节组启动多个EC2实例。 每个EBS卷只能连接到一个EC2实例。 所以你不应该这样做,这可能是不可能的。 如果你有多个卷和多个实例,你可能会实现一些复杂的逻辑来使它工作,但是你不应该 – 简单的架构往往是最好的。
您可以执行的操作是通过ASG访问的NFS共享数据的EC2实例,或者您可以使用AWS Elastic File System ,但请注意延迟相对较高。
如果你扩展你的需求和用例,你可能会得到更多有用的答案。
更新
根据附加要求,这可能是可能的。 这不是一个标准的要求,所以我不认为有明确的支持。
我可能会考虑编写一些与EC2实例关联的启动脚本,然后安装它。 这里有个答案 ,可能有些用处。 使用SNS和Lambda进行某种设置可能是可能的,但EC2实例可能仍然需要运行一些东西来映射卷。
其他人可能会给你更多的信息,我从来没有这样做过。
海事组织,你可以尝试这样做(我做了类似的东西,但与弹性networking接口)。 这需要了解AWS CloudFormation服务或AWS CLI的相关知识:
AutoScaling group设置为1.这将确保唯一的实例,当它变得不健康将被一个新的健康的一个取代。 LaunchConfiguration资源的UserData部分附加到实例。 UserData将在卷再次可用后执行(实例是否会“快速”终止?)。 或者,您可以执行一些状态检查,如描述卷元数据,检查其状态以及何时不使用它重新附加它。 Linux bash shell中的一个简单例子:
INST_ID='i-xyzxyzxyz' VOL_ID='vol-xyzxyzxyz' VOL_STATUS='' until [ "x$VOLUME_STATUS" == "xattached" ]; do VOL_STATUS=$(aws ec2 describe-volumes --volume-ids $VOL_ID --query 'Volumes[0].State') sleep 5 done aws ec2 attach-volume --volume-id $VOL_ID --instance-id $INST_ID --device /dev/sdh
InService状态之前,您可以附加该卷。 它将保持这种状态,直到你告诉组继续(否则它默认有1小时的超时)。 这是用于向外扩展的事件,或者是一个新实例启动的时候。 当它被终止或缩放时,它也可以等待一个信号。 您将分离音量并发出信号继续终止。 AWS CLI命令都假定您的实例已附加了适当的IAM实例configuration文件,该configuration文件允许附加/分解EBS卷或描述它们。