

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 教學課程：測試執行個體停止和開始使用 AWS FIS
<a name="fis-tutorial-stop-instances"></a>

您可以使用 AWS Fault Injection Service (AWS FIS) 來測試應用程式如何處理執行個體停止和啟動。使用此教學課程來建立實驗範本，該範本使用 AWS FIS `aws:ec2:stop-instances`動作來停止一個執行個體，然後停止第二個執行個體。

## 先決條件
<a name="stop-instances-prerequisites"></a>

若要完成本教學課程，請確定您執行下列動作：
+ 在帳戶中啟動兩個測試 EC2 執行個體。啟動執行個體後，請注意兩個執行個體IDs。
+ 建立可讓 AWS FIS 服務代表您執行`aws:ec2:stop-instances`動作的 IAM 角色。如需詳細資訊，請參閱[AWS FIS 實驗的 IAM 角色](getting-started-iam-service-role.md)。
+ 確保您可存取 AWS FIS。如需詳細資訊，請參閱 [AWS FIS 政策範例](security_iam_id-based-policy-examples.md)。

## 步驟 1：建立實驗範本
<a name="stop-instances-create-template"></a>

使用 AWS FIS 主控台建立實驗範本。在範本中，您可以指定兩個動作，每個動作會依序執行三分鐘。第一個動作會停止其中一個測試執行個體，由 AWS FIS 隨機選擇。第二個動作會停止兩個測試執行個體。

**建立實驗範本**

1. 在 https：//[https://console.aws.amazon.com/fis/](https://console.aws.amazon.com/fis/) 開啟 AWS FIS 主控台。

1. 在導覽窗格中，選擇**實驗範本**。

1. 選擇**建立實驗範本**。

1. 針對**步驟 1，指定範本詳細資訊**，執行下列動作：

   1. 針對**描述和名稱**，輸入範本的描述，例如 `Amazon S3 Network Disrupt Connectivity`。

   1. 選擇**下一步**，然後移至**步驟 2，指定動作和目標**。

1. 對於 **Actions (動作)**，執行下列動作：

   1. 選擇**新增動作**。

   1. 輸入動作的名稱。例如，​輸入 **stopOneInstance**。

   1. 針對**動作類型**，選擇 **aws：ec2：stop-instances**。

   1. 對於**目標**，保留 AWS FIS 為您建立的目標。

   1. 對於**動作參數**，在**持續時間後啟動執行個體**，請指定 3 分鐘 (PT3M)。

   1. 選擇 **Save** (儲存)。

1. 對於 **Targets (目標)**，執行下列動作：

   1. 針對 AWS 上一個步驟中 FIS 自動為您建立的目標，選擇**編輯**。

   1. 以更描述性的名稱取代預設名稱。例如，​輸入 **oneRandomInstance**。

   1. 確認**資源類型**為 **aws：ec2：instance**。

   1. 針對**目標方法**，選擇**資源 IDs**，然後選擇兩個測試執行個體的 IDs。

   1. 針對**選取模式**，選擇**計數**。針對**資源數量**，輸入 **1**。

   1. 選擇 **Save** (儲存)。

1. 選擇**新增目標**並執行下列動作：

   1. 輸入目標的名稱。例如，​輸入 **bothInstances**。

   1. 針對**資源類型**，選擇 **aws：ec2：instance**。

   1. 針對**目標方法**，選擇**資源 IDs**，然後選擇兩個測試執行個體的 IDs。

   1. 針對**選取模式**，選擇**全部**。

   1. 選擇 **Save** (儲存)。

1. 從**動作**區段中，選擇**新增動作**。請執行下列操作：

   1. 針對**名稱**，輸入動作的名稱。例如，​輸入 **stopBothInstances**。

   1. 針對**動作類型**，選擇 **aws：ec2：stop-instances**。

   1. 針對**之後開始**，選擇您新增的第一個動作 (**stopOneInstance**)。

   1. 針對**目標**，選擇您新增的第二個目標 (**bothInstances**)。

   1. 對於**動作參數**，在**持續時間後啟動執行個體**，請指定 3 分鐘 (PT3M)。

   1. 選擇 **Save** (儲存)。

1. 選擇**下一步**以移至**步驟 3，設定服務存取**。

1. 針對**服務存取**，選擇**使用現有的 IAM 角色**，然後選擇您建立的 IAM 角色，如本教學課程的先決條件所述。如果您的角色未顯示，請確認其具有所需的信任關係。如需詳細資訊，請參閱[AWS FIS 實驗的 IAM 角色](getting-started-iam-service-role.md)。

1. 選擇**下一步**以移至**步驟 4，設定選用設定**。

1. （選用） 針對**標籤**，選擇**新增標籤**，並指定標籤索引鍵和標籤值。您新增的標籤會套用至實驗範本，而不是使用範本執行的實驗。

1. 選擇**下一步**以移至**步驟 5，檢閱並建立**。

1. 檢閱範本，然後選擇**建立實驗範本**。出現確認提示時，輸入 `create`，然後選擇**建立實驗範本**。

