当前位置: 首页 > 知识库问答 >
问题:

让AWS在启动时自动将EC2卷附加到Ubuntu实例

有耀
2023-03-14

我想附加一个EBS卷,而不是快照,作为我的spot实例的持久存储。我知道如何手动附加卷,挂载它,并使它在重新引导时生存下来,但我如何使它在启动时自动附加?

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

#!/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个答案

弘柏
2023-03-14
#!/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

 类似资料:
  • 我正面临一个与架构相关的问题: 我已经在ElasticBeanstalk中创建了一个新的环境,并将我的应用程序推到了那里。到目前为止一切都很好。我已经将其设置为。 我怎么想错了?什么是可能的解决办法或正确的做法? 出于某种原因,我认为使用S3不是正确的做法。

  • 问题内容: 我的服务器程序需要在EC2实例启动时启动。即时即时消息只是使用以下命令从我的SSH启动: 我尝试将其添加到.bashrc和/etc/rc.local文件中,但它们仅在我ssh进入时才起作用。 有人知道怎么做,以便在计算机启动时启动我的应用程序实例吗? 谢谢, 本 问题答案: 您可以创建如下脚本: 将您的脚本放在/etc/init.d目录下,然后使用以下命令: 通过使用有关 update

  • 我在连接EBS卷到我的Ubuntu EC2实例时遇到了问题。 以下是我所做的: > 从Amazon AWS控制台,我创建了一个150GB的EBS卷,并将其附加到Ubuntu11.10EC2实例。在EBS卷属性下,“附件”显示:“[我的Ubuntu实例id]://dev/sdf(附件)” 尝试在Ubuntu盒子上安装驱动器,它告诉我“mount:/dev/sdf不是块设备” 错误: mount:错误

  • 这是个新手问题。求求你,忍耐我。 我试图按照官方教程使用AWS SDK for JAVA创建一个实例。当谈到密钥对部分时,我会感到困惑: 通过这样做,我如何使用aws cli连接到我使用SDK创建的实例,我指的是如何定位。pem文件(如果它确实存在的话)。在使用代码创建ec2实例并通过aws cli管理它方面,我的逻辑是正确的吗?还是应该以相同的方式?!

  • 我试图通过Java代码启动一个EC2实例。我在我的项目中添加了这个maven依赖项: https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-ec2/1.11.308 有人能告诉我如何指定实例类型吗?