

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

# 教學課程：模擬連線事件
<a name="fis-tutorial-disrupt-connectivity"></a>

您可以使用 AWS Fault Injection Service (AWS FIS) 來模擬各種連線事件。 AWS FIS 透過下列其中一種方式封鎖網路連線來模擬連線事件：
+ `all` – 拒絕所有進出子網路的流量。請注意，此選項允許子網路內流量，包括往返子網路中網路介面的流量。
+ `availability-zone` – 拒絕在其他可用區域中往返子網路的 VPC 內流量。
+ `dynamodb` – 拒絕流量往返目前區域中 DynamoDB 的區域端點。
+ `prefix-list` – 拒絕往返指定字首清單的流量。
+ `s3` – 拒絕往返目前區域中 Amazon S3 區域端點的流量。
+ `s3express` – 拒絕傳入和傳出目標子網路 AZ 中 Amazon S3 Express One Zone 區域端點的流量。目標子網路必須位於目前可使用 S3 Express One Zone AZs 中。如需詳細資訊，請參閱 [S3 Express One Zone 可用區域和區域。](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Endpoints.html)
+ `vpc` – 拒絕進出 VPC 的流量。

使用此教學課程建立實驗範本，該範本使用 AWS FIS `aws:network:disrupt-connectivity`動作在目標子網路中引入與 Amazon S3 的連線中斷。

