如何在開機時自動將持久性次要 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 attach-volume 存取權的 AWS Identity and Access Management (IAM) 角色。此角色將連接到啟動範本。

解決方案

步驟 1:設定具有 IAM 角色和使用者資料指令碼的啟動範本

1.    開啟 Amazon EC2 console (Amazon EC2 主控台)。

2.    選取 Launch Templates (啟動範本),然後選取 Create launch template (建立啟動範本)。

3.    選擇執行個體 AMI、類型和大小。或者選擇現有的 AMI。

4.    將一個金鑰對與該範本關聯。

5.    選擇一個與 EBS 磁碟區同在一個可用區域的子網路。

6.    選取 Advanced details (進階詳細資訊)。

7.    新增至少已授予 attach-volume 存取權的 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.    將使用者資料指令碼新增到範本。下面是一個使用者資料指令碼範例。將 regionvolume-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 中建立的啟動範本設定 Spot 請求

1.    選取 Spot Instance (Spot 執行個體),然後選取 Request Spot Instance (請求 Spot 執行個體)。

2.    選取 Launch Templates (啟動範本),然後選取在步驟 1 中建立的啟動範本。範本上設定的所有資訊都會自動填入。

3.    選擇 EBS 磁碟區所在的可用區域。

4.    選取 Create Spot Request (建立 Spot 請求)。

Spot 請求完成後,持久性次要 EBS 磁碟區會在開機時自動連接到新的 Spot 執行個體。


此文章是否有幫助?


您是否需要帳單或技術支援?