是否可以创建 EBS 卷并将其附加到同一个实例?boto 会有所帮助吗?
答案1
是的。将您的凭据设置为环境变量(AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
),安装boto
并启动 Python:
>>> import boto
>>> ec2 = boto.connect_ec2()
>>> reservations = ec2.get_all_instances()
>>> ins = reservations.instances[0] # say ins is *this* instance
>>> vol = ec2.create_volume(10, ins.placement)
>>> vol.attach(inst.id, '/dev/sdh')
u'attaching'
以上内容假设您只启动了一个实例。如果您知道您的实例 ID(您应该知道!),那么您可以简单地在所有实例上匹配所有预订的实例 ID。
最后,您可以简单地格式化您的卷并安装它:
# mkfs -t ext3 /dev/sdh
# mkdir /volume
# mount -t ext3 /dev/sdh /volume
答案2
我认为动态获取实例 ID 是更好的选择。您可以使用对实例中的以下 URL 发出 GET 请求来改进上述脚本。
http://169.254.169.254/2009-04-04/meta-data/instance-id
然后,您可以编写一个适用于所有实例的脚本。即使您一次只有一个实例,您也可以将此脚本包含在自定义 AMI 中,以便每个新实例都可以在需要时为自己提供新卷。