**Topics**
+ [先決條件](#disrupt-connectivity-prerequisites)
+ [步驟 1：建立 AWS FIS 實驗範本](#disrupt-connectivity-step1)
+ [步驟 2：Ping Amazon S3 端點](#disrupt-connectivity-step2)
+ [步驟 3：啟動您的 AWS FIS 實驗](#disrupt-connectivity-step3)
+ [步驟 4：追蹤您的 AWS FIS 實驗進度](#disrupt-connectivity-step4)
+ [步驟 5：驗證 Amazon S3 網路中斷](#disrupt-connectivity-step5)
+ [步驟 5：清除](#disrupt-connectivity-step6)

## 先決條件
<a name="disrupt-connectivity-prerequisites"></a>

開始本教學課程之前，您需要在 中具有適當許可的角色 AWS 帳戶，以及測試 Amazon EC2 執行個體：

**在您的 中具有許可的角色 AWS 帳戶**  
建立角色並連接政策，讓 AWS FIS 代表您執行`aws:network:disrupt-connectivity`動作。

您的 IAM 角色需要下列政策：
+  [AWSFaultInjectionSimulatorNetworkAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AWSFaultInjectionSimulatorNetworkAccess) – 授予 Amazon EC2 網路和其他必要服務的 AWS FIS 服務許可，以執行與網路基礎設施相關的 AWS FIS 動作。

**注意**  
為了簡化，本教學課程使用 AWS 受管政策。對於生產用途，我們建議您改為僅授予使用案例所需的最低許可。  
如需如何建立 IAM 角色的詳細資訊，請參閱《IAM **[使用者指南》中的 AWS FIS 實驗的 IAM 角色 (AWS CLI)](https://docs.aws.amazon.com/fis/latest/userguide/getting-started-iam-service-role) 或[建立 IAM 角色 （主控台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user)。

**測試 Amazon EC2 執行個體**  
啟動並連線至測試的 Amazon EC2 執行個體。您可以使用下列教學課程啟動並連線至 Amazon EC2 執行個體：[教學課程：Amazon EC2 使用者指南》中的 Amazon EC2 Linux 執行個體入門](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted)。 *Amazon EC2 *

## 步驟 1：建立 AWS FIS 實驗範本
<a name="disrupt-connectivity-step1"></a>

使用 AWS FIS 建立實驗範本 AWS 管理主控台。 AWS FIS 範本是由動作、目標、停止條件和實驗角色所組成。如需範本運作方式的詳細資訊，請參閱 [AWS FIS 的實驗範本](https://docs.aws.amazon.com/fis/latest/userguide/experiment-templates)。

開始之前，請確定您已備妥下列項目：
+ 具有正確許可的 IAM 角色。
+ Amazon EC2 執行個體。
+ Amazon EC2 執行個體的子網路 ID。

**建立實驗範本**

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. 在**動作**下，選擇**新增動作**。

   1. 針對**名稱**，輸入 `disruptConnectivity`。

   1. 針對**動作類型**，選取 **aws：network：disrupt-connectivity**。

   1. 在**動作參數**下，將**持續時間**設定為 `2 minutes`。

   1. 在**範圍**下，選取 **s3**。

   1. 在頂端，選擇**儲存**。

1. 在**目標**下，您應該會看到已自動建立的目標。選擇**編輯**。

   1. 確認**資源類型**為 `aws:ec2:subnet`。

   1. 在**目標方法**下，選取**資源 IDs**，然後在[先決條件](https://docs.aws.amazon.com/fis/latest/userguide/fis-tutorial-disrupt-connectivity.html#disrupt-connectivity-prerequisites)步驟中選擇您在建立 Amazon EC2 執行個體時所使用的子網路。

   1. 確認**選取模式**為**全部**。

   1. 選擇**儲存**。

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

1. 在**服務存取**下，選取您建立的 IAM 角色，如本教學課程[的先決條件](https://docs.aws.amazon.com/fis/latest/userguide/fis-tutorial-disrupt-connectivity.html#disrupt-connectivity-prerequisites)所述。如果您的角色未顯示，請確認其具有所需的信任關係。如需詳細資訊，請參閱[AWS FIS 實驗的 IAM 角色](getting-started-iam-service-role.md)。

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

1. （選用） 在**停止條件下**，您可以選取 CloudWatch 警示，在條件發生時停止實驗。如需詳細資訊，請參閱 [AWS FIS 的停止條件](https://docs.aws.amazon.com/fis/latest/userguide/stop-conditions)。

1. （選用） 在**日誌**下，您可以選取 Amazon S3 儲存貯體，或將日誌傳送至 CloudWatch 進行實驗。

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

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

## 步驟 2：Ping Amazon S3 端點
<a name="disrupt-connectivity-step2"></a>

確認您的 Amazon EC2 執行個體能夠連線到 Amazon S3 端點。

1. 連線至您在[先決條件步驟中建立的 ](https://docs.aws.amazon.com/fis/latest/userguide/fis-tutorial-disrupt-connectivity.html#disrupt-connectivity-prerequisites)Amazon EC2 執行個體。

   如需故障診斷，請參閱《*Amazon EC2 使用者指南*》中的[連線至執行個體的故障診斷](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting)。

1. 檢查 以查看 AWS 區域 執行個體所在的 。您可以在 Amazon EC2 主控台或執行下列命令來執行此操作。

   ```
   hostname
   ```

   例如，如果您在 中啟動 Amazon EC2 執行個體`us-west-2`，您會看到下列輸出。

   ```
   [ec2-user@ip-172.16.0.0 ~]$ hostname
   ip-172.16.0.0.us-west-2.compute.internal
   ```

1. 在您的 中 Ping Amazon S3 端點 AWS 區域。將 {{AWS 區域}} 取代為您的區域。

   ```
   ping -c 1 s3.{{AWS 區域}}.amazonaws.com
   ```

   對於輸出，您應該會看到封包遺失 0% 的成功 ping，如下列範例所示。

   ```
   PING s3.us-west-2.amazonaws.com (x.x.x.x) 56(84) bytes of data.
   64 bytes from s3-us-west-2.amazonaws.com (x.x.x.x: icmp_seq=1 ttl=249 time=1.30 ms
   
   --- s3.us-west-2.amazonaws.com ping statistics ---
   1 packets transmitted, 1 received, 0% packet loss, time 0ms
   rtt min/avg/max/mdev = 1.306/1.306/1.306/0.000 ms
   ```

## 步驟 3：啟動您的 AWS FIS 實驗
<a name="disrupt-connectivity-step3"></a>

使用您剛建立的實驗範本開始實驗。

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

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

1. 選取您建立的實驗範本 ID，以開啟其詳細資訊頁面。

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

1. （選用） 在確認頁面中，為您的實驗新增標籤。

1. 在確認頁面中，選擇**開始實驗**。

## 步驟 4：追蹤您的 AWS FIS 實驗進度
<a name="disrupt-connectivity-step4"></a>

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

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

1. 若要檢視實驗狀態，請在詳細資訊窗格中檢查**狀態**。如需詳細資訊，請參閱[實驗狀態](https://docs.aws.amazon.com/fis/latest/userguide/experiments.html#experiment-states)。

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

## 步驟 5：驗證 Amazon S3 網路中斷
<a name="disrupt-connectivity-step5"></a>

您可以透過 ping Amazon S3 端點來驗證實驗進度。
+ 從您的 Amazon EC2 執行個體中，ping 您 中的 Amazon S3 端點 AWS 區域。將 {{AWS 區域}} 取代為您的區域。

  ```
  ping -c 1 s3.{{AWS 區域}}.amazonaws.com
  ```

  對於輸出，您應該會看到封包遺失 100% 的失敗 ping，如下列範例所示。

  ```
  ping -c 1 s3.us-west-2.amazonaws.com
  PING s3.us-west-2.amazonaws.com (x.x.x.x) 56(84) bytes of data.
  
  --- s3.us-west-2.amazonaws.com ping statistics ---
  1 packets transmitted, 0 received, 100% packet loss, time 0ms
  ```

## 步驟 5：清除
<a name="disrupt-connectivity-step6"></a>

如果您不再需要為此實驗或 AWS FIS 範本建立的 Amazon EC2 執行個體，則可以將其移除。

**移除 Amazon EC2 執行個體**

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

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

1. 選取測試執行個體，選擇**執行個體狀態**，然後選擇**終止執行個體**。

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



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

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

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

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

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