获取AWS以在启动时自动将EC2卷附加到Ubuntu实例

时间:2019-04-28 05:36:16

标签: amazon-web-services amazon-ec2

我想附加一个EBS卷而不是快照作为我的竞价型实例的持久存储。我知道如何手动附加卷,挂载它并使它在重启后不受影响,但是如何在启动时自动附加该卷?

启动实例时我可以在用户数据中做些什么吗?

目前,我有一个AMI作为竞价型实例运行。我有一个单独的卷,该卷将持续存在,并且既用于实例的输入又用于保存结果。我一次只实例一次。 AMI将驱动器安装在/ data。为了使挂载不重启,我对/etc/fstab进行了编辑,包括:

UUID=MY_VOLUME_UUID /data xfs defaults,nofail 0 2

再次编辑以显示Passatizhi的解决方案

我在EC2启动向导的“配置实例详细信息”>“高级详细信息”>“用户数据”部分中添加了以下内容:

#!/bin/bash
INSTANCE_ID=$(curl 169.254.169.254/latest/meta-data/instance-id) 
export AWS_DEFAULT_REGION=$(curl 169.254.169.254/latest/meta-data/placement/availability-zone | sed 's/[a-z]$//') 
/home/ubuntu/miniconda3/bin/aws ec2 attach-volume --volume-id vol-myVol12345 --instance-id $INSTANCE_ID --device /dev/sdf 
sleep 10 
sudo mkdir -p /data 
sudo mount /dev/nvme1n1 /data

注意: 我需要将完整路径添加到aws才能使其正常工作。另外,由于ami已经具有/ data设置,因此我不需要sudo mkdir -p /data

1 个答案:

答案 0 :(得分:0)

#!/bin/bash INSTANCE_ID=$(curl 169.254.169.254/latest/meta-data/instance-id) 
export AWS_DEFAULT_REGION=$(curl 169.254.169.254/latest/meta-data/placement/availability-zone | sed 's/[a-z]$//')
/bin/aws ec2 attach-volume --volume-id vol-0fdb738415896f8f6 --instance-id $INSTANCE_ID --device /dev/sdf
sleep 10
sudo mkdir -p /data
sudo mount /dev/nvme1n1 /data

尝试使用/ bin / aws而不是aws。我使用了t3.small,所以/ dev / nvme1n1