如何在启动时自动将持久性辅助 EBS 卷附上新的 EC2 Linux Spot 实例?

上次更新时间:2021 年 10 月 18 日

我想使用用户数据脚本在启动时自动向我的新 Amazon Elastic Compute Cloud (Amazon EC2) Linux Spot 实例启动持久性辅助 Amazon Elastic Block Store (Amazon EBS) 卷。该如何操作?

简短描述

要在启动时自动将持久性辅助 EBS 卷附上新的 EC2 Linux Spot 实例,请向 EC2 启动模板添加用户数据脚本。在配置 Spot 实例请求时使用模板。

先决条件

创建或使用至少授予 Amazon EC2 附上卷访问权限的 AWS Identity and Access Management (IAM) 角色。此角色将附上启动模板中。

解决方法

步骤 1:使用 IAM 角色和用户数据脚本配置启动模板

1.    打开 Amazon EC2 控制台

2.    选择启动模板,然后选择创建启动模板

3.    选择实例 AMI、类型和大小。或者选择现有 AMI。

4.    将密钥对与模板关联。

5.    选择与 EBS 卷位于同一可用区中的子网。

6.    选择高级详细信息

7.    添加至少已授予附上卷访问权限的 IAM 角色,如以下示例所示:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AttachVolume",
                "ec2:DetachVolume"
            ],
            "Resource": [
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:volume/vol-xxxxxxxxxxxx"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "ec2:DescribeVolumes",
            "Resource": "arn:aws:ec2:*:*:volume/vol-xxxxxxxxxxxx"
        }
    ]

8.    向模板中添加用户数据脚本。以下是示例用户数据脚本。替换区域卷 ID 以匹配您的环境。

#!/bin/bash
      OUTPUT=$(curl http://169.254.169.254/latest/meta-data/instance-id)
      aws ec2 attach-volume --volume-id vol-xxxxxxxxxxxx --device /dev/xvdf --instance-id $OUTPUT --region ap-southeast-1

步骤 2:使用在步骤 1 中创建的启动模板配置竞价请求

1.    选择 Spot 实例,然后选择请求 Spot 实例

2.    选择启动模板,然后选择在步骤 1 中创建的启动模板。模板上配置的所有信息都会自动填充。

3.    选择与 EBS 卷相同的可用区。

4.    选择创建竞价请求

竞价请求完成后,持久性辅助 EBS 卷会在启动时自动附上新的 Spot 实例。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?