

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

# 搭配 AWS FIS 使用 Systems Manager SSM 文件
<a name="actions-ssm-agent"></a>

AWS FIS 透過 AWS Systems Manager SSM Agent 和 AWS FIS 動作 支援自訂錯誤類型[aws:ssm:send-command](fis-actions-reference.md#ssm-send-command)。可用於建立常見錯誤注入動作的預先設定 Systems Manager SSM 文件 (SSM 文件），可作為開頭為 AWSFIS- 字首的公有 AWS 文件。

SSM Agent 是可在 Amazon EC2 執行個體、內部部署伺服器或虛擬機器 (VM) 上安裝和設定的 Amazon 軟體。 VMs 這可讓 Systems Manager 管理這些資源。代理程式會處理 Systems Manager 的請求，然後依照請求中的指定執行它們。您可以包含自己的 SSM 文件來插入自訂錯誤，或參考其中一個公有 Amazon 擁有的文件。

**要求**

對於需要 SSM Agent 在目標上執行動作的動作，您必須確保下列事項：
+ 代理程式安裝在目標上。根據預設，某些 Amazon Machine Image (AMIs) 會安裝 SSM Agent。否則，您可以在執行個體上安裝 SSM 代理程式。如需詳細資訊，請參閱*AWS Systems Manager 《 使用者指南*》中的[手動安裝 EC2 執行個體的 SSM Agent](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html)。
+ Systems Manager 具有在您的執行個體上執行動作的許可。您可以使用 IAM 執行個體描述檔授予存取權。如需詳細資訊，請參閱[《 使用者指南》中的建立 Systems Manager 的 IAM 執行個體描述檔](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html)和[將 IAM 執行個體描述檔連接至 EC2 執行個體](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-launch-managed-instance.html)。 *AWS Systems Manager *

## 使用 aws:ssm:send-command動作
<a name="specifying-ssm-actions"></a>

SSM 文件定義 Systems Manager 在受管執行個體上執行的動作。Systems Manager 包含許多預先設定的文件，您也可以建立自己的文件。如需建立您自己的 SSM 文件的詳細資訊，請參閱*AWS Systems Manager 《 使用者指南*》中的[建立 Systems Manager 文件](https://docs.aws.amazon.com/systems-manager/latest/userguide/create-ssm-doc.html)。如需 SSM 文件的一般詳細資訊，請參閱*AWS Systems Manager 《 使用者指南*》中的[AWS Systems Manager 文件](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-ssm-docs.html)。

AWS FIS 提供預先設定的 SSM 文件。您可以在 AWS Systems Manager 主控台的文件下檢視預先設定的 SSM **文件**：https：//[https://console.aws.amazon.com/systems-manager/documents](https://console.aws.amazon.com/systems-manager/documents)。您也可以在 AWS FIS 主控台中選擇預先設定的文件。如需詳細資訊，請參閱[預先設定的 AWS FIS SSM 文件](#fis-ssm-docs)。

若要在 AWS FIS 實驗中使用 SSM 文件，您可以使用 [aws:ssm:send-command](fis-actions-reference.md#ssm-send-command)動作。此動作會在您的目標執行個體上擷取並執行指定的 SSM 文件。

當您在實驗範本中使用 `aws:ssm:send-command`動作時，您必須為 動作指定其他參數，包括下列項目：
+ **documentArn** - 必要。SSM 文件的 Amazon Resource Name (ARN)。
+ **documentParameters** – 條件式。SSM 文件接受的必要和選用參數。格式是 JSON 物件，其金鑰為字串，值為字串或字串陣列。
+ **documentVersion** - 選用。要執行的 SSM 文件版本。

您可以使用 Systems Manager 主控台或命令列來檢視 SSM 文件的資訊 （包括文件的參數）。

**使用主控台檢視 SSM 文件的相關資訊**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **Documents (文件)**。

1. 選取文件，然後選擇**詳細資訊**索引標籤。

**使用命令列檢視 SSM 文件的相關資訊**  
使用 SSM [describe-document](https://docs.aws.amazon.com/cli/latest/reference/ssm/describe-document.html) 命令。

**進一步了解動作狀態**  
SSM 動作狀態由 [SSM 命令狀態](https://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-commands.html)決定。

## 預先設定的 AWS FIS SSM 文件
<a name="fis-ssm-docs"></a>

您可以在實驗範本中使用預先設定的 AWS FIS SSM 文件搭配 `aws:ssm:send-command`動作。

**要求**
+  AWS FIS 提供的預先設定 SSM 文件僅支援下列作業系統：
  + Amazon Linux 2023、Amazon Linux 2
  + Ubuntu
  + RHEL 8、9
  + CentOS 9
+  AWS FIS 提供的預先設定 SSM 文件僅支援 EC2 執行個體。其他類型的受管節點不支援這些節點，例如內部部署伺服器。

若要在 ECS 任務的實驗中使用這些 SSM 文件，請使用對應的 [Amazon ECS 動作](fis-actions-reference.md#ecs-actions-reference)。例如， **aws:ecs:task-cpu-stress**動作會使用 AWSFIS-Run-CPU-Stress 文件。

**Topics**
+ [AWSFIS-Run-CPU-Stress](#awsfis-run-cpu-stress)
+ [AWSFIS-Run-Disk-Fill](#awsfis-run-disk-fill)
+ [AWSFIS-Run-IO-Stress](#awsfis-run-io-stress)
+ [AWSFIS-Run-Kill-Process](#awsfis-run-kill-process)
+ [AWSFIS-Run-Memory-Stress](#awsfis-run-memory-stress)
+ [AWSFIS-Run-Network-Blackhole-Port](#awsfis-run-network-blackhole-port)
+ [AWSFIS-Run-Network-Latency](#awsfis-run-network-latency)
+ [AWSFIS-Run-Network-Latency-Sources](#awsfis-run-network-latency-sources)
+ [AWSFIS-Run-Network-Packet-Loss](#awsfis-run-network-packet-loss)
+ [AWSFIS-Run-Network-Packet-Loss-Sources](#awsfis-run-network-packet-loss-sources)

**AWS FIS SSM 文件中動作持續時間和 DurationSeconds 之間的差異**  
 有些 SSM 文件會限制自己的執行時間，例如，某些預先設定的 AWS FIS SSM 文件會使用 DurationSeconds 參數。因此，您需要在 AWS FIS 動作定義中指定兩個獨立的持續時間：
+  **Action duration**：對於具有單一動作的實驗，動作持續時間等同於實驗持續時間。使用多個動作時，實驗持續時間取決於個別動作持續時間及其執行順序。 AWS FIS 會監控每個動作，直到其動作持續時間經過為止。
+  文件參數 **DurationSeconds**：SSM 文件將執行的持續時間，以秒為單位。

 您可以為兩種持續時間類型選擇不同的值：
+  **Action duration exceeds DurationSeconds**：SSM 文件執行會在動作完成之前完成。 AWS FIS 會等到動作持續時間經過之後，再啟動後續動作。
+  **Action duration is shorter than DurationSeconds**：SSM 文件會在動作完成後繼續執行。如果 SSM 文件執行仍在進行中，且動作持續時間已過，則動作狀態會設為已完成。 AWS FIS 只會監控執行，直到動作持續時間過了為止。

 請注意，某些 SSM 文件具有可變持續時間。例如 AWS ，FIS SSM 文件可以選擇安裝先決條件，這可以將整體執行持續時間延長到超過指定的 DurationSeconds 參數。因此，如果您將動作持續時間和 DurationSeconds 設定為相同的值，SSM 指令碼的執行時間可能會超過動作持續時間。

### AWSFIS-Run-CPU-Stress
<a name="awsfis-run-cpu-stress"></a>

使用 **stress-ng**工具在執行個體上執行 CPU 應力。使用 [AWSFIS-Run-CPU-Stress](https://console.aws.amazon.com/systems-manager/documents/AWSFIS-Run-CPU-Stress/description) SSM 文件。

**動作類型 （僅限主控台）**  
aws:ssm:send-command/AWSFIS-Run-CPU-Stress

**ARN**  
arn:aws:ssm:*region*::document/AWSFIS-Run-CPU-Stress

**文件參數**
+ **DurationSeconds** - 必要。CPU 壓力測試的持續時間，以秒為單位。
+ **CPU** - 選用。要使用的 CPU 壓力器數量。預設值為 0，它使用所有 CPU 壓力器。
+ **LoadPercent** - 選用。目標 CPU 負載百分比，從 0 （無負載） 到 100 （完全負載）。預設為 100。
+ **InstallDependencies** - 選用。如果值為 `True`，Systems Manager 會在目標執行個體上安裝所需的相依性，如果這些執行個體尚未安裝。預設值為 `True`。相依性為 **stress-ng**。

以下是您可以在 主控台中輸入的字串範例。

```
{"DurationSeconds":"60", "InstallDependencies":"True"}
```

### AWSFIS-Run-Disk-Fill
<a name="awsfis-run-disk-fill"></a>

配置執行個體根磁碟區上的磁碟空間，以模擬磁碟完全故障。使用 [AWSFIS-Run-Disk-Fill](https://console.aws.amazon.com/systems-manager/documents/AWSFIS-Run-Disk-Fill/description) SSM 文件。

如果注入此故障的實驗停止，無論是手動或透過停止條件， AWS FIS 會取消執行中的 SSM 文件來嘗試轉返。不過，如果磁碟已滿 100%，可能是由於故障或故障加上應用程式活動，Systems Manager 可能無法完成取消操作。因此，如果您可能需要停止實驗，請確保磁碟不會 100% 已滿。

**動作類型 （僅限主控台）**  
aws:ssm:send-command/AWSFIS-Run-Disk-Fill

**ARN**  
arn:aws:ssm:*region*::document/AWSFIS-Run-Disk-Fill

**文件參數**
+ **DurationSeconds** - 必要。磁碟填充測試的持續時間，以秒為單位。
+ **Percent** - 選用。在磁碟填充測試期間要配置的磁碟百分比。預設值為 95%。
+ **InstallDependencies** - 選用。如果值為 `True`，Systems Manager 會在目標執行個體上安裝所需的相依性，如果這些執行個體尚未安裝。預設值為 `True`。相依性為 **atd**、 **kmod**和 **fallocate**。

以下是您可以在 主控台中輸入的字串範例。

```
{"DurationSeconds":"60", "InstallDependencies":"True"}
```

### AWSFIS-Run-IO-Stress
<a name="awsfis-run-io-stress"></a>

使用 **stress-ng**工具在執行個體上執行 IO 應力。使用 [AWSFIS-Run-IO-Stress](https://console.aws.amazon.com/systems-manager/documents/AWSFIS-Run-IO-Stress/description) SSM 文件。

**動作類型 （僅限主控台）**  
aws:ssm:send-command/AWSFIS-Run-IO-Stress

**ARN**  
arn:aws:ssm:*region*::document/AWSFIS-Run-IO-Stress

**文件參數**
+ **DurationSeconds** - 必要。IO 壓力測試的持續時間，以秒為單位。
+ **Workers** - 選用。執行循序、隨機和記憶體映射讀取/寫入操作、強制同步和快取捨棄的混合工作者數量。多個子程序會在同一檔案上執行不同的 I/O 操作。預設為 1。
+ **Percent** - 選用。檔案系統上要在 IO 壓力測試期間使用的可用空間百分比。預設值為 80%。
+ **InstallDependencies** - 選用。如果值為 `True`，Systems Manager 會在目標執行個體上安裝所需的相依性，如果這些執行個體尚未安裝。預設值為 `True`。相依性為 **stress-ng**。

以下是您可以在 主控台中輸入的字串範例。

```
{"Workers":"1", "Percent":"80", "DurationSeconds":"60", "InstallDependencies":"True"}
```

### AWSFIS-Run-Kill-Process
<a name="awsfis-run-kill-process"></a>

使用 **killall**命令停止執行個體中指定的程序。使用 [AWSFIS-Run-Kill-Process](https://console.aws.amazon.com/systems-manager/documents/AWSFIS-Run-Kill-Process/description) SSM 文件。

**動作類型 （僅限主控台）**  
aws:ssm:send-command/AWSFIS-Run-Kill-Process

**ARN**  
arn:aws:ssm:*region*::document/AWSFIS-Run-Kill-Process

**文件參數**
+ **ProcessName** - 必要。要停止的程序名稱。
+ **Signal** - 選用。隨 命令一起傳送的訊號。可能的值為 `SIGTERM`（接收者可以選擇忽略） 和 `SIGKILL`（無法忽略）。預設值為 `SIGTERM`。
+ **InstallDependencies** – 選用。如果值為 `True`，Systems Manager 會在目標執行個體上安裝所需的相依性，如果這些執行個體尚未安裝。預設值為 `True`。相依性為 **killall**。

以下是您可以在 主控台中輸入的字串範例。

```
{"ProcessName":"myapplication", "Signal":"SIGTERM"}
```

### AWSFIS-Run-Memory-Stress
<a name="awsfis-run-memory-stress"></a>

使用 **stress-ng**工具在執行個體上執行記憶體壓力。使用 [AWSFIS-Run-Memory-Stress](https://console.aws.amazon.com/systems-manager/documents/AWSFIS-Run-Memory-Stress/description) SSM 文件。

**動作類型 （僅限主控台）**  
aws:ssm:send-command/AWSFIS-Run-Memory-Stress

**ARN**  
arn:aws:ssm:*region*::document/AWSFIS-Run-Memory-Stress

**文件參數**
+ **DurationSeconds** - 必要。記憶體壓力測試的持續時間，以秒為單位。
+ **Workers** - 選用。虛擬記憶體壓力源的數量。預設為 1。
+ **Percent** - 必要。在記憶體壓力測試期間要使用的虛擬記憶體百分比。
+ **InstallDependencies** - 選用。如果值為 `True`，Systems Manager 會在目標執行個體上安裝所需的相依性，如果這些執行個體尚未安裝。預設值為 `True`。相依性為 **stress-ng**。

以下是您可以在 主控台中輸入的字串範例。

```
{"Percent":"80", "DurationSeconds":"60", "InstallDependencies":"True"}
```

### AWSFIS-Run-Network-Blackhole-Port
<a name="awsfis-run-network-blackhole-port"></a>

使用 **iptables**工具捨棄通訊協定和連接埠的傳入或傳出流量。使用 [AWSFIS-Run-Network-Blackhole-Port](https://console.aws.amazon.com/systems-manager/documents/AWSFIS-Run-Network-Blackhole-Port/description) SSM 文件。

**動作類型 （僅限主控台）**  
aws:ssm:send-command/AWSFIS-Run-Network-Blackhole-Port

**ARN**  
arn:aws:ssm:*region*::document/AWSFIS-Run-Network-Blackhole-Port

**文件參數**
+ **Protocol** - 必要。通訊協定。可能的值為 `tcp` 和 `udp`。
+ **Port** - 必要。連接埠號碼。
+ **TrafficType** - 選用。流量類型。可能的值為 `ingress` 和 `egress`。預設值為 `ingress`。
+ **DurationSeconds** - 必要。網路黑洞測試的持續時間，以秒為單位。
+ **InstallDependencies** - 選用。如果值為 `True`，Systems Manager 會在目標執行個體上安裝所需的相依性，如果這些執行個體尚未安裝。預設值為 `True`。相依性為 **atd**、**lsof**、 **dig**和 **iptables**。

以下是您可以在 主控台中輸入的字串範例。

```
{"Protocol":"tcp", "Port":"8080", "TrafficType":"egress", "DurationSeconds":"60", "InstallDependencies":"True"}
```

### AWSFIS-Run-Network-Latency
<a name="awsfis-run-network-latency"></a>

使用 **tc**工具將延遲新增至網路界面。使用 [AWSFIS-Run-Network-Latency](https://console.aws.amazon.com/systems-manager/documents/AWSFIS-Run-Network-Latency/description) SSM 文件。

**動作類型 （僅限主控台）**  
aws:ssm:send-command/AWSFIS-Run-Network-Latency

**ARN**  
arn:aws:ssm:*region*::document/AWSFIS-Run-Network-Latency

**文件參數**
+ **Interface** - 選用。網路介面。預設值為 `eth0`。
+ **DelayMilliseconds** – 選用。延遲，以毫秒為單位。預設值為 200。
+ **DurationSeconds** - 必要。網路延遲測試的持續時間，以秒為單位。
+ **InstallDependencies** - 選用。如果值為 `True`，Systems Manager 會在目標執行個體上安裝所需的相依性，如果這些執行個體尚未安裝。預設值為 `True`。相依性為 **atd**、 **dig**和 **tc**。

以下是您可以在 主控台中輸入的字串範例。

```
{"DelayMilliseconds":"200", "Interface":"eth0", "DurationSeconds":"60", "InstallDependencies":"True"}
```

### AWSFIS-Run-Network-Latency-Sources
<a name="awsfis-run-network-latency-sources"></a>

針對進出特定來源的流量，使用 **tc**工具將延遲和抖動新增至網路界面。使用 [AWSFIS-Run-Network-Latency-Sources](https://console.aws.amazon.com/systems-manager/documents/AWSFIS-Run-Network-Latency-Sources/description) SSM 文件。

使用 `FlowsPercent` 參數在一定百分比的連線上新增延遲。

**動作類型 （僅限主控台）**  
aws:ssm:send-command/AWSFIS-Run-Network-Latency-Sources

**ARN**  
arn:aws:ssm:*region*::document/AWSFIS-Run-Network-Latency-Sources

**文件參數**
+ **Interface** - 選用。網路界面，以逗號分隔。支援 ALL 和 DEFAULT 值。預設值為 `DEFAULT`，其將鎖定作業系統的主要網路介面。
+ **DelayMilliseconds** - 選用。延遲，以毫秒為單位。預設值為 200。
+ **JitterMilliseconds** - 選用。抖動，以毫秒為單位。預設為 10。
+ **FlowsPercent** - 選用。將受到動作影響的網路流程百分比。預設 為 100%。
+ **Sources** - 必要。來源，以逗號分隔，不含空格。可能的值為：IPv4 地址、IPv4 CIDR 區塊、網域名稱、AZ 名稱 (us-east-1a)、AZ ID (use1-az1)`DYNAMODB`、ALL、 和 `S3`。如果您指定 `DYNAMODB`或 `S3`，這僅適用於目前區域中的區域端點。
+ **TrafficType** - 選用。流量類型。可能的值為 `ingress` 和 `egress`。預設值為 `ingress`。
+ **DurationSeconds** - 必要。網路延遲測試的持續時間，以秒為單位。
+ **InstallDependencies** - 選用。如果值為 `True`，Systems Manager 會在目標執行個體上安裝所需的相依性，如果這些執行個體尚未安裝。預設值為 `True`。相依性為 **atd**、**dig**、**lsof**、 **jq**和 **tc**。

使用本文件時，實驗角色需要下列許可：
+ `ec2:DescribeInstances`
+ `ec2:DescribeSubnets`

以下是您可以在 主控台中輸入的字串範例。

```
{"DelayMilliseconds":"200", "JitterMilliseconds":"15", "Sources":"S3,www.example.com,72.21.198.67", "Interface":"eth0", "TrafficType":"egress", "DurationSeconds":"60", "InstallDependencies":"True"}
```

### AWSFIS-Run-Network-Packet-Loss
<a name="awsfis-run-network-packet-loss"></a>

使用 **tc**工具將封包遺失新增至網路介面。使用 [AWSFIS-Run-Network-Packet-Loss](https://console.aws.amazon.com/systems-manager/documents/AWSFIS-Run-Network-Packet-Loss/description) SSM 文件。

**動作類型 （僅限主控台）**  
aws:ssm:send-command/AWSFIS-Run-Network-Packet-Loss

**ARN**  
arn:aws:ssm:*region*::document/AWSFIS-Run-Network-Packet-Loss

**文件參數**
+ **Interface** - 選用。網路介面。預設值為 `eth0`。
+ **LossPercent** – 選用。封包遺失的百分比。預設值為 7%。
+ **DurationSeconds** - 必要。網路封包遺失測試的持續時間，以秒為單位。
+ **InstallDependencies** - 選用。如果值為 `True`，Systems Manager 會在目標執行個體上安裝所需的相依性。預設值為 `True`。相依性為 **atd**、**dig**、 **lsof**和 **tc**。

以下是您可以在 主控台中輸入的字串範例。

```
{"LossPercent":"15", "Interface":"eth0", "DurationSeconds":"60", "InstallDependencies":"True"}
```

### AWSFIS-Run-Network-Packet-Loss-Sources
<a name="awsfis-run-network-packet-loss-sources"></a>

針對進出特定來源的流量，使用 **tc**工具將封包遺失新增至網路介面。使用 [AWSFIS-Run-Network-Packet-Loss-Sources](https://console.aws.amazon.com/systems-manager/documents/AWSFIS-Run-Network-Packet-Loss-Sources/description) SSM 文件。

使用 `FlowsPercent` 參數在一定百分比的連線上注入封包遺失。

**動作類型 （僅限主控台）**  
aws:ssm:send-command/AWSFIS-Run-Network-Packet-Loss-Sources

**ARN**  
arn:aws:ssm:*region*::document/AWSFIS-Run-Network-Packet-Loss-Sources

**文件參數**
+ **Interface** - 選用。網路界面，以逗號分隔。支援 ALL 和 DEFAULT 值。預設值為 `DEFAULT`，其將鎖定作業系統的主要網路介面。
+ **LossPercent** - 選用。封包遺失的百分比。預設值為 7%。
+ **FlowsPercent** - 選用。將受到動作影響的網路流程百分比。預設 為 100%。
+ **Sources** - 必要。來源，以逗號分隔，不含空格。可能的值為：IPv4 地址、IPv4 CIDR 區塊、網域名稱、AZ 名稱 (us-east-1a)、AZ ID (use1-az1)`DYNAMODB`、ALL、 和 `S3`。如果您指定 `DYNAMODB`或 `S3`，這僅適用於目前區域中的區域端點。
+ **TrafficType** - 選用。流量類型。可能的值為 `ingress` 和 `egress`。預設值為 `ingress`。
+ **DurationSeconds** - 必要。網路封包遺失測試的持續時間，以秒為單位。
+ **InstallDependencies** - 選用。如果值為 `True`，Systems Manager 會在目標執行個體上安裝所需的相依性。預設值為 `True`。相依性為 **atd**、**dig**、**lsof**、 **jq**和 **tc**。

使用本文件時，實驗角色需要下列許可：
+ `ec2:DescribeInstances`
+ `ec2:DescribeSubnets`

以下是您可以在 主控台中輸入的字串範例。

```
{"LossPercent":"15", "Sources":"S3,www.example.com,72.21.198.67", "Interface":"eth0", "TrafficType":"egress", "DurationSeconds":"60", "InstallDependencies":"True"}
```

## 範例
<a name="fis-ssm-docs-example-template"></a>

如需範例實驗範本，請參閱 [執行預先設定的 AWS FIS SSM 文件](experiment-template-example.md#cpu-fault-injection)。

如需教學課程範例，請參閱[在執行個體上執行 CPU 壓力](fis-tutorial-run-cpu-stress.md)。

## 限制
<a name="fis-ssm-docs-limitations"></a>
+ 下列文件無法平行執行：
  + AWSFIS-Run-Network-Blackhole-Port
  + AWSFIS-Run-Network-Latency
  + AWSFIS-Run-Network-Latency-Sources
  + AWSFIS-Run-Network-Packet-Loss
  + AWSFIS-Run-Network-Packet-Loss-Sources

## 轉返指令碼
<a name="fis-ssm-docs-rollback"></a>

AWS FIS SSM 文件會自動建立轉返指令碼，做為在故障注入實驗後還原系統狀態的安全機制。這些指令碼可確保即使動作失敗或意外終止，也會移除注入的錯誤。

### 復原指令碼建立
<a name="fis-ssm-rollback-creation"></a>

當故障注入實驗開始時，系統會自動建立轉返指令碼。

**建立詳細資訊**
+ **位置** – 指令碼會在 `/var/lib/amazon/ssm/`目錄中建立。
+ **命名模式** – `FAULT_NAME-FAULT_IDENTIFIER-Rollback.sh`其中 *FAULT\$1IDENTIFIER* 是隨機產生的 32 個字元字串
+ **時間** – 在每個錯誤注入實驗開始時，在錯誤注入開始之前建立。
+ **內容** – 包含所有必要的環境變數和命令，以反轉特定錯誤。

例如，網路延遲實驗可能會在 建立轉返指令碼`/var/lib/amazon/ssm/NetworkLatency-abc123-Rollback.sh`。

### 轉返記錄
<a name="fis-ssm-rollback-logging"></a>

復原指令碼實作雙重記錄，以擷取所有復原活動，以進行疑難排解和稽核。

**日誌檔案位置**  
當復原指令碼執行時，它會在兩個位置建立日誌：
+ **暫存檔案** – `/tmp/aws-fis-rollback-TIMESTAMP-PID.log`
+ **系統日誌** – 使用 設施傳送至 syslog `local0.info`

**日誌檔案命名**  
臨時日誌檔案使用以下命名慣例：

```
/tmp/aws-fis-rollback-YYYY-MM-DDTHH:MM:SSZ-PID.log
```

其中 *YYYY-MM-DDTHH：MM：SSZ* 是 UTC 時間戳記，*PID* 是轉返指令碼的程序 ID。

**Syslog 組態**  
回復日誌會以下列組態傳送至 syslog：
+ **標籤** – `aws-fis-rollback`
+ **優先順序** – `local0.info`
+ **格式** – `[YYYY-MM-DDTHH:MM:SSZ] log_message`

**檢視轉返日誌**  
使用下列命令來檢視系統化日誌中的所有轉返日誌：

```
sudo journalctl -t aws-fis-rollback
```

## 疑難排解
<a name="fis-ssm-docs-troubleshooting"></a>

使用下列程序對問題進行疑難排解。

**疑難排解 SSM 文件的問題**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇**節點管理**、**執行命令**。

1. 在**命令歷史記錄**索引標籤上，使用篩選條件來尋找文件的執行。

1. 選擇命令的 ID 以開啟其詳細資訊頁面。

1. 選擇執行個體的 ID。檢閱每個步驟的輸出和錯誤。