

• AWS Systems Manager CloudWatch ダッシュボードは、2026 年 4 月 30 日以降は利用できなくなります。お客様は、これまでと同様に Amazon CloudWatch コンソールを使用して、Amazon CloudWatch ダッシュボードの表示、作成、管理を継続できます。詳細については、「[Amazon CloudWatch ダッシュボードのドキュメント](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)」を参照してください。

# オートメーションランブックのビジュアルデザインエクスペリエンス
<a name="automation-visual-designer"></a>

AWS Systems Manager 自動化は、自動化ランブックの作成に役立つローコードのビジュアルデザイン体験を提供します。ビジュアルデザインエクスペリエンスでは、独自のコードを追加できるドラッグアンドドロップインターフェイスが提供されるため、ランブックをより簡単に作成および編集できます。ビジュアルデザインのエクスペリエンスを使用すると、次のことを実行できます。
+ 条件ステートメント
+ アクションごとに入力と出力をどのようにフィルタリングまたは変換するかを制御します。
+ エラー処理を設定する。
+ 新しいランブックを試作する。
+ AWS Toolkit for Visual Studio Code を使用したローカル開発の出発点として、プロトタイプランブックを使用してください。

ランブックを作成または編集すると、[オートメーションコンソール](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 のビジュアルデザインエクスペリエンスは、自動化ランブックの作成に役立つローコードのビジュアルワークフローデザイナーです。

インターフェースコンポーネントの概要を使って、ビジュアルデザインエクスペリエンスについて理解しましょう。

![\[ビジュアルデザインエクスペリエンスコンポーネント\]](http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/images/visual_designer_overview.png)

+ **[アクション]** ブラウザーには **[アクション]**、**[AWSAPI]**、**[ランブック]** タブがあります。
+ [キャンバス] は、状態をワークフローのグラフにドラッグアンドドロップし、状態の順序を変更し、状態を選択して、状態を設定または表示に選択します。
+ **[フォーム]** パネルでは、キャンバス上で選択した任意のアクションのプロパティを表示および編集できます。**[コンテンツ]** トグルを選択すると、現在選択されているアクションが強調表示された状態でランブックの YAML または JSON が表示されます。

**[Info]** (情報) リンクは、ヘルプが必要になるとコンテキスト情報を含むパネルを開きます。これらのパネルには、Systems Manager Automationドキュメントの関連トピックへのリンクも含まれます。

## アクションブラウザー
<a name="visual-designer-actions"></a>

**[アクション]** ブラウザーから、アクションを選択してワークフローグラフにドラッグアンドドロップできます。すべての状態を検索するには、**[アクション]** ブラウザー上部の検索フィールドを使用します。**[アクション]** ブラウザーには以下のタブがあります。
+ **[アクション]** タブには、キャンバス内のランブックワークフローグラフにドラッグアンドドロップできるオートメーションアクションのリストが表示されます。
+ **AWS[アクション]** タブには、キャンバス内のワークフローグラフにドラッグアンドドロップできる AWS API のリストが表示されます。
+ **[ランブック]** タブには、さまざまなユースケースに使用できるビルディングブロックとして、すぐに使える再利用可能なランブックがいくつか用意されています。例えば、ランブックを使用すると、同じアクションを再作成しなくても、ワークフロー内の Amazon EC2 インスタンスで一般的な修正タスクを実行できます。

![\[ビジュアルデザインエクスペリエンス-アクションブラウザ\]](http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/images/visual_designer_actions_multi_view.png)


## キャンバス
<a name="visual-designer-canvas"></a>

ワークフローに追加する状態を選択した後、キャンバスにドラッグし、ワークフローのグラフにドロップします。状態をドラッグアンドドロップして、ワークフローの別の場所に移動することもできます。ワークフローが複雑な場合は、キャンバスパネルでワークフローをすべて表示できない場合があります。キャンバスの上部にあるコントロールを使用して、拡大/縮小します。ワークフローのグラフのさまざまな部分を表示するには、キャンバスでワークフローのグラフをドラッグします。

**[アクション]** ブラウザーから、アクションを選択してランブックワークフローグラフにドラッグアンドドロップできます。ラインはワークフローのどこに配置されるかを示します。状態の順序を変更するには、ワークフロー内の別の場所にドラッグします。新しいワークフロー状態がワークフローに追加され、そのコードが自動生成されます。

![\[ビジュアルデザインエクスペリエンスキャンバス\]](http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/images/visual_designer_canvas.png)


## フォーム
<a name="visual-designer-form"></a>

ランブックワークフローにアクションを追加したら、そのアクションをユースケースに合わせて設定できます。設定したいアクションを選択すると、**[フォーム]** パネルにそのパラメータとオプションが表示されます。**[コンテンツ]** トグルを選択すると、YAML コードまたは JSON コードを表示することもできます。選択した状態に関連付けられているコードがハイライトされます。

![\[ビジュアルデザインエクスペリエンスフォームパネル\]](http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/images/visual_designer_form.png)


![\[ビジュアルデザインエクスペリエンスコンテンツパネル\]](http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/images/visual_designer_content.png)


## キーボードショートカット
<a name="visual-designer-keyboard-shortcuts"></a>

ビジュアルデザインエクスペリエンスは、次の表に示すキーボードショートカットをサポートします。


| キーボードショートカット | 関数 | 
| --- | --- | 
| Ctrl\$1Z | 直前のオペレーションを元に戻す | 
| Ctrl\$1Shift\$1Z | 直前のオペレーションをやり直す | 
| Alt\$1C | ワークフローをキャンバスの中央に配置する | 
| Backspace | 選択した状態をすべて削除する | 
| 削除 | 選択した状態をすべて削除する | 
| 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` の 2 つのパラメータがあることを確認する必要があります。PowerShell ランタイムはこのパラメータをサポートしていません。
+ **[スクリプト]** は、ワークフローで実行する埋め込みスクリプトです。
+ (オプション) **[添付ファイルは]**、アクションによって呼び出せるスタンドアロンスクリプトまたは.zip ファイル用です。このパラメータは、JSON ランブックでは必須です。

**[出力]** タブは、アクションから出力する値を指定するのに役立ちます。ワークフローの後のアクションで出力値を参照したり、アクションからの出力を生成してログに記録したりできます。すべてのアクションがアウトプットをサポートしているわけではないため、すべてのアクションに **[出力]** タブがあるわけではありません。例えば、`aws:pause` アクションは出力をサポートしていません。出力をサポートするアクションの場合、**[出力]** タブは次のセクションで構成されます。
+ **[名前]** は出力値に使用される名前です。出力はワークフローの後のアクションで参照できます。
+ **[セレクター]** は、`"$."` から始まる JSONPath 式文字列で、JSON 要素内の 1 つまたは複数のコンポーネントを選択するために使用されます。
+ **[タイプ]** は出力値のデータ型です。例えば、`String` または `Integer` データタイプと入力します。

**[設定]** タブには、すべてのオートメーションアクションで使用できるプロパティとオプションが含まれています。アクションには次のセクションがあります。
+ **[最大試行数]** プロパティは、失敗した場合にアクションが再試行される回数です。
+ **[タイムアウト秒]** プロパティは、アクションのタイムアウト値を指定します。
+ **[致命的か]** プロパティは、アクションが失敗したためにオートメーション全体が停止するかどうかを決定します。
+ **[次のステップ]** プロパティは、ランブック内でオートメーションが次に実行するアクションを決定します。
+ **[失敗時]** プロパティは、アクションが失敗した場合にオートメーションがランブックで次に実行するアクションを決定します。
+ **[キャンセル時]** プロパティは、アクションがユーザーによってキャンセルされた場合に、オートメーションがランブックで次に実行するアクションを決定します。

アクションを削除するには、キャンバスの上にあるツールバーの Backspace を使用するか、右クリックして **[アクションを削除]** を選択します。

ワークフローが大きくなると、キャンバスに収まらない場合があります。ワークフローがキャンバスに収まるようにするには、以下のオプションのいずれかを実行します。
+ サイドパネルのコントロールを使用して、パネルのサイズを変更するか、パネルを閉じます。
+ キャンバスの上部にあるコントロールを使用して、ワークフローのグラフをズームインまたはズームアウトします。

## ランブックを更新する
<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. ビジュアルデザインエクスペリエンスには、コードペインとビジュアルワークフローペインの 2 つのペインがあります。ビジュアルワークフローペインで **[デザイン]** を選択して、ビジュアルデザインエクスペリエンスでワークフローを編集します。完了したら、**[新しいバージョンを作成]** を選択して変更を保存し、終了します。

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>

各オートメーションアクションには、値を指定する必要がある入力が 1 つ以上あります。アクションの入力に指定する値は、アクションが受け付けるデータ型と形式によって決まります。例えば、`aws:sleep` アクションの入力には、ISO 8601 形式の文字列値が `Duration` 入力に必要です。

通常、ランブックのワークフローでは、後続のアクションで使用したい出力を返すアクションを使用します。ランブックのワークフローでエラーが発生しないように、入力値が正しいことを確認することが重要です。入力値も重要です。入力値によって、アクションが期待どおりの出力を返すかどうかが決まるからです。例えば、`aws:executeAwsApi` アクションを使用するときは、API 操作に適切な値を指定していることを確認する必要があります。

## アクションの出力データを定義します。
<a name="defining-output"></a>

オートメーションアクションの中には、定義した操作を実行した後に出力を返すものもあります。出力を返すアクションには、出力が事前に定義されているか、ユーザーが出力を定義できるものがあります。例えば、`aws:createImage` アクションには `ImageId` と `ImageState` を返す出力があらかじめ定義されています。これとは対照的に、`aws:executeAwsApi` アクションでは、指定した API オペレーションから必要な出力を定義できます。そのため、1 回の API オペレーションから 1 つ以上の値を返して、後続のアクションで使用できます。

オートメーションアクションの独自の出力を定義するには、出力の名前、データ型、出力値を指定する必要があります。引き続き `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>

デフォルトでは、アクションがエラーを報告すると、オートメーションはランブックのワークフローを完全に停止します。これは、すべてのアクションの `onFailure` プロパティのデフォルト値が `Abort` であるためです。ランブックのワークフローでオートメーションがエラーを処理する方法を設定できます。エラー処理を設定した場合でも、一部のエラーによって実行が失敗する可能性があります。詳細については、「[Systems Manager Automation のトラブルシューティング](automation-troubleshooting.md)」を参照してください。ビジュアルデザインエクスペリエンスでは、**[設定]** パネルでエラー処理を設定します。

![\[エラー処理オプション\]](http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/images/visual_designer_error_handling.png)


## エラー発生時にアクションを再試行してください。
<a name="retry-actions"></a>

エラーが発生した場合にアクションを再試行するには、**[最大試行数]** プロパティに値を指定します。デフォルト値は 1 です。指定した値が 1 より大きい場合、すべての再試行が失敗するまでステップは失敗したと見なされません。

## タイムアウト
<a name="timeout-seconds"></a>

アクションのタイムアウトを設定して、アクションが失敗するまでの最大実行秒数を設定できます。タイムアウトを設定するには、アクションが失敗するまでのアクションの待機秒数を **[タイムアウト秒数]** プロパティに入力します。タイムアウトが達したときにアクションの値が `Max attempts` 以上の場合、すべての再試行が実行されるまでこのステップはタイムアウトとは見なされません。

## 失敗したアクション
<a name="failure-actions"></a>

デフォルトでは、アクションが失敗すると、オートメーションはランブックのワークフローを完全に停止します。ランブック内のアクションの **[失敗時]** プロパティに代替値を指定することで、この動作を変更できます。ワークフローをランブックの次のステップに進めたい場合は、**[続行]** を選択します。ワークフローをランブック内の別の後続ステップにジャンプさせたい場合は、**[ステップ]** を選択し、ステップの名前を入力します。

## キャンセルされたアクション
<a name="cancel-actions"></a>

デフォルトでは、アクションがユーザーによってキャンセルされると、オートメーションはランブックのワークフローを完全に停止します。ランブック内のアクションの **[キャンセル時]** プロパティに代替値を指定することで、この動作を変更できます。ワークフローをランブック内の別の後続ステップにジャンプさせたい場合は、**[ステップ]** を選択し、ステップの名前を入力します。

## 重要なアクション
<a name="critical-actions"></a>

アクションをクリティカルとして指定できます。クリティカルアクションによってオートメーションの全体的なレポートステータスが決まります。この指定のステップが失敗した場合、オートメーションは、他のアクションの成功の有無にかかわらず、失敗の最終的なステータスを `Failed` としてレポートします。アクションをクリティカルとして設定するには、**[クリティカルですか]** プロパティのデフォルト値を **[真]** のままにします。

## アクションを終了する
<a name="end-actions"></a>

**[停止ですか]** プロパティでは、指定されたアクションの最後にオートメーションを停止します。このプロパティのデフォルト値は `false` です。アクションにこのプロパティを設定すると、アクションが成功するか失敗するかに関わらず、オートメーションは停止します。このプロパティは、予期しない入力値や未定義の入力値を処理する `aws:branch` アクションで最もよく使用されます。次の例は、`running`、`stopping` または `stopped` のどちらかのインスタンス状態を想定しているランブックを示しています。インスタンスの状態が異なる場合、自動化は終了します。

![\[ビジュアルデザインエクスペリエンスは最終例です\]](http://docs.aws.amazon.com/ja_jp/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 オートメーションコンソール](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/ja_jp/systems-manager/latest/userguide/images/visual_designer_tutorial_name.png)

1. **[フォーム]** パネルの **[ドキュメント属性]** セクションで、**[入力パラメーター]** ドロップダウンを展開し、**[パラメーターを追加]** を選択します。

   1. **[パラメータ名]** セクションに「**InstanceId**」と入力します。

   1. **[タイプ]** ドロップダウンで、**[AWS:: EC2:: インスタンス]** を選択します。

   1. **[必須]** トグルを選択します。  
![\[ランブックのパラメーターを作成します。\]](http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/images/visual_designer_actions_tutorial_parameter.png)

1. **[AWSAPI]** ブラウザで検索バーに「**DescribeInstances**」と入力します。

1. **[Amazon EC2 — DescribeInstances]** アクションを空のキャンバスにドラッグします。

1. **[名前]** に値を入力します。このチュートリアルでは、名として **GetInstanceState** を使用します。  
![\[Amazon EC2 記述インスタンス API アクションを選択します。\]](http://docs.aws.amazon.com/ja_jp/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/ja_jp/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. **\$1\$1 GetInstanceState.InstanceState \$1\$1 == "stopping"** 条件の下にある空の **[AWSリソースを待つ]** アクションを、空の **[ここにドラッグ]** ボックスにドラッグします。

1. **[名前]** に値を入力します。このチュートリアルでは、名前 `WaitForInstanceStop` を使用します。

   1. **[サービス]** フィールドには **[Amazon EC2]** を選択します。

   1. **[API]** フィールドでは、**[DescribeInstances]** を選択します。

   1. **[プロパティセレクター]** フィールドには、**\$1.Reservations[0].Instances[0].State.Name** と入力します。

   1. **[希望値]** パラメータには、**`["stopped"]`** と入力します。

   1. **[WaitForInstanceStop]** アクションの **[設定]** タブで、**[次のステップ]** ドロップダウンから **[インスタンスを開始]** を選択します。

1. **\$1\$1 GetInstanceState.InstanceState \$1\$1 == "running"** 条件の下にある空の **[インスタンスでコマンドを実行]** アクションを、空の **[ここにドラッグ]** ボックスにドラッグします。

1. **[ステップ名]** には、と入力します。**SayHello**

   1. **[入力]** タブで、**[ドキュメント名]** パラメータに「**AWS-RunShellScript**」と入力します。

   1. **[InstanceIds]** については、ドロップダウンから **[InstanceId]** ドキュメントの入力値を選択します。

   1. **[追加入力]** ドロップダウンを展開し、**[入力名]** ドロップダウンで **[パラメータ]** を選択します。

   1. **[値入力]** フィールドに **`{"commands": "echo 'Hello World'"}`** を入力します。

1. 完成したランブックをキャンバスで確認し、**[ランブック作成]** を選択してチュートリアルランブックを保存します。  
![\[ランブックを確認し、作成します。\]](http://docs.aws.amazon.com/ja_jp/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. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. ナビゲーションペインで、[**オートメーション**]、[**オートメーションの実行**] の順に選択します。

1. [**Automation document (自動化ドキュメント)**] リストで、ランブックを選択します。[**Document categories (ドキュメントカテゴリ)**] ペインで 1 つ以上のオプションを選択して、目的に応じて SSM ドキュメントをフィルタリングします。自分が所有するランブックを表示するには、[**Owned by me (自分が所有)**] タブを選択します。自分のアカウントと共有されているランブックを表示するには、[**Shared with me (共有ファイル)**] タブを選択します。すべてのランブックを表示するには、[**すべてのドキュメント**] タブを選択します。
**注記**  
ランブックの名前を選択すると、ランブックに関する情報を表示できます。

1. [**Document details (ドキュメントの詳細)**] セクションで、[**Document version (ドキュメントのバージョン)**] が実行するバージョンに設定されていることを確認します。システムには、次のバージョンのオプションが含まれています。
   + **[ランタイムのデフォルトバージョン]**: 自動化ランブックが定期的に更新され、新しいデフォルトバージョンが割り当てられている場合は、このオプションを選択します。
   + **[ランタイムの最新バージョン]**: 自動化ランブックが定期的に更新され、直前に更新されたバージョンを実行する場合は、このオプションを選択します。
   + **[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. **[実行]** を選択してください。

## ステップ 5：クリーンアップ
<a name="cleanup-tutorial-runbook"></a>

**ランブックを削除するには**

1. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. ナビゲーションペインで、**[ドキュメント]** を選択します。

1. **[自分が所有]** タブを選択します。

1. **[ビジュアルデザインエクスペリエンスチュートリアル]** のランブックを探してください。

1. ドキュメントカードページのボタンを選択し、**[アクション]** ドロップダウンから **[ドキュメントを削除]** を選択します。