

• 2026 年 4 月 30 日之後， AWS Systems Manager CloudWatch Dashboard 將不再可用。客戶可以繼續使用 Amazon CloudWatch 主控台來檢視、建立和管理其 Amazon CloudWatch 儀表板，就像現在一樣。如需詳細資訊，請參閱 [Amazon CloudWatch Dashboard 文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

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

# Automation 執行手冊的視覺化設計體驗
<a name="automation-visual-designer"></a>

AWS Systems Manager 自動化提供低程式碼視覺化設計體驗，協助您建立自動化 Runbook。視覺化設計體驗提供拖放式介面，可選擇新增自己的程式碼，讓您可以更輕鬆地建立和編輯執行手冊。透過視覺化設計體驗，您可以執行下列操作：
+ 控制條件陳述式。
+ 控制每個動作篩選或轉換輸入和輸出的方式。
+ 設定錯誤處理。
+ 製作新執行手冊的原型。
+ 使用您的原型執行手冊做為 AWS Toolkit for Visual Studio Code本機開發的起點。

當您建立或編輯執行手冊時，可以從 [Automation 主控台](https://console.aws.amazon.com/systems-manager/automation/home?region=us-east-1#/)存取視覺化設計體驗。當您建立執行手冊時，視覺化設計體驗會驗證您的工作並自動產生程式碼。您可以檢閱產生的程式碼，或將其匯出以進行本地開發。完成後，您可以儲存和執行您的執行手冊，並在 Systems Manager Automation 主控台中檢查結果。

**Topics**
+ [介面概觀](visual-designer-interface-overview.md)
+ [運用視覺化設計體驗](visual-designer-use.md)
+ [設定輸入和輸出](visual-designer-action-inputs-outputs.md)
+ [藉助視覺化設計體驗錯誤處理](visual-designer-error-handling.md)
+ [教學課程：使用視覺化設計體驗建立執行手冊](visual-designer-tutorial.md)

# 視覺化設計體驗介面的概觀
<a name="visual-designer-interface-overview"></a>

Systems Manager Automation 的視覺化設計體驗是低程式碼的視覺化工作流程設計工具，可協助您建立 Automation 執行手冊。

透過介面組件的概觀了解視覺化設計體驗：

![\[視覺化設計體驗元件\]](http://docs.aws.amazon.com/zh_tw/systems-manager/latest/userguide/images/visual_designer_overview.png)

+ **動作**瀏覽器包含**動作**、**AWS API** 和**執行手冊**索引標籤。
+ 在*畫布*上，您可以將動作拖放到工作流程圖形中、變更動作順序，以及選取要設定或檢視的動作。
+ 您可以在**表單**面板中檢視和編輯您在畫布上選取之任何動作的屬性。選取**內容**切換按鈕可檢視執行手冊的 YAML 或 JSON，並反白顯示目前選取的動作。

當您需要協助時，**資訊**連結會開啟包含內容資訊的面板。這些面板也包含 Systems Manager Automation 文件中相關主題的連結。

## 動作瀏覽器
<a name="visual-designer-actions"></a>

從**動作**瀏覽器，您可以選取要拖放到工作流程圖形的動作。您可以使用**動作**瀏覽器頂端的搜尋欄位來搜尋所有動作。**動作**瀏覽器包含下列索引標籤：
+ **動作**索引標籤提供自動化動作清單，您可以將這些動作拖放到畫布中執行手冊工作流程圖形中。
+ **AWS APIs** 索引標籤提供 AWS APIs 的清單，您可以在畫布中拖放至 Runbook 的工作流程圖表。
+ **執行手冊**索引標籤提供了多個即用型、可重複使用的執行手冊做為建置區塊，您可用於各種用例。例如，您可以使用執行手冊在工作流程的 Amazon EC2 執行個體上執行常見的修復任務，而不必重新建立相同的動作。

![\[視覺化設計體驗動作瀏覽器\]](http://docs.aws.amazon.com/zh_tw/systems-manager/latest/userguide/images/visual_designer_actions_multi_view.png)


## Canvas
<a name="visual-designer-canvas"></a>

選擇要新增至自動化的動作後，將其拖曳至畫布並放入工作流程圖形中。您也可以拖放動作，將其移動到執行手冊工作流程的不同位置。如果工作流程很複雜，則您可能無法在畫布面板中檢視所有工作流程。使用畫布頂端的控制項來放大或縮小。若要檢視工作流程的不同部分，可以在畫布中拖曳工作流程圖形。

從**動作**瀏覽器中拖曳動作，將其放入執行手冊的工作流程圖形中。有一條線會顯示它將放置在工作流程中的位置。若要變更動作的順序，可以將其拖曳至工作流程中的其他位置。新動作已新增至您的工作流程，其程式碼會自動產生。

![\[視覺化設計體驗畫布\]](http://docs.aws.amazon.com/zh_tw/systems-manager/latest/userguide/images/visual_designer_canvas.png)


## 表格
<a name="visual-designer-form"></a>

將動作新增至執行手冊工作流程之後，您可以對其進行設定，以符合您的用例。選擇您要設定的動作，您就會在**表單**面板中看到其參數和選項。您也可以選擇**內容**按鈕，查看 YAML 或 JSON 程式碼。與您已選取的動作相關聯的程式碼會反白顯示。

![\[視覺化設計體驗表單面板\]](http://docs.aws.amazon.com/zh_tw/systems-manager/latest/userguide/images/visual_designer_form.png)


![\[視覺化設計體驗內容面板\]](http://docs.aws.amazon.com/zh_tw/systems-manager/latest/userguide/images/visual_designer_content.png)


## 鍵盤快速鍵
<a name="visual-designer-keyboard-shortcuts"></a>

視覺化設計體驗支援下列資料表所示的鍵盤快速鍵。


| 鍵盤快速鍵 | 函式 | 
| --- | --- | 
| Ctrl\$1Z | 復原上一個操作。 | 
| Ctrl\$1Shift\$1Z | 重做上一個操作。 | 
| Alt\$1C | 將工作流程置於畫布的中心。 | 
| 退格鍵 | 移除所有選取的狀態。 | 
| 刪除 | 移除所有選取的狀態。 | 
| Ctrl\$1D | 複製選取的狀態。 | 

# 運用視覺化設計體驗
<a name="visual-designer-use"></a>

了解如何使用視覺化設計體驗來建立、編輯和執行執行手冊工作流程。工作流程準備就緒後，您可以儲存或將其匯出。您也可以使用視覺化設計體驗來快速建立原型。

## 建立執行手冊工作流程
<a name="visual-designer-create-runbook-workflow"></a>

1. 登入 [Systems Manager Automation 主控台](https://console.aws.amazon.com/systems-manager/automation/home?region=us-east-1#/)。

1. 選擇**建立執行手冊**。

1. 在**名稱**方塊中輸入執行手冊的名稱，例如 `MyNewRunbook`。

1. 在**設計**和**程式碼**切換按鈕旁，選取鉛筆圖示，然後輸入執行手冊的名稱。

您現在可以為新的執行手冊設計工作流程。

## 設計執行手冊
<a name="visual-designer-build"></a>

 若要使用視覺化設計體驗來設計執行手冊工作流程，您將自動化動作從**動作**瀏覽器拖曳到畫布中，將其放置在想要的工作流程中。您也可以將動作拖曳至其他位置，在工作流程中對動作重新排序。將動作拖曳到畫布上時，您可在工作流程中放置動作的任何位置會出現一條線。將動作拖放到畫布上後，其程式碼將自動產生並新增至您的執行手冊的內容中。

如果您知道要新增的動作名稱，則請使用**動作**瀏覽器頂端的搜尋方塊尋找動作。

將動作拖放到畫布上後，請使用右側的**表單**面板進行設定。此面板包含您放置在畫布上的每個自動化動作或 API 動作的**一般**、**輸入**、**輸出**和**組態**索引標籤。例如，**一般**索引標籤包含下列區段：
+ **步驟名稱**可用於識別步驟。為步驟名稱指定唯一值。
+ **描述**可協助您描述動作在您的執行手冊的工作流程中的作用。

**輸入**索引標籤包含的欄位會根據動作而有所不同。例如，`aws:executeScript` 自動化動作包含下列區域：
+ **執行期**是用於執行所提供指令碼的執行期語言。
+ **處理常式**是您的函數的名稱。您必須確保處理常式中定義的函數有兩個參數：`events` 和 `context`。PowerShell 執行期不支援此參數。
+ **指令碼**是您想要在工作流程期間執行的嵌入式指令碼。
+ (選用) **附件**適用於可由動作調用的獨立指令碼或 .zip 檔案。JSON 執行手冊需要此參數。

**輸出**索引標籤可協助您指定要從動作輸出的值。您可以在工作流程的後續動作中參考輸出值，或從動作產生輸出，以供日誌記錄之用。並非所有動作都支援輸出，因而並非所有動作都會有**輸出**索引標籤。例如，`aws:pause` 動作不支援輸出。對於支援輸出的動作，**輸出**索引標籤包含下列區段：
+ **名稱**是要用於輸出值的名稱。您可以在工作流程的後續動作中參考輸出。
+ **選取器**是以 `"$."` 開頭的 JSONPath 運算式字串，用於在 JSON 元素中選取一個或多個元件。
+ **類型**是輸出值的資料類型。例如，`String` 或 `Integer` 資料類型。

**組態**索引標籤包含所有自動化動作均可使用的屬性和選項。該動作由下列各部分組成：
+ **嘗試次數上限**屬性是動作失敗時重試的次數。
+ **逾時秒**屬性指定動作的逾時值。
+ **是關鍵**屬性決定動作失敗是否會停止整個自動化作業。
+ **下一步**屬性決定自動化在執行手冊中接下來執行的動作。
+ **失敗時**屬性決定如果動作失敗，自動化在執行手冊中接下來執行的動作。
+ **取消時**屬性會決定如果使用者取消動作，自動化在執行手冊中接下來執行的動作。

若要刪除動作，您可以使用退格鍵 (位於畫布上方的工具列)，或按一下滑鼠右鍵並選擇**刪除動作**。

隨著工作流程的增長，它可能不適應畫布。若要協助讓工作流程適應畫布，請嘗試下列選項之一：
+ 使用側面板上的控制項，調整面板的大小或關閉面板。
+ 使用畫布頂端的工具列可放大或縮小工作流程圖形。

## 更新執行手冊
<a name="visual-designer-update-runbook"></a>

您可以透過建立新版本的執行手冊，更新現有的執行手冊工作流程。您可以使用視覺化設計體驗或直接編輯程式碼，更新您的執行手冊。請使用下列程序來更新現有執行手冊：

1. 登入 [Systems Manager Automation 主控台](https://console.aws.amazon.com/systems-manager/automation/home?region=us-east-1#/)。

1. 選擇您要更新的執行手冊。

1. 選擇 **Create new version (建立新版本)**。

1. 視覺化設計體驗包含兩個窗格：程式碼窗格和視覺化工作流程窗格。在視覺化工作流程窗格中選擇**設計**，以透過視覺化設計體驗編輯工作流程。完成後，請選擇**建立新版本**，以儲存變更並退出。

1. (選用) 使用程式碼窗格編輯 YAML 或 JSON 中的執行手冊內容。

## 匯出執行手冊
<a name="visual-designer-export-runbook"></a>

若要匯出執行手冊工作流程的 YAML 或 JSON 程式碼，以及工作流程的圖表，請使用下列程序：

1. 在**文件**主控台中選擇您的執行手冊。

1. 選擇 **Create new version (建立新版本)**。

1. 在**動作**下拉式清單中，選擇要匯出圖形或執行手冊，以及您偏好的格式。

# 設定動作的輸入和輸出
<a name="visual-designer-action-inputs-outputs"></a>

每個自動化動作都會根據其收到的輸入作出回應。在大多數情況下，您可將輸出傳遞給後續動作。在視覺化設計體驗中，您可以在**表單**面板的**輸入**和**輸出**索引標籤設定動作的輸入和輸出資料。

如需如何定義和使用自動化動作輸出的詳細資訊，請參閱 [使用動作輸出作為輸入](automation-action-outputs-inputs.md)。

## 為動作提供輸入資料
<a name="providing-input"></a>

每個自動化動作都有一或多個您必須為其提供值的輸入。您為動作的輸入提供的值取決於動作所接受的資料類型和格式。例如，`aws:sleep` 動作需要 `Duration` 輸入的 ISO 8601 格式字串值。

通常，您可以在執行手冊的工作流程中使用動作，該動作會傳回您要在後續動作中使用的輸出。請務必確保輸入值正確無誤，以避免執行手冊工作流程中發生錯誤。輸入值也很重要，因為會決定動作是否傳回預期的輸出。例如，使用 `aws:executeAwsApi` 動作時，您需要確保為 API 操作提供正確的值。

## 定義動作的輸出資料
<a name="defining-output"></a>

某些自動化動作會在執行其定義的操作後傳回輸出。傳回輸出的動作具有預先定義的輸出，或能讓您自行定義輸出。例如，`aws:createImage` 動作具有傳回 `ImageId` 和 `ImageState` 的預先定義輸出。相比之下，使用 `aws:executeAwsApi` 動作，您可以從指定的 API 操作中定義所需的輸出。因此，您可以從單一 API 操作傳回一或多個值，以便在後續動作中使用。

您必須指定輸出的名稱、資料類型和輸出值，方能定義自己的自動化動作輸出。若要繼續使用 `aws:executeAwsApi` 動作作為範例，假設您正在從 Amazon EC2 呼叫 `DescribeInstances` API 操作。在此範例中，您想要傳回或輸出 Amazon EC2 執行個體的 `State`，並根據輸出對執行手冊的工作流程進行分支。您可以選擇將輸出命名為 **InstanceState**，並使用 **String** 資料類型。

定義輸出實際值的程序會取決於動作而略有差異。例如，若您正在使用 `aws:executeScript` 動作，則必須在函數中使用 `return` 陳述式，為輸出提供資料。使用其他動作 (如 `aws:executeAwsApi`、`aws:waitForAwsResourceProperty` 和 `aws:assertAwsResourceProperty`) 會需要 `Selector`。或正如某些動作所參考的，`Selector` 或 `PropertySelector` 是用來處理來自 API 操作的 JSON 回應的 JSONPath 字串。了解來自 API 操作的 JSON 回應物件的結構非常重要，以便您為輸出選擇正確的值。使用前面提到的 `DescribeInstances` API 操作，請參閱下面的範例 JSON 回應：

```
{
  "reservationSet": {
    "item": {
      "reservationId": "r-1234567890abcdef0",
      "ownerId": 123456789012,
      "groupSet": "",
      "instancesSet": {
        "item": {
          "instanceId": "i-1234567890abcdef0",
          "imageId": "ami-bff32ccc",
          "instanceState": {
            "code": 16,
            "name": "running"
          },
          "privateDnsName": "ip-192-168-1-88.eu-west-1.compute.internal",
          "dnsName": "ec2-54-194-252-215.eu-west-1.compute.amazonaws.com",
          "reason": "",
          "keyName": "my_keypair",
          "amiLaunchIndex": 0,
          "productCodes": "",
          "instanceType": "t2.micro",
          "launchTime": "2018-05-08T16:46:19.000Z",
          "placement": {
            "availabilityZone": "eu-west-1c",
            "groupName": "",
            "tenancy": "default"
          },
          "monitoring": {
            "state": "disabled"
          },
          "subnetId": "subnet-56f5f000",
          "vpcId": "vpc-11112222",
          "privateIpAddress": "192.168.1.88",
          "ipAddress": "54.194.252.215",
          "sourceDestCheck": true,
          "groupSet": {
            "item": {
              "groupId": "sg-e4076000",
              "groupName": "SecurityGroup1"
            }
          },
          "architecture": "x86_64",
          "rootDeviceType": "ebs",
          "rootDeviceName": "/dev/xvda",
          "blockDeviceMapping": {
            "item": {
              "deviceName": "/dev/xvda",
              "ebs": {
                "volumeId": "vol-1234567890abcdef0",
                "status": "attached",
                "attachTime": "2015-12-22T10:44:09.000Z",
                "deleteOnTermination": true
              }
            }
          },
          "virtualizationType": "hvm",
          "clientToken": "xMcwG14507example",
          "tagSet": {
            "item": {
              "key": "Name",
              "value": "Server_1"
            }
          },
          "hypervisor": "xen",
          "networkInterfaceSet": {
            "item": {
              "networkInterfaceId": "eni-551ba000",
              "subnetId": "subnet-56f5f000",
              "vpcId": "vpc-11112222",
              "description": "Primary network interface",
              "ownerId": 123456789012,
              "status": "in-use",
              "macAddress": "02:dd:2c:5e:01:69",
              "privateIpAddress": "192.168.1.88",
              "privateDnsName": "ip-192-168-1-88.eu-west-1.compute.internal",
              "sourceDestCheck": true,
              "groupSet": {
                "item": {
                  "groupId": "sg-e4076000",
                  "groupName": "SecurityGroup1"
                }
              },
              "attachment": {
                "attachmentId": "eni-attach-39697adc",
                "deviceIndex": 0,
                "status": "attached",
                "attachTime": "2018-05-08T16:46:19.000Z",
                "deleteOnTermination": true
              },
              "association": {
                "publicIp": "54.194.252.215",
                "publicDnsName": "ec2-54-194-252-215.eu-west-1.compute.amazonaws.com",
                "ipOwnerId": "amazon"
              },
              "privateIpAddressesSet": {
                "item": {
                  "privateIpAddress": "192.168.1.88",
                  "privateDnsName": "ip-192-168-1-88.eu-west-1.compute.internal",
                  "primary": true,
                  "association": {
                    "publicIp": "54.194.252.215",
                    "publicDnsName": "ec2-54-194-252-215.eu-west-1.compute.amazonaws.com",
                    "ipOwnerId": "amazon"
                  }
                }
              },
              "ipv6AddressesSet": {
                "item": {
                  "ipv6Address": "2001:db8:1234:1a2b::123"
                }
              }
            }
          },
          "iamInstanceProfile": {
            "arn": "arn:aws:iam::123456789012:instance-profile/AdminRole",
            "id": "ABCAJEDNCAA64SSD123AB"
          },
          "ebsOptimized": false,
          "cpuOptions": {
            "coreCount": 1,
            "threadsPerCore": 1
          }
        }
      }
    }
  }
}
```

在 JSON 回應物件中，執行個體 `State` 在 `Instances` 物件中形成巢狀，該物件又在 `Reservations` 物件中形成巢狀。若要傳回執行個體 `State` 的值，請為 `Selector` 使用下列字串，以便在我們的輸出中使用該值：**\$1.Reservations[0].Instances[0].State.Name**。

若要在執行手冊工作流程的後續動作中參照輸出值，請使用下列格式：`{{ StepName.NameOfOutput }}`。例如 **\$1\$1 GetInstanceState.InstanceState \$1\$1**。在視覺化設計體驗中，您可以使用輸入的下拉式清單，選擇要在後續動作中使用的輸出值。在後續動作中使用輸出時，輸出的資料類型必須與輸入的資料類型相符。在此範例中，`InstanceState` 輸出為 `String`。因此，若要在後續動作的輸入中使用該值，輸入必須接受 `String`。

# 藉助視覺化設計體驗錯誤處理
<a name="visual-designer-error-handling"></a>

根據預設，當動作報告錯誤時，Automation 會完全停止執行手冊的工作流程。這是因為所有動作的 `onFailure` 屬性預設值為 `Abort`。您可以設定 Automation 如何處理您的執行手冊工作流程中的錯誤。即使已設定錯誤處理，某些錯誤仍可能導致自動化操作失敗。如需詳細資訊，請參閱[故障診斷 Systems Manager Automation](automation-troubleshooting.md)。在視覺化設計體驗中，您可以在**組態**面板設定錯誤處理。

![\[錯誤處理選項\]](http://docs.aws.amazon.com/zh_tw/systems-manager/latest/userguide/images/visual_designer_error_handling.png)


## 出現錯誤時重試動作
<a name="retry-actions"></a>

若要在出現錯誤時重試動作，請指定**嘗試次數上限**屬性的值。預設值為 1. 如果指定的值大於 1，則在所有重試嘗試失敗之前，動作不會視為失敗。

## 逾時
<a name="timeout-seconds"></a>

您可設定動作逾時，以設定動作失敗前可執行的秒數上限。若要設定逾時，請在**逾時秒**屬性中輸入動作失敗之前，動作應等待的秒數。如果達到逾時且動作的 `Max attempts` 值大於 1，則在完成所有重試之前，步驟不會視為逾時。

## 失敗的動作
<a name="failure-actions"></a>

根據預設，當動作失敗時，Automation 會完全停止執行手冊的工作流程。您可以透過為執行手冊中動作的**失敗時**屬性指定替代值，以修改此行為。如果您希望工作流程繼續執行執行手冊中的下個步驟，則請選擇**繼續**。如果您希望工作流程跳至執行手冊中的其他後續步驟，則請選擇**步驟**，然後輸入步驟的名稱。

## 取消的動作
<a name="cancel-actions"></a>

根據預設，當使用者取消動作時，Automation 會完全停止執行手冊的工作流程。您可以透過為執行手冊中動作的**取消時**屬性指定替代值，以修改此行為。如果您希望工作流程跳至執行手冊中的其他後續步驟，則請選擇**步驟**，然後輸入步驟的名稱。

## 關鍵動作
<a name="critical-actions"></a>

您可以將某個動作指定為*關鍵*動作，這表示它會決定了自動化操作的整體報告狀態。如果此指定步驟失敗，則 Automation 會將最終狀態報告為 `Failed`，不論其他動作是否成功。若要將動作設定為關鍵，請將**為關鍵**屬性的預設值保留為 **True**。

## 結束動作
<a name="end-actions"></a>

**為結束**屬性會在指定動作結束時停止自動化。此屬性的預設值為 `false`。如果您為動作設定此屬性，則無論動作成功還是失敗，自動化都會停止。此屬性最常與 `aws:branch` 動作搭配使用，以處理非預期或未定義的輸入值。下列範例顯示預期執行個體狀態為 `running`、`stopping` 或 `stopped` 的執行手冊。如果執行個體處於不同的狀態，則自動化將結束。

![\[視覺化設計體驗是最終範例\]](http://docs.aws.amazon.com/zh_tw/systems-manager/latest/userguide/images/visual_designer_is_end_example.png)


# 教學課程：使用視覺化設計體驗建立執行手冊
<a name="visual-designer-tutorial"></a>

在本教學課程中，您將了解使用 Systems Manager Automation 提供的視覺化設計體驗的基礎概念。在視覺化設計體驗中，您可以建立使用多個動作的執行手冊。您可使用拖放功能來排列畫布上的動作。您也可搜尋、選取和設定這些動作。然後，您可檢視執行手冊工作流程自動產生的 YAML 程式碼，退出結束視覺化設計體驗，執行該執行手冊，以及檢閱執行詳細資料。

本教學課程還將向您展示如何更新執行手冊並查看新版本。在教學課程結束時，您可執行清理步驟並刪除執行手冊。

完成本教學課程之後，您就會知道如何使用視覺化設計體驗來建立執行手冊。您還將知道如何更新、執行和刪除您的執行手冊。

**注意**  
在您開始教學課程之前，請務必先完成 [設定自動化](automation-setup.md)。

**Topics**
+ [步驟 1：導覽至視覺化設計體驗](#navigate-console)
+ [步驟 2：建立工作流程](#create-workflow)
+ [步驟 3：檢閱自動產生的程式碼](#view-generated-code)
+ [步驟 4：執行新的執行手冊](#use-tutorial-runbook)
+ [步驟 5：清除](#cleanup-tutorial-runbook)

## 步驟 1：導覽至視覺化設計體驗
<a name="navigate-console"></a>

1. 登入 [Systems Manager Automation 主控台](https://console.aws.amazon.com/systems-manager/automation/home?region=us-east-1#/)。

1. 選擇**建立自動化**以儲存執行手冊。

## 步驟 2：建立工作流程
<a name="create-workflow"></a>

在視覺化設計體驗中，工作流程是畫布上您的執行手冊的圖形表示。您可以使用視覺化設計體驗來定義、設定和檢查執行手冊的個別動作。

**若要建立工作流程**

1. 在**設計**和**程式碼**切換按鈕旁，選取鉛筆圖示，然後輸入執行手冊的名稱。針對本教學，輸入 **VisualDesignExperienceTutorial**。  
![\[視覺化設計體驗為您的執行手冊命名\]](http://docs.aws.amazon.com/zh_tw/systems-manager/latest/userguide/images/visual_designer_tutorial_name.png)

1. 在**表單**面板的**文件屬性**區段中，展開**輸入參數**下拉式清單，然後選取**新增參數**。

   1. 在**參數名稱**欄位中，輸入 **InstanceId**。

   1. 在**類型**下拉式清單中，選擇 **AWS::EC2::Instance**。

   1. 選取**必要**切換按鈕。  
![\[為您的執行手冊建立一個參數\]](http://docs.aws.amazon.com/zh_tw/systems-manager/latest/userguide/images/visual_designer_actions_tutorial_parameter.png)

1. 在 **AWS API** 瀏覽器中，在搜尋列輸入 **DescribeInstances**。

1. 將 **Amazon EC2 - DescribeInstances** 動作拖曳至空白畫布。

1. 對於**步驟名稱**，輸入值。在本教學課程中，您可以使用名稱 **GetInstanceState**。  
![\[選擇一個 Amazon EC2 描述執行個體 API 動作。\]](http://docs.aws.amazon.com/zh_tw/systems-manager/latest/userguide/images/visual_designer_tutorial_api_action.png)

   1. 展開**其他輸入**下拉式清單，然後在**輸入名稱**欄位中輸入 **InstanceIds**。

   1. 選擇**輸入**索引標籤。

   1. 在**輸入值**欄位中，選擇 **InstanceId** 文件輸入。這會參考您在程序開始時建立的輸入參數值。由於 `DescribeInstances` 動作的 **InstanceIds** 輸入接受 `StringList` 值，因此您必須以方括號包裝 **InstanceId** 輸入。**輸入值**的 YAML 應符合下方項目：**['\$1\$1 InstanceId \$1\$1']**。

   1. 在**輸出**索引標籤中，選取**新增輸出**，然後在**名稱**欄位中輸入 **InstanceState**。

   1. 在**選取器**欄位中輸入 **\$1.Reservations[0].Instances[0].State.Name**。

   1. 在**類型**下拉式清單中選擇**字串**。

1. 從**動作**瀏覽器拖曳**分支**動作，並將其放置在 **`GetInstanceState`** 步驟下方。

1. 對於**步驟名稱**，輸入值。在本教學課程中，使用名稱 `BranchOnInstanceState`。

   若要定義分支邏輯，請執行下列操作：

   1. 在畫布上選擇 **`Branch`** 狀態。然後，在**輸入**和**選擇**下，選取鉛筆圖示，以編輯**規則 \$11**。

   1. 選擇**新增條件**。

   1. 在**規則 \$11 的條件**對話方塊中，從**變數**下拉式清單中選擇 **GetInstanceState.InstanceState** 步驟輸出。

   1. 對於**運算子**，選擇**等於**。

   1. 對於**值**，從下拉式清單中選擇**字串**。輸入 **stopped**。  
![\[定義分支動作的條件。\]](http://docs.aws.amazon.com/zh_tw/systems-manager/latest/userguide/images/visual_designer_tutorial_condition.png)

   1. 選取**儲存條件**。

   1. 選擇**新增新的規則**。

   1. 選擇**規則 \$12** 的**新增條件**。

   1. 在**規則 \$12 的條件**對話方塊中，從**變數**下拉式清單中選擇 **GetInstanceState.InstanceState** 步驟輸出。

   1. 對於**運算子**，選擇**等於**。

   1. 對於**值**，從下拉式清單中選擇**字串**。輸入 **stopping**。

   1. 選取**儲存條件**。

   1. 選擇**新增新的規則**。

   1. 對於**規則 \$13**，選擇**新增條件**。

   1. 在**規則 \$13 的條件**對話方塊中，從**變數**下拉式清單中選擇 **GetInstanceState.InstanceState** 步驟輸出。

   1. 對於**運算子**，選擇**等於**。

   1. 對於**值**，從下拉式清單中選擇**字串**。輸入 **running**。

   1. 選取**儲存條件**。

   1. 在**預設規則**中，針對**預設步驟**選擇**移至結尾**。

1. 將**變更執行個體狀態**動作拖曳至 **\$1\$1 GetInstanceState.InstanceState \$1\$1 == "stopped"** 條件下方空白的**拖曳至此處**方塊。

   1. 對於**步驟名稱**，輸入 **StartInstance**。

   1. 在**輸入**索引標籤的**執行個體 ID** 下，從下拉式清單中選擇 **InstanceId** 文件輸入值。

   1. 對於**所需狀態**，請指定 **`running`**。

1. 將**等待 AWS 資源**動作拖曳至 **\$1\$1 GetInstanceState.InstanceState \$1\$1 == "stopping"** 條件下的空白**拖曳動作此處**方塊。

1. 對於**步驟名稱**，輸入值。在本教學課程中，使用名稱 `WaitForInstanceStop`。

   1. 在**服務**欄位中，選擇 **Amazon EC2**。

   1. 在 **API** 欄位中，選擇 **DescribeInstances**。

   1. 在**屬性選取器**欄位中輸入 **\$1.Reservations[0].Instances[0].State.Name**。

   1. 對於**所需值**參數，輸入 **`["stopped"]`**。

   1. 在 **WaitForInstanceStop** 動作的**組態**索引標籤中，從**下一步**下拉式清單中選擇 **StartInstance**。

1. 將**在執行個體上執行命令**動作拖曳至 **\$1\$1 GetInstanceState.InstanceState \$1\$1 == "running"** 條件下方空白的**拖曳至此處**方塊。

1. 對於**步驟名稱**，輸入 **SayHello**。

   1. 在**輸入**索引標籤中，為**文件名稱**參數輸入 **AWS-RunShellScript**。

   1. 對於 **InstanceIds**，從下拉式清單中選擇**執行個體 ID** 文件輸入值。

   1. 展開**其他輸入**下拉式清單，然後在**輸入名稱**下拉清單中選擇**參數**。

   1. 在**輸入值**欄位中輸入 **`{"commands": "echo 'Hello World'"}`**。

1. 檢閱畫布中已完成的執行手冊，然後選取**建立手冊**以儲存教學執行手冊。  
![\[檢閱並建立執行手冊。\]](http://docs.aws.amazon.com/zh_tw/systems-manager/latest/userguide/images/visual_designer_tutorial_complete.png)

## 步驟 3：檢閱自動產生的程式碼
<a name="view-generated-code"></a>

當您將動作從**動作**瀏覽器拖放到畫布上時，視覺化設計體驗會即時自動撰寫執行手冊的 YAML 或 JSON 內容。您可檢閱和編輯此程式碼。若要檢視自動產生的程式碼，請為**設計**和**程式碼**切換按鈕選取**程式碼**。

## 步驟 4：執行新的執行手冊
<a name="use-tutorial-runbook"></a>

建立您的執行手冊後，您可以執行自動化。

**若要執行新的自動化執行手冊**

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

1. 在導覽窗格中，選擇 **Automation (自動化)**，接著選擇 **Execute automation (執行自動化)**。

1. 在 **Automation document** (自動化文件) 清單中，選擇 Runbook。在 **Document categories** (文件類別) 窗格中選擇一個或多個選項，根據 SSM 文件的用途來進行篩選。若要檢視您擁有的 Runbook，請選擇 **Owned by me** (我所擁有的) 索引標籤。若要檢視與您帳戶共用的 Runbook，請選擇 **Shared with me** (與我共用的) 索引標籤。若要檢視所有 Runbook，請選擇 **All documents** (所有文件) 索引標籤。
**注意**  
您可以選擇 Runbook 名稱檢視 Runbook 資訊。

1. 在 **Document details** (文件詳細資訊) 部分，確認 **Document version** (文件版本) 設定為您想要執行的版本。系統包括以下版本選項：
   + **執行期的預設版本**：如果 Automation 執行手冊會定期更新且已指派新的預設版本，則請選擇此選項。
   + **執行期的最新版本**：如果 Automation 執行手冊會定期更新，而您想要執行最近更新的版本，請選擇此選項。
   + **1 (預設)**：選擇此選項以執行文件的第一個版本，也是預設版本。

1. 選擇**下一步**。

1. 在**執行自動化執行手冊**章節中，選擇**簡易執行**。

1. 在 **Input parameters (輸入參數)** 部分，指定所需的輸入。或者，您也可以從 **AutomationAssumeRole** 清單中選擇 IAM 服務角色。

1. (選用) 選擇要套用至您的自動化以便加以監控的 Amazon CloudWatch 警示。若要將 CloudWatch 警示連接至您的自動化，啟動自動化的 IAM 主體必須具備 `iam:createServiceLinkedRole` 動作的許可。如需有關 CloudWatch 警示的詳細資訊，請參閱[使用 Amazon CloudWatch 警示](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)。如果您的警示啟用，則會停止自動化。如果使用 AWS CloudTrail，則您會在追蹤中看到 API 呼叫。

1. 選擇 **Execute (執行)**。

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

**若要刪除您的執行手冊**

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

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

1. 選擇**我所擁有**索引標籤。

1. 找到 **VisualDesignExperienceTutorial** 執行手冊。

1. 選取文件卡頁面上的按鈕，然後從**動作**下拉式清單中選擇**刪除文件**。