**（選用） 檢視實驗範本 JSON**  
選擇**匯出**索引標籤。以下是上述主控台程序所建立 JSON 的範例。

```
{
    "description": "Test instance stop and start",
    "targets": {
        "bothInstances": {
            "resourceType": "aws:ec2:instance",
            "resourceArns": [
                "arn:aws:ec2:region:123456789012:instance/instance_id_1",
                "arn:aws:ec2:region:123456789012:instance/instance_id_2"
            ],
            "selectionMode": "ALL"
        },
        "oneRandomInstance": {
            "resourceType": "aws:ec2:instance",
            "resourceArns": [
                "arn:aws:ec2:region:123456789012:instance/instance_id_1",
                "arn:aws:ec2:region:123456789012:instance/instance_id_2"
            ],
            "selectionMode": "COUNT(1)"
        }
    },
    "actions": {
        "stopBothInstances": {
            "actionId": "aws:ec2:stop-instances",
            "parameters": {
                "startInstancesAfterDuration": "PT3M"
            },
            "targets": {
                "Instances": "bothInstances"
            },
            "startAfter": [
                "stopOneInstance"
            ]
        },
        "stopOneInstance": {
            "actionId": "aws:ec2:stop-instances",
            "parameters": {
                "startInstancesAfterDuration": "PT3M"
            },
            "targets": {
                "Instances": "oneRandomInstance"
            }
        }
    },
    "stopConditions": [
        {
            "source": "none"
        }
    ],
    "roleArn": "arn:aws:iam::123456789012:role/AllowFISEC2Actions",
    "tags": {}
}
```

## 步驟 2：開始實驗
<a name="stop-instances-start-experiment"></a>

完成建立實驗範本後，您可以使用它來開始實驗。

**開始實驗**

1. 您應該位於您剛建立之實驗範本的詳細資訊頁面。否則，請選擇**實驗範本**，然後選擇實驗範本的 ID 以開啟詳細資訊頁面。

1. 選擇 **Start experiment** (開始實驗)。

1. （選用） 若要將標籤新增至實驗，請選擇**新增標籤**，然後輸入標籤索引鍵和標籤值。

1. 選擇 **Start experiment** (開始實驗)。出現確認提示時，輸入 **start** 並選擇**開始實驗**。

## 步驟 3：追蹤實驗進度
<a name="stop-instances-track-experiment"></a>

您可以追蹤執行中實驗的進度，直到實驗完成、停止或失敗為止。

**追蹤實驗的進度**

1. 您應該位於您剛開始之實驗的詳細資訊頁面。否則，請選擇**實驗**，然後選擇實驗的 ID 以開啟詳細資訊頁面。

1. 若要檢視實驗狀態，請在**詳細資訊**窗格中檢查**狀態**。如需詳細資訊，請參閱[實驗狀態](view-experiment-progress.md#experiment-states)。

1. 當實驗的狀態正在**執行**時，請前往下一個步驟。

## 步驟 4：驗證實驗結果
<a name="stop-instances-verify-experiment-result"></a>

您可以驗證執行個體是否如預期由實驗停止和啟動。

**驗證實驗的結果**

1. 在新的瀏覽器索引標籤或視窗中開啟 Amazon EC2 主控台，網址為 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：//。這可讓您繼續在 AWS FIS 主控台中追蹤實驗進度，同時在 Amazon EC2 主控台中檢視實驗結果。

1. 在導覽窗格中，選擇 **Instances** (執行個體)。

1. 當第一個動作的狀態從**待**定變更為**執行**中 (AWS FIS 主控台） 時，其中一個目標執行個體的狀態會從**執行**中變更為**已停止** (Amazon EC2 主控台）。

1. 三分鐘後，第一個動作的狀態會變更為**已完成**、第二個動作的狀態會變更為**執行**中，而其他目標執行個體的狀態會變更為**已停止**。

1. 三分鐘後，第二個動作的狀態會變更為**已完成**，目標執行個體的狀態會變更為**正在執行**，而實驗的狀態會變更為**已完成**。

## 步驟 5：清除
<a name="stop-instances-cleanup"></a>

如果您不再需要您為此實驗建立的測試 EC2 執行個體，您可以終止它們。

**終止執行個體**

1. 在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇 **Instances** (執行個體)。

1. 選取兩個測試執行個體，然後選取 **Instance state** (執行個體狀態)、**Terminate instance** (終止執行個體)。

1. 出現確認提示時，請選擇**終止**。

如果您不再需要實驗範本，則可以將其刪除。

**使用 AWS FIS 主控台刪除實驗範本**

1. 在 https：//[https://console.aws.amazon.com/fis/](https://console.aws.amazon.com/fis/) 開啟 AWS FIS 主控台。

1. 在導覽窗格中，選擇**實驗範本**。

1. 選取實驗範本，然後選擇**動作**、**刪除實驗範本**。

1. 出現確認提示時，輸入 **delete**，然後選擇**刪除實驗範本**。