

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

# AWS Systems Manager ドキュメント
<a name="documents"></a>

AWS Systems Manager ドキュメント (SSM ドキュメント) は、Systems Manager がマネージドインスタンスで実行するアクションを定義します。Systems Manager には、ランタイムでパラメータを指定して使用できる事前設定済みのドキュメントが 100 件以上含まれています。Systems Manager のドキュメントコンソールの、**[Owned by Amazon]** (Amazon 所有) タブを選択するか、`ListDocuments` API オペレーションを呼び出す際に `Owner` フィルターで Amazon を指定することで、事前設定済みのドキュメントを確認できます。ドキュメントは JavaScript Object Notation (JSON) や YAML を使用し、これにはユーザーが指定するパラメータおよびステップが含まれます。

セキュリティを強化するため、SSM ドキュメントでは、2025 年 7 月 14 日からパラメータ処理時に環境変数補間がサポートされるようになりました。この機能はスキーマバージョン 2.2 および SSM Agent バージョン 3.3.2746.0 以降で利用でき、コマンドインジェクション攻撃の防止に役立ちます。

SSM ドキュメントの使用を開始するには、[Systems Manager コンソール](https://console.aws.amazon.com/systems-manager/documents)を開きます。ナビゲーションペインで、**[ドキュメント]** を選択します。

**重要**  
Systems Manager において、*Amazon 所有*の SSM ドキュメントとは、Amazon Web Services 自体によって作成および管理されているドキュメントです。*Amazon 所有*のドキュメントでは、ドキュメント名に `AWS-*` のようなプレフィックスが含まれます。ドキュメントの所有者は、AWS 内の特定のユーザーアカウントではなく Amazon と見なされます。これらのドキュメントは公開されており、誰でも使用できます。

## ドキュメントツールには自社の組織にどのようなメリットがありますか?
<a name="ssm-docs-benefits"></a>

AWS Systems Manager のツールであるドキュメントには以下のメリットがあります。
+ **ドキュメントのカテゴリ**

  必要なドキュメントを検索しやすくするには、検索するドキュメントの種類に応じてカテゴリを選択します。検索範囲を広げる場合は、同じドキュメントタイプに対して複数のカテゴリを選択できます。異なるドキュメントタイプに関するカテゴリの選択はサポートされていません。カテゴリーは、Amazon が所有するドキュメントでのみ使用できます。
+  **ドキュメントのバージョン** 

  ドキュメントの異なるバージョンを作成して保存できます。その後、各ドキュメントのデフォルトのバージョンを指定できます。ドキュメントのデフォルトバージョンは、新しいバージョンに更新したり、古いバージョンのドキュメントに戻すことができます。ドキュメントのコンテンツを変更すると、Systems Manager は自動的にドキュメントのバージョンを増やします。コンソール、AWS Command Line Interface (AWS CLI) コマンド、または API コールでドキュメントバージョンを指定することで、ドキュメントの任意のバージョンを取得または使用できます。
+  **必要に応じてドキュメントをカスタマイズする** 

  ドキュメントのステップやアクションをカスタマイズする場合は、独自のドキュメントを作成できます。システムが、それが作成された AWS リージョン 内の AWS アカウント により、ドキュメントを保存します。SSM ドキュメントの作成方法の詳細については、「[SSM ドキュメントコンテンツを作成する](documents-creating-content.md)」を参照してください。
+  **タグのドキュメント** 

  ドキュメントにタグを付けると、そのタグに基づいてドキュメントをすばやく識別できます。たとえば、特定の環境、部門、ユーザー、グループ、または期間でドキュメントをタグ付けできます。ユーザーやグループがアクセスできるタグを指定する AWS Identity and Access Management (IAM) ポリシーを作成することで、ドキュメントへのアクセスを制限することもできます。
+  **ドキュメントの共有** 

  ドキュメントを公開するか、または同じ AWS リージョン の特定の AWS アカウント と共有できます。例えば、顧客または従業員に提供するすべての Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに同じ設定を適用したい場合などは、アカウント間でドキュメントを共有すると便利です。これは、インスタンス上のアプリケーションまたはパッチを最新の状態に保つことに加えて、顧客のインスタンスで特定のアクティビティを拒否したい場合にも利用できます。または、組織全体の従業員アカウントで使用されているインスタンスに、特定の内部リソースへのアクセス許可が確実に付与されるようにする場合があります。詳細については、「[SSM ドキュメントの共有](documents-ssm-sharing.md)」を参照してください。

## ドキュメントを使用すべきユーザー
<a name="documents-who"></a>
+ 大規模な運用での効率改善、手動による介入が原因で起きうるエラー数の削減、一般的な問題の解決までの時間の短縮などに、AWS Systems Manager ツールの使用をお考えのすべてのお客様。
+ デプロイおよび設定タスクを自動化しようとするインフラストラクチャの専門家。
+ 一般的な問題の確実な解決、トラブルシューティングの効率向上、および反復処理の削減を希望する管理者。
+ 通常手動で実行しているタスクの自動化を目指すユーザー。

## SSM ドキュメントの種類について教えてください。
<a name="what-are-document-types"></a>

次の表に、各タイプの SSM ドキュメントと、それらの用途についての説明を示します。


****  

| タイプ | 以下で使用 | 詳細 | 
| --- | --- | --- | 
|  ApplicationConfiguration ApplicationConfigurationSchema  |   [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html)   |  AWS Systems Manager のツールである AWS AppConfig を使用すると、アプリケーション設定を作成、管理し、迅速にデプロイできます。`ApplicationConfiguration` ドキュメントタイプを使用するドキュメントを作成することにより、設定データを SSM ドキュメントに保存できます。詳細については、「*AWS AppConfig ユーザーガイド*」の「[Freeform configurations](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-creating-configuration-and-profile.html#free-form-configurations)」(自由形式の設定) を参照してください。 SSM ドキュメントで設定を作成する場合は、対応する JSON スキーマを指定する必要があります。スキーマは `ApplicationConfigurationSchema` ドキュメントタイプを使用し、一連のルールと同様に、各アプリケーション構成設定で許可されるプロパティを定義します。詳細については、「*AWS AppConfig ユーザーガイド*」の「[About validators](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-creating-configuration-and-profile-validators.html)」(バリデーターについて) を参照してください。  | 
|  Automation ランブック  |   [オートメーション](systems-manager-automation.md)   [State Manager](systems-manager-state.md)   [Maintenance Windows](maintenance-windows.md)   |  Amazon Machine Image (AMI) の作成や更新など、一般的なメンテナンスやデプロイメントタスクを実行する際に、Automation ランブックを使用します。State Manager は、Automation ランブックを使用して設定を適用します。これらのアクションは、インスタンスのライフサイクル中いつでも 1 つ、または複数のターゲットで実行できます。Maintenance Windowsは、指定されたスケジュールに基づいた一般的なメンテナンスタスクとデプロイメントタスクの実行に Automation ランブックを使用します。 Linux ベースのオペレーティングシステム用にサポートされているAutomation ランブックはすべて、macOS 向けの EC2 インスタンスでもサポートされています。  | 
|  Change Calendar ドキュメント  |   [Change Calendar](systems-manager-change-calendar.md)   |  AWS Systems Manager のツールである Change Calendar は、`ChangeCalendar` ドキュメントタイプを使用します。Change Calendar ドキュメントには、Automation アクションによる環境の変更を許可または禁止できるカレンダーエントリと関連するイベントが保存されます。Change Calendar では、ドキュメントに [iCalendar 2.0](https://icalendar.org/) データがプレーンテキスト形式で保存されます。 Change Calendar は、macOS の EC2 インスタンスではサポートされていません。  | 
|  AWS CloudFormation テンプレート  |   [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)   |  AWS CloudFormation テンプレートは、CloudFormation スタックでプロビジョニングするリソースについて記述します。CloudFormation テンプレートを Systems Manager のドキュメントとして保存すると、Systems Manager のドキュメント機能のメリットを活用できます。これには、複数のバージョンのテンプレートの作成と比較、同じ AWS リージョン の他のアカウントとのテンプレートの共有が含まれます。 Systems Manager のツールである Application Manager を使用して、CloudFormation テンプレートとスタックを作成して編集できます。詳細については、「[Application Manager での CloudFormation テンプレートとスタックの使用](application-manager-working-stacks.md)」を参照してください。  | 
|  コマンドのドキュメント  |   [Run Command](run-command.md)   [State Manager](systems-manager-state.md)   [Maintenance Windows](maintenance-windows.md)   |  AWS Systems Manager のツールである Run Command は、コマンドドキュメントを使用してコマンドを実行します。AWS Systems Manager のツールである State Manager は、コマンドドキュメントを使用して設定を適用します。これらのアクションは、インスタンスのライフサイクル中にいつでも、1 つまたは複数のターゲットで実行できます。AWS Systems Manager のツールである Maintenance Windows は、指定されたスケジュールに基づいて設定を適用するためにコマンドドキュメントを使用します。 ほとんどのコマンドドキュメントは、Systems Manager でサポートされているすべての Linux および Windows Server オペレーティングシステムでサポートされています。macOS 向けの EC2 インスタンスでは、以下のコマンドドキュメントがサポートされています。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/documents.html)  | 
|  AWS Config コンフォーマンスパックテンプレート  |   [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html)   |  AWS Config コンフォーマンスパックテンプレートは YAML 形式のドキュメントで、AWS Config マネージドルールまたはカスタムルールおよび修復アクションのリストを含むコンフォーマンスパックを作成するために使用されます。 詳細については、「[コンフォーマンスパック](https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html)」を参照してください。  | 
|  パッケージドキュメント  |   [Distributor](distributor.md)   |  AWS Systems Manager のツールである Distributor では、パッケージは、SSM ドキュメントで表されます。パッケージドキュメントには、マネージドインスタンスにインストールするソフトウェアまたはアセットを含む添付 ZIP アーカイブファイルが含まれています。Distributor でパッケージを作成するパッケージドキュメントを作成します。 Distributor は、Oracle Linux および macOS マネージドインスタンスではサポートされていません。  | 
|  ポリシードキュメント  |   [State Manager](systems-manager-state.md)   |  AWS Systems Manager のツールである Inventory では、`AWS-GatherSoftwareInventory` ポリシードキュメントと State Manager の関連付けを使って、マネージドインスタンスからインベントリデータを収集します。独自の SSM ドキュメントを作成するときは、Automation ランブックとコマンドドキュメントがマネージドインスタンスへのポリシーの適用に推奨される方法です。 Systems Manager Inventory と `AWS-GatherSoftwareInventory` ポリシードキュメントは、Systems Manager のサポート対象のすべてのオペレーティングシステムでサポートされています。  | 
|  インシデント後分析テンプレート  |   [Incident Manager インシデント後分析](https://docs.aws.amazon.com/incident-manager/latest/userguide/analysis.html)   |  Incident Manager は、インシデント後分析テンプレートを使用して、AWS オペレーション管理のベストプラクティスに基づいて分析を作成します。 御社のチームは、テンプレートを使用して作成した分析を、インシデント対応での改善点を特定するために使用できます。  | 
|  セッションドキュメント  |   [Session Manager](session-manager.md)   |  AWS Systems Manager のツールである Session Manager は、セッションドキュメントを使用して、ポート転送セッション、インタラクティブコマンドを実行するセッション、SSH トンネルを作成するセッションなど、開始するセッションのタイプを決定します。 セッションドキュメントは、Systems Manager でサポートされているすべての Linux および Windows Server オペレーティングシステムでサポートされています。macOS 向けの EC2 インスタンスでは、以下のコマンドドキュメントがサポートされています。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/documents.html)  | 

**SSM ドキュメントクォータ**  
SSM ドキュメントのクォータの詳細については、「Amazon Web Services 全般のリファレンス」の「[Systems Manager Service Quotas](https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)」を参照してください。

**Topics**
+ [ドキュメントツールには自社の組織にどのようなメリットがありますか?](#ssm-docs-benefits)
+ [ドキュメントを使用すべきユーザー](#documents-who)
+ [SSM ドキュメントの種類について教えてください。](#what-are-document-types)
+ [ドキュメントコンポーネント](documents-components.md)
+ [SSM ドキュメントコンテンツを作成する](documents-creating-content.md)
+ [ドキュメントでの作業](documents-using.md)
+ [パラメータ処理の問題のトラブルシューティング](parameter-troubleshooting.md)

# ドキュメントコンポーネント
<a name="documents-components"></a>

このセクションには、SSM ドキュメントを構成するコンポーネントに関する情報が含まれます。

**Topics**
+ [スキーマ、機能、および例](documents-schemas-features.md)
+ [データ要素とパラメータ](documents-syntax-data-elements-parameters.md)
+ [コマンドドキュメントプラグインリファレンス](documents-command-ssm-plugin-reference.md)

# スキーマ、機能、および例
<a name="documents-schemas-features"></a>

AWS Systems Manager (SSM) ドキュメントでは以下のスキーマバージョンを使用しています。
+ `Command` タイプのドキュメントは、スキーマバージョン 1.2、2.0 および 2.2 を使用できます。使用しているドキュメントがスキーマ 1.2 である場合は、スキーマバージョン 2.2 を使用するドキュメントを作成することをお勧めします。
+ `Policy` タイプのドキュメントは、スキーマバージョン 2.0 以降を使用する必要があります。
+ `Automation` タイプのドキュメントは、スキーマバージョン 0.3 を使用する必要があります。
+ `Session` タイプのドキュメントは、スキーマバージョン 1.0 を使用する必要があります。
+ JSON あるいは YAML でドキュメントを作成できます。

`Session` ドキュメントスキーマの詳細については、「[セッションドキュメントスキーマ](session-manager-schema.md)」を参照してください。

`Command` および `Policy` ドキュメントで最新バージョンのスキーマを使用することで、次の機能を利用できます。


**スキーマバージョン 2.2 ドキュメントの機能**  

| 機能 | 詳細 | 
| --- | --- | 
|  ドキュメントの編集  |  ドキュメントは更新可能になりました。バージョン 1.2 では、ドキュメントを更新した場合に別の名前で保存する必要がありました。  | 
|  バージョンの自動管理  |  ドキュメントを更新すると新しいバージョンが作成されます。これはスキーマのバージョンではなく、ドキュメントのバージョンです。  | 
|  デフォルトバージョン  |  ドキュメントに複数のバージョンがある場合、どのバージョンがデフォルトのドキュメントかを指定できます。  | 
|  順序付け  |  ドキュメントのプラグインまたは*ステップ*を指定した順序で実行します。  | 
|  クロスプラットフォームのサポート  |  クロスプラットフォームをサポートすることで、同じ SSM ドキュメント内で異なるプラグインに異なるオペレーティングシステムを指定できます。クロスプラットフォームのサポートはステップ内の `precondition` パラメータを使用します。  | 
| パラメータ補間 | 補間とは、文字列に変数値を挿入または置換することを意味します。文字列を使用する前に、実際の値で空白を埋めるものと考えてください。SSM ドキュメントのコンテキストでは、パラメータ補間により、コマンドを実行する前に文字列パラメータを環境変数に対して補間することができるため、コマンドインジェクションに対するセキュリティを高めることができます。`ENV_VAR` に設定すると、エージェントは、パラメータの値を含む `SSM_parameter-name` という名前の環境変数を作成します。 | 

**注記**  
新しい Systems Manager 機能および SSM ドキュメント機能を使用するには、インスタンスの AWS Systems Manager SSM Agent を常に最新バージョンに更新しておく必要があります。詳細については、「[Run Command を使用して SSM Agent を更新する](run-command-tutorial-update-software.md#rc-console-agentexample)」を参照してください。

次の表はスキーマのメジャーバージョン間の相違点の一覧です。


****  

| バージョン 1.2 | バージョン 2.2 (最新バージョン) | 詳細 | 
| --- | --- | --- | 
|  runtimeConfig  |  mainSteps  |  バージョン 2.2 では、`mainSteps` の代わりに `runtimeConfig` セクションを使用します。`mainSteps` セクションでは、Systems Manager でステップを順番に実行できます。  | 
|  プロパティ  |  inputs  |  バージョン 2.2 では、`inputs` セクションの代わりに `properties` セクションを使用します。`inputs` セクションは、ステップのパラメータを受け入れます。  | 
|  commands  |  runCommand  |  バージョン 2.2 では、`inputs` セクションは `runCommand` パラメータを使用します。`commands` パラメータは使用しません。  | 
|  id  |  action  |  バージョン 2.2 では、`Action` の代わりに `ID` を使用します。これは名前のみの変更です。  | 
|  該当なし  |  name  |  バージョン 2.2 では、`name` はステップの任意のユーザー定義名です。  | 

**前提条件パラメータを使用する**  
スキーマバージョン 2.2 以降では、`precondition` パラメータを使用して、各プラグインのターゲットオペレーティングシステムを指定したり、SSM ドキュメントで定義した入力パラメータを検証したりすることができます。`precondition` パラメータは、SSM ドキュメントの入力パラメータと、`platformType`、`Linux`、および `MacOS` の値を使用する `Windows` の参照をサポートします。`StringEquals` 演算子のみがサポートされています。

スキーマバージョン 2.2 以降を使用するドキュメントの場合、`precondition` が指定されていないと、各プラグインはそのプラグインとオペレーティングシステムとの互換性に基づいて実行またはスキップされます。オペレーティングシステムとのプラグインの互換性は、`precondition` の前に評価されます。スキーマ 2.0 以前を使用するドキュメントの場合は、互換性のないプラグインはエラーをスローします。

例えば、スキーマバージョンが 2.2 のドキュメントで、`precondition` が指定されておらず `aws:runShellScript` プラグインが一覧表示されている場合、そのステップは Linux インスタンスで実行されますが、Windows Server インスタンスではシステムによってこれがスキップされます。これは、`aws:runShellScript` が Windows Server インスタンスと互換性がないためです。しかし、スキーマバージョンが 2.0 のドキュメントでは、`aws:runShellScript` プラグインを指定して、ドキュメントを Windows Server インスタンスで実行した場合、実行は失敗します。SSM ドキュメントでの前提条件パラメータの例は後でこのセクションで確認できます。

## スキーマバージョン 2.2
<a name="documents-schema-twox"></a>

**最上位の要素**  
以下の例では、スキーマバージョン 2.2 を使用した SSM ドキュメントの最上位要素を示しています。

------
#### [ YAML ]

```
---
schemaVersion: "2.2"
description: A description of the document.
parameters:
  parameter 1:
    property 1: "value"
    property 2: "value"
  parameter 2:
    property 1: "value"
    property 2: "value"
mainSteps:
  - action: Plugin name
    name: A name for the step.
    inputs:
      input 1: "value"
      input 2: "value"
      input 3: "{{ parameter 1 }}"
```

------
#### [ JSON ]

```
{
   "schemaVersion": "2.2",
   "description": "A description of the document.",
   "parameters": {
       "parameter 1": {
           "property 1": "value",
           "property 2": "value"
        },
        "parameter 2":{
           "property 1": "value",
           "property 2": "value"
        } 
    },
   "mainSteps": [
      {
         "action": "Plugin name",
         "name": "A name for the step.",
         "inputs": {
            "input 1": "value",
            "input 2": "value",
            "input 3": "{{ parameter 1 }}"
         }
      }
   ]
}
```

------

**スキーマバージョン 2.2 の例**  
以下の例では、`aws:runPowerShellScript` プラグインを使用してターゲットインスタンスで PowerShell コマンドを実行しています。

------
#### [ YAML ]

```
---
schemaVersion: "2.2"
description: "Example document"
parameters:
  Message:
    type: "String"
    description: "Example parameter"
    default: "Hello World"
    allowedValues: 
    - "Hello World"
mainSteps:
  - action: "aws:runPowerShellScript"
    name: "example"
    inputs:
      timeoutSeconds: '60'
      runCommand:
      - "Write-Output {{Message}}"
```

------
#### [ JSON ]

```
{
   "schemaVersion": "2.2",
   "description": "Example document",
   "parameters": {
      "Message": {
         "type": "String",
         "description": "Example parameter",
         "default": "Hello World",
         "allowedValues": ["Hello World"]
      }
   },
   "mainSteps": [
      {
         "action": "aws:runPowerShellScript",
         "name": "example",
         "inputs": {
            "timeoutSeconds": "60",
            "runCommand": [
               "Write-Output {{Message}}"
            ]
         }
      }
   ]
}
```

------

**スキーマバージョン 2.2 の precondition パラメータ例**  
スキーマバージョン 2.2 ではクロスプラットフォームのサポートを提供します。つまり、単一の SSM ドキュメント内で異なるプラグインに異なるオペレーティングシステムを指定できます。クロスプラットフォームのサポートは、次の例のようにステップ内で `precondition`パラメータを使用します。`precondition` パラメータは、SSM ドキュメントで定義した入力パラメータの検証にも使用できます。これは、次の例の 2 番目にあります。

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: cross-platform sample
mainSteps:
- action: aws:runPowerShellScript
  name: PatchWindows
  precondition:
    StringEquals:
    - platformType
    - Windows
  inputs:
    runCommand:
    - cmds
- action: aws:runShellScript
  name: PatchLinux
  precondition:
    StringEquals:
    - platformType
    - Linux
  inputs:
    runCommand:
    - cmds
```

------
#### [ JSON ]

```
{
   "schemaVersion": "2.2",
   "description": "cross-platform sample",
   "mainSteps": [
      {
         "action": "aws:runPowerShellScript",
         "name": "PatchWindows",
         "precondition": {
            "StringEquals": [
               "platformType",
               "Windows"
            ]
         },
         "inputs": {
            "runCommand": [
               "cmds"
            ]
         }
      },
      {
         "action": "aws:runShellScript",
         "name": "PatchLinux",
         "precondition": {
            "StringEquals": [
               "platformType",
               "Linux"
            ]
         },
         "inputs": {
            "runCommand": [
               "cmds"
            ]
         }
      }
   ]
}
```

------

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
parameters:
  action:
    type: String
    allowedValues:
    - Install
    - Uninstall
  confirmed:
    type: String
    allowedValues:
    - True
    - False
mainSteps:
- action: aws:runShellScript
  name: InstallAwsCLI
  precondition:
    StringEquals:
    - "{{ action }}"
    - "Install"
  inputs:
    runCommand:
    - sudo apt install aws-cli
- action: aws:runShellScript
  name: UninstallAwsCLI
  precondition:
    StringEquals:
    - "{{ action }} {{ confirmed }}"
    - "Uninstall True"
  inputs:
    runCommand:
    - sudo apt remove aws-cli
```

------
#### [ JSON ]

```
{
   "schemaVersion": "2.2",
   "parameters": {
      "action": {
         "type": "String",
         "allowedValues": [
            "Install",
            "Uninstall"
         ]
      },
      "confirmed": {
         "type": "String",
         "allowedValues": [
            true,
            false
         ]
      }
   },
   "mainSteps": [
      {
         "action": "aws:runShellScript",
         "name": "InstallAwsCLI",
         "precondition": {
            "StringEquals": [
               "{{ action }}",
               "Install"
            ]
         },
         "inputs": {
            "runCommand": [
               "sudo apt install aws-cli"
            ]
         }
      },
      {
         "action": "aws:runShellScript",
         "name": "UninstallAwsCLI",
         "precondition": {
            "StringEquals": [
               "{{ action }} {{ confirmed }}",
               "Uninstall True"
            ]
         },
         "inputs": {
            "runCommand": [
               "sudo apt remove aws-cli"
            ]
         }
      }
   ]
}
```

------

**SSM Agent のバージョンが 3.3.2746.0 より前である、スキーマバージョン 2.2 補間の例**  
バージョンが 3.3.2746.0 より前である SSM Agent では、エージェントは `interpolationType` パラメータを無視し、代わりに raw 文字列の置換を実行します。`SSM_parameter-name` を明示的に参照する場合は、これを明示的に設定する必要があります。次の Linux の例では、`SSM_Message` 環境変数が明示的に参照されています。

```
{
    "schemaVersion": "2.2",
    "description": "An example document",
    "parameters": {
        "Message": {
            "type": "String",
            "description": "Message to be printed",
            "default": "Hello",
            "interpolationType" : "ENV_VAR",
	     "allowedPattern: "^[^"]*$"

        }
    },
    "mainSteps": [{
        "action": "aws:runShellScript",
        "name": "printMessage",
        "inputs": {
            "runCommand": [
              "if [ -z "${SSM_Message+x}" ]; then",
              "    export SSM_Message=\"{{Message}}\"",
              "fi",
              "",
              "echo $SSM_Message"
            ]
        }
    }
}
```

**注記**  
SSM ドキュメントが二重中括弧 `{{ }}` を使用していない場合、`allowedPattern` は理論的には必要ありません。

**スキーマバージョン 2.2 State Manager の例**  
Systems Manager のツールである State Manager で以下の SSM ドキュメントを使用すると、ClamAV のウイルス対策ソフトウェアをダウンロードしてインストールできます。State Manager によって特定の設定が適用されます。つまり、State Manager 関連付けが実行されるごとに、ClamAV ソフトウェアがインストールされているかが、システムによってチェックされます。インストールされていない場合には、State Manager はこのドキュメントを返します。

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: State Manager Bootstrap Example
parameters: {}
mainSteps:
- action: aws:runShellScript
  name: configureServer
  inputs:
    runCommand:
    - sudo yum install -y httpd24
    - sudo yum --enablerepo=epel install -y clamav
```

------
#### [ JSON ]

```
{
   "schemaVersion": "2.2",
   "description": "State Manager Bootstrap Example",
   "parameters": {},
   "mainSteps": [
      {
         "action": "aws:runShellScript",
         "name": "configureServer",
         "inputs": {
            "runCommand": [
               "sudo yum install -y httpd24",
               "sudo yum --enablerepo=epel install -y clamav"
            ]
         }
      }
   ]
}
```

------

**スキーマバージョン 2.2 インベントリの例**  
State Manager で以下の SSM ドキュメントを使用すると、インスタンスに関するインベントリのメタデータを収集できます。

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: Software Inventory Policy Document.
parameters:
  applications:
    type: String
    default: Enabled
    description: "(Optional) Collect data for installed applications."
    allowedValues:
    - Enabled
    - Disabled
  awsComponents:
    type: String
    default: Enabled
    description: "(Optional) Collect data for AWS Components like amazon-ssm-agent."
    allowedValues:
    - Enabled
    - Disabled
  networkConfig:
    type: String
    default: Enabled
    description: "(Optional) Collect data for Network configurations."
    allowedValues:
    - Enabled
    - Disabled
  windowsUpdates:
    type: String
    default: Enabled
    description: "(Optional) Collect data for all Windows Updates."
    allowedValues:
    - Enabled
    - Disabled
  instanceDetailedInformation:
    type: String
    default: Enabled
    description: "(Optional) Collect additional information about the instance, including
      the CPU model, speed, and the number of cores, to name a few."
    allowedValues:
    - Enabled
    - Disabled
  customInventory:
    type: String
    default: Enabled
    description: "(Optional) Collect data for custom inventory."
    allowedValues:
    - Enabled
    - Disabled
mainSteps:
- action: aws:softwareInventory
  name: collectSoftwareInventoryItems
  inputs:
    applications: "{{ applications }}"
    awsComponents: "{{ awsComponents }}"
    networkConfig: "{{ networkConfig }}"
    windowsUpdates: "{{ windowsUpdates }}"
    instanceDetailedInformation: "{{ instanceDetailedInformation }}"
    customInventory: "{{ customInventory }}"
```

------
#### [ JSON ]

```
{
   "schemaVersion": "2.2",
   "description": "Software Inventory Policy Document.",
   "parameters": {
      "applications": {
         "type": "String",
         "default": "Enabled",
         "description": "(Optional) Collect data for installed applications.",
         "allowedValues": [
            "Enabled",
            "Disabled"
         ]
      },
      "awsComponents": {
         "type": "String",
         "default": "Enabled",
         "description": "(Optional) Collect data for AWS Components like amazon-ssm-agent.",
         "allowedValues": [
            "Enabled",
            "Disabled"
         ]
      },
      "networkConfig": {
         "type": "String",
         "default": "Enabled",
         "description": "(Optional) Collect data for Network configurations.",
         "allowedValues": [
            "Enabled",
            "Disabled"
         ]
      },
      "windowsUpdates": {
         "type": "String",
         "default": "Enabled",
         "description": "(Optional) Collect data for all Windows Updates.",
         "allowedValues": [
            "Enabled",
            "Disabled"
         ]
      },
      "instanceDetailedInformation": {
         "type": "String",
         "default": "Enabled",
         "description": "(Optional) Collect additional information about the instance, including\nthe CPU model, speed, and the number of cores, to name a few.",
         "allowedValues": [
            "Enabled",
            "Disabled"
         ]
      },
      "customInventory": {
         "type": "String",
         "default": "Enabled",
         "description": "(Optional) Collect data for custom inventory.",
         "allowedValues": [
            "Enabled",
            "Disabled"
         ]
      }
   },
   "mainSteps": [
      {
         "action": "aws:softwareInventory",
         "name": "collectSoftwareInventoryItems",
         "inputs": {
            "applications": "{{ applications }}",
            "awsComponents": "{{ awsComponents }}",
            "networkConfig": "{{ networkConfig }}",
            "windowsUpdates": "{{ windowsUpdates }}",
            "instanceDetailedInformation": "{{ instanceDetailedInformation }}",
            "customInventory": "{{ customInventory }}"
         }
      }
   ]
}
```

------

**スキーマバージョン 2.2 `AWS-ConfigureAWSPackage` の例**  
以下の例は `AWS-ConfigureAWSPackage` ドキュメントを示しています。`mainSteps` セクションの `aws:configurePackage` ステップには `action` プラグインが含まれています。

**注記**  
Linux オペレーティングシステムでは、`AmazonCloudWatchAgent` パッケージ、および `AWSSupport-EC2Rescue` パッケージのみがサポートされています。

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: 'Install or uninstall the latest version or specified version of an AWS
  package. Available packages include the following: AWSPVDriver, AwsEnaNetworkDriver,
  AwsVssComponents, and AmazonCloudWatchAgent, and AWSSupport-EC2Rescue.'
parameters:
  action:
    description: "(Required) Specify whether or not to install or uninstall the package."
    type: String
    allowedValues:
    - Install
    - Uninstall
  name:
    description: "(Required) The package to install/uninstall."
    type: String
    allowedPattern: "^arn:[a-z0-9][-.a-z0-9]{0,62}:[a-z0-9][-.a-z0-9]{0,62}:([a-z0-9][-.a-z0-9]{0,62})?:([a-z0-9][-.a-z0-9]{0,62})?:package\\/[a-zA-Z][a-zA-Z0-9\\-_]{0,39}$|^[a-zA-Z][a-zA-Z0-9\\-_]{0,39}$"
  version:
    type: String
    description: "(Optional) A specific version of the package to install or uninstall."
mainSteps:
- action: aws:configurePackage
  name: configurePackage
  inputs:
    name: "{{ name }}"
    action: "{{ action }}"
    version: "{{ version }}"
```

------
#### [ JSON ]

```
{
   "schemaVersion": "2.2",
   "description": "Install or uninstall the latest version or specified version of an AWS package. Available packages include the following: AWSPVDriver, AwsEnaNetworkDriver, AwsVssComponents, and AmazonCloudWatchAgent, and AWSSupport-EC2Rescue.",
   "parameters": {
      "action": {
         "description":"(Required) Specify whether or not to install or uninstall the package.",
         "type":"String",
         "allowedValues":[
            "Install",
            "Uninstall"
         ]
      },
      "name": {
         "description": "(Required) The package to install/uninstall.",
         "type": "String",
         "allowedPattern": "^arn:[a-z0-9][-.a-z0-9]{0,62}:[a-z0-9][-.a-z0-9]{0,62}:([a-z0-9][-.a-z0-9]{0,62})?:([a-z0-9][-.a-z0-9]{0,62})?:package\\/[a-zA-Z][a-zA-Z0-9\\-_]{0,39}$|^[a-zA-Z][a-zA-Z0-9\\-_]{0,39}$"
      },
      "version": {
         "type": "String",
         "description": "(Optional) A specific version of the package to install or uninstall."
      }
   },
   "mainSteps":[
      {
         "action": "aws:configurePackage",
         "name": "configurePackage",
         "inputs": {
            "name": "{{ name }}",
            "action": "{{ action }}",
            "version": "{{ version }}"
         }
      }
   ]
}
```

------

## スキーマバージョン 1.2
<a name="documents-schema-onex"></a>

次の例では、スキーマバージョン 1.2 のドキュメントの最上位要素を示します。

```
{
   "schemaVersion":"1.2",
   "description":"A description of the SSM document.",
   "parameters":{
      "parameter 1":{
         "one or more parameter properties"
      },
      "parameter 2":{
         "one or more parameter properties"
      },
      "parameter 3":{
         "one or more parameter properties"
      }
   },
   "runtimeConfig":{
      "plugin 1":{
         "properties":[
            {
               "one or more plugin properties"
            }
         ]
      }
   }
}
```

**スキーマバージョン 1.2 `aws:runShellScript` の例**  
以下の例は `AWS-RunShellScript` SSM ドキュメントを示しています。**runtimeConfig** セクションには `aws:runShellScript` プラグインが含まれます。

```
{
    "schemaVersion":"1.2",
    "description":"Run a shell script or specify the commands to run.",
    "parameters":{
        "commands":{
            "type":"StringList",
            "description":"(Required) Specify a shell script or a command to run.",
            "minItems":1,
            "displayType":"textarea"
        },
        "workingDirectory":{
            "type":"String",
            "default":"",
            "description":"(Optional) The path to the working directory on your instance.",
            "maxChars":4096
        },
        "executionTimeout":{
            "type":"String",
            "default":"3600",
            "description":"(Optional) The time in seconds for a command to complete before it is considered to have failed. Default is 3600 (1 hour). Maximum is 172800 (48 hours).",
            "allowedPattern":"([1-9][0-9]{0,3})|(1[0-9]{1,4})|(2[0-7][0-9]{1,3})|(28[0-7][0-9]{1,2})|(28800)"
        }
    },
    "runtimeConfig":{
        "aws:runShellScript":{
            "properties":[
                {
                    "id":"0.aws:runShellScript",
                    "runCommand":"{{ commands }}",
                    "workingDirectory":"{{ workingDirectory }}",
                    "timeoutSeconds":"{{ executionTimeout }}"
                }
            ]
        }
    }
}
```

## スキーマバージョン 0.3
<a name="automation-doc-syntax-examples"></a>

**最上位の要素**  
次の例では、スキーマバージョン 0.3 の Automation ランブックの最上位要素を JSON 形式で示します。

```
{
    "description": "document-description",
    "schemaVersion": "0.3",
    "assumeRole": "{{assumeRole}}",
    "parameters": {
        "parameter1": {
            "type": "String",
            "description": "parameter-1-description",
            "default": ""
        },
        "parameter2": {
            "type": "String",
            "description": "parameter-2-description",
            "default": ""
        }
    },
    "variables": {
        "variable1": {
            "type": "StringMap",
            "description": "variable-1-description",
            "default": {}
        },
        "variable2": {
            "type": "String",
            "description": "variable-2-description",
            "default": "default-value"
        }
    },
    "mainSteps": [
        {
            "name": "myStepName",
            "action": "action-name",
            "maxAttempts": 1,
            "inputs": {
                "Handler": "python-only-handler-name",
                "Runtime": "runtime-name",
                "Attachment": "script-or-zip-name"
            },
            "outputs": {
                "Name": "output-name",
                "Selector": "selector.value",
                "Type": "data-type"
            }
        }
    ],
    "files": {
        "script-or-zip-name": {
            "checksums": {
                "sha256": "checksum"
            },
            "size": 1234
        }
    }
}
```

**YAML Automation ランブックの例**  
次の例では、Automation ランブックの内容を YAML 形式で示します。このバージョン 0.3 のドキュメントスキーマの実例では、Markdown を使用してドキュメントの説明をフォーマットする方法も示しています。

```
description: >-
  ##Title: LaunchInstanceAndCheckState

  -----

  **Purpose**: This Automation runbook first launches an EC2 instance
  using the AMI ID provided in the parameter ```imageId```. The second step of
  this document continuously checks the instance status check value for the
  launched instance until the status ```ok``` is returned.


  ##Parameters:

  -----

  Name | Type | Description | Default Value

  ------------- | ------------- | ------------- | -------------

  assumeRole | String | (Optional) The ARN of the role that allows Automation to
  perform the actions on your behalf. | -

  imageId  | String | (Optional) The AMI ID to use for launching the instance.
  The default value uses the latest Amazon Linux AMI ID available. | {{
  ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64 }}
schemaVersion: '0.3'
assumeRole: 'arn:aws:iam::111122223333::role/AutomationServiceRole'
parameters:
  imageId:
    type: String
    default: '{{ ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64 }}'
    description: >-
      (Optional) The AMI ID to use for launching the instance. The default value
      uses the latest released Amazon Linux AMI ID.
  tagValue:
    type: String
    default: ' LaunchedBySsmAutomation'
    description: >-
      (Optional) The tag value to add to the instance. The default value is
      LaunchedBySsmAutomation.
  instanceType:
    type: String
    default: t2.micro
    description: >-
      (Optional) The instance type to use for the instance. The default value is
      t2.micro.
mainSteps:
  - name: LaunchEc2Instance
    action: 'aws:executeScript'
    outputs:
      - Name: payload
        Selector: $.Payload
        Type: StringMap
    inputs:
      Runtime: python3.11
      Handler: launch_instance
      Script: ''
      InputPayload:
        image_id: '{{ imageId }}'
        tag_value: '{{ tagValue }}'
        instance_type: '{{ instanceType }}'
      Attachment: launch.py
    description: >-
      **About This Step**


      This step first launches an EC2 instance using the ```aws:executeScript```
      action and the provided python script.
  - name: WaitForInstanceStatusOk
    action: 'aws:executeScript'
    inputs:
      Runtime: python3.11
      Handler: poll_instance
      Script: |-
        def poll_instance(events, context):
          import boto3
          import time

          ec2 = boto3.client('ec2')

          instance_id = events['InstanceId']

          print('[INFO] Waiting for instance status check to report ok', instance_id)

          instance_status = "null"

          while True:
            res = ec2.describe_instance_status(InstanceIds=[instance_id])

            if len(res['InstanceStatuses']) == 0:
              print("Instance status information is not available yet")
              time.sleep(5)
              continue

            instance_status = res['InstanceStatuses'][0]['InstanceStatus']['Status']

            print('[INFO] Polling to get status of the instance', instance_status)

            if instance_status == 'ok':
              break

            time.sleep(10)

          return {'Status': instance_status, 'InstanceId': instance_id}
      InputPayload: '{{ LaunchEc2Instance.payload }}'
    description: >-
      **About This Step**


      The python script continuously polls the instance status check value for
      the instance launched in Step 1 until the ```ok``` status is returned.
files:
  launch.py:
    checksums:
      sha256: 18871b1311b295c43d0f...[truncated]...772da97b67e99d84d342ef4aEXAMPLE
```

## 安全なパラメータ処理の例
<a name="secure-parameter-examples"></a>

ここでは、環境変数 `interpolationType` を使用した安全なパラメータ処理の例を紹介します。

### 基本的なセキュアコマンドの実行
<a name="basic-secure-command"></a>

この例は、コマンドパラメータを安全に処理する方法を示しています。

**注記**  
SSM ドキュメントが二重中括弧 `{{ }}` を使用していない場合、`allowedPattern` は理論的には必要ありません。

------
#### [ YAML ]

```
---

schemaVersion: '2.2'
description: An example document.
parameters:
  Message:
    type: String
    description: "Message to be printed"
    default: Hello
    interpolationType: ENV_VAR
    allowedPattern: "^[^"]*$"
mainSteps:
  - action: aws:runShellScript
    name: printMessage
    precondition:
      StringEquals:
        - platformType
        - Linux
    inputs:
      runCommand:
        - echo {{Message}}
```

------
#### [ JSON ]

```
{
    "schemaVersion": "2.2",
    "description": "An example document.",
    "parameters": {
        "Message": {
            "type": "String",
            "description": "Message to be printed",
            "default": "Hello",
            "interpolationType": "ENV_VAR",
            "allowedPattern": "^[^"]*$"
        }
    },
    "mainSteps": [{
        "action": "aws:runShellScript",
        "name": "printMessage",
        "precondition": {
           "StringEquals": ["platformType", "Linux"]
        },
        "inputs": {
            "runCommand": [
              "echo {{Message}}"
            ]
        }
    }]
}
```

------

### インタプリタ型言語でのパラメータの使用
<a name="interpreted-language-example"></a>

この例は、Python での安全なパラメータ処理を示しています。

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: 'Secure Python script execution'
parameters:
  inputData:
    type: String
    description: 'Input data for processing'
    interpolationType: 'ENV_VAR'
mainSteps:
  - action: aws:runPowerShellScript
    name: runPython
    inputs:
      runCommand:
        - |
          python3 -c '
          import os
          import json
          
          # Safely access parameter through environment variable
          input_data = os.environ.get("SSM_inputData", "")
          
          # Process the data
          try:
              processed_data = json.loads(input_data)
              print(f"Successfully processed: {processed_data}")
          except json.JSONDecodeError:
              print("Invalid JSON input")
          '
```

------

### 下位互換性の例
<a name="backwards-compatibility-example"></a>

この例は、下位互換性を保ちながらパラメータを安全に処理する方法を示しています。

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: 'Backwards compatible secure parameter handling'
parameters:
  userInput:
    type: String
    description: 'User input to process'
    interpolationType: 'ENV_VAR'
    allowedPattern: '^[^"]*$'

mainSteps:
  - action: aws:runShellScript
    name: processInput
    inputs:
      runCommand:
        - |
          # Handle both modern and legacy agent versions
          if [ -z "${SSM_userInput+x}" ]; then
              # Legacy agent - fall back to direct parameter reference
              export SSM_userInput="{{userInput}}"
          fi
          
          # Process the input securely
          echo "Processing input: $SSM_userInput"
```

------

**注記**  
SSM ドキュメントが二重中括弧 `{{ }}` を使用していない場合、`allowedPattern` は理論的には必要ありません。

## パラメータのセキュリティベストプラクティス
<a name="parameter-security-best-practices"></a>

SSM ドキュメントでパラメータを処理するときは、次のベストプラクティスに従います。
+ **環境変数補間を使用する** - コマンド実行に使用する文字列パラメータには、常に `interpolationType: "ENV_VAR"` を使用します。
+ **入力検証を実装する** - `allowedPattern` を使用して、パラメータ値を安全なパターンに制限します。
+ **レガシーシステムを処理する** - 環境変数補間をサポートしていない SSM Agent の古いバージョン向けにフォールバックロジックを含めます。
+ **特殊文字をエスケープする** - コマンドにパラメータ値を使用するときは、特殊文字を適切にエスケープして、シェルによる解釈を防ぎます。
+ **パラメータスコープを制限する** - ユースケースには、できる限り制限の厳しいパラメータパターンを使用します。

# データ要素とパラメータ
<a name="documents-syntax-data-elements-parameters"></a>

このトピックでは、SSM ドキュメントで使用されるデータ要素について説明します。ドキュメントの作成に使用されるスキーマのバージョンは、ドキュメントで使用できる構文とデータ要素を定義します。コマンドドキュメントには、スキーマバージョン 2.2 以降を使用することをお勧めします。Automation ランブックはスキーマバージョン 0.3 を使用します。さらに、Automation ランブックでは、マークアップ言語である Markdown の使用がサポートされています。これにより、wiki スタイルの説明をドキュメントやドキュメント内の個々のステップに追加できます。Markdown の使用に関する詳細については、「AWS マネジメントコンソール 入門ガイド」の「[コンソールでの Markdown の使用](https://docs.aws.amazon.com/general/latest/gr/aws-markdown.html)」を参照してください。

次のセクションでは、SSM ドキュメントに含めることができるデータ要素について説明します。

## 最上位のデータ要素
<a name="top-level"></a>

**schemaVersion**  
使用するスキーマバージョン。  
型: バージョン  
必須: はい

**description**  
ドキュメントの目的を説明するために提供する情報。またこのフィールドを使用して、ドキュメントの実行にパラメータの値が必要か否か、またはパラメータの値の指定が任意か否かを指定することもできます。必須と任意のパラメータはこのトピックのサンプルをご参照ください。  
タイプ: 文字列  
必須: いいえ

**パラメータ**  
ドキュメントが許可するパラメータを定義する構造。  
文字列パラメータを処理する際のセキュリティを強化するには、`interpolationType` プロパティを指定して環境変数補間を使用します。`ENV_VAR` に設定すると、システムは、パラメータの値を含む `SSM_parameter-name` という名前の環境変数を作成します。  
次は、環境変数 `interpolationType` を使用するパラメータの例です。  

```
{
    "schemaVersion": "2.2",
    "description": "An example document.",
    "parameters": {
        "Message": {
            "type": "String",
            "description": "Message to be printed",
            "default": "Hello",
            "interpolationType" : "ENV_VAR",
            "allowedPattern": "^[^"]*$"

        }
    },
    "mainSteps": [{
        "action": "aws:runShellScript",
        "name": "printMessage",
        "precondition" : {
           "StringEquals" : ["platformType", "Linux"]
        },
        "inputs": {
            "runCommand": [
              "echo {{Message}}"
            ]
        }
    }
}
```
SSM ドキュメントが二重中括弧 `{{ }}` を使用していない場合、`allowedPattern` は理論的には必要ありません。
頻繁に使用するパラメータの場合は、そのパラメータを AWS Systems Manager のツールである Parameter Store に保存することをお勧めします。次に、デフォルト値として Parameter Store パラメータを参照するパラメータをドキュメントで定義できます。Parameter Store パラメータを参照するには、次の構文を使用します。  

```
{{ssm:parameter-name}}
```
他のドキュメントパラメータと同じ方法で、Parameter Store パラメータを参照するパラメータを使用できます。次の例では、`commands` パラメータのデフォルト値は Parameter Store パラメータ `myShellCommands` です。`commands` パラメータを `runCommand` 文字列として指定すると、ドキュメントは `myShellCommands` パラメータに格納されているコマンドを実行します。  

```
---
schemaVersion: '2.2'
description: runShellScript with command strings stored as Parameter Store parameter
parameters:
  commands:
    type: StringList
    description: "(Required) The commands to run on the instance."
    default: ["{{ ssm:myShellCommands }}"],
            interpolationType : 'ENV_VAR'
            allowedPattern: '^[^"]*$'

mainSteps:
- action: aws:runShellScript
  name: runShellScriptDefaultParams
  inputs:
    runCommand:"{{ commands }}"
```

```
{
    "schemaVersion": "2.2",
    "description": "runShellScript with command strings stored as Parameter Store parameter",
    "parameters": {
      "commands": {
        "type": "StringList",
        "description": "(Required) The commands to run on the instance.",
        "default": ["{{ ssm:myShellCommands }}"],
        "interpolationType" : "ENV_VAR"
      }
    },
    "mainSteps": [
      {
        "action": "aws:runShellScript",
        "name": "runShellScriptDefaultParams",
        "inputs": {
            "runCommand": [
              "{{ commands }}"
          ]
        }
      }
    ]
  }
```
`String` および `StringList` Parameter Store パラメータは、ドキュメントの `parameters` セクションで参照できます。`SecureString` Parameter Store パラメータは参照できません。
の詳細については、「Parameter Store」を参照してください。[AWS Systems Manager Parameter Store](systems-manager-parameter-store.md)  
型: 構造  
`parameters`構造は次のフィールドと値を受け入れます。  
+ `type`: (必須) その値として `String`、`StringList`、`Integer`、`Boolean`、`MapList`、`StringMap` を使用できます。各タイプの例を表示するには、次のセクションの「[SSM ドキュメントパラメータ `type` の例](#top-level-properties-type)」を参照してください。
**注記**  
コマンドタイプのドキュメントでは、`String` および `StringList` パラメータタイプのみがサポートされます。
+ `description`: (オプション) パラメータグループの説明。
+ `default`: (オプション) Parameter Store でのパラメータのデフォルト値またはパラメータへの参照。
+ `allowedValues`: (オプション) パラメータに使用できる値の配列。パラメータに使用できる値を定義すると、ユーザー入力が検証されます。使用できない値をユーザーが入力すると、実行の開始に失敗します。

------
#### [ YAML ]

  ```
  DirectoryType:
    type: String
    description: "(Required) The directory type to launch."
    default: AwsMad
    allowedValues:
    - AdConnector
    - AwsMad
    - SimpleAd
  ```

------
#### [ JSON ]

  ```
  "DirectoryType": {
    "type": "String",
    "description": "(Required) The directory type to launch.",
    "default": "AwsMad",
    "allowedValues": [
      "AdConnector",
      "AwsMad",
      "SimpleAd"
    ]
  }
  ```

------
+ `allowedPattern`: (オプション) ユーザー入力がパラメータに対して定義されたパターンと一致するかどうかを検証する正規表現。ユーザー入力が使用できるパターンと一致しない場合、実行は開始されません。
**注記**  
Systems Manager は、`allowedPattern` について 2 つの検証を実行します。1 つ目の検証は、ドキュメントを使用するときに API レベルで [Java 正規表現ライブラリ](https://docs.oracle.com/javase/8/docs/api/java/util/regex/package-summary.html)を使用して実行されます。2 つ目の検証は、ドキュメントを処理する前に [GO regexp ライブラリ](https://pkg.go.dev/regexp)を使用して SSM Agent に対して実行されます。

------
#### [ YAML ]

  ```
  InstanceId:
    type: String
    description: "(Required) The instance ID to target."
    allowedPattern: "^i-(?:[a-f0-9]{8}|[a-f0-9]{17})$"
    default: ''
  ```

------
#### [ JSON ]

  ```
  "InstanceId": {
    "type": "String",
    "description": "(Required) The instance ID to target.",
    "allowedPattern": "^i-(?:[a-f0-9]{8}|[a-f0-9]{17})$",
    "default": ""
  }
  ```

------
+ `displayType`: (オプション) `textfield` の `textarea` または AWS マネジメントコンソール のいずれかを表示するために使用されます。`textfield` は、1 行のテキストボックスで、`textarea` は、複数行のテキストエリアです。
+ `minItems`: (オプション) 許可される項目の最小数。
+ `maxItems`: (オプション) 許可される項目の最大数。
+ `minChars`: (オプション) 許可される項目の最小数。
+ `maxChars`: (オプション) を許可されているパラメータ文字の最大数。
+ `interpolationType`: (オプション) コマンドを実行する前にパラメータ値をどのように処理するかを定義します。`ENV_VAR` に設定すると、パラメータ値は `SSM_parameter-name` という名前の環境変数として使用できるようになります。この機能を使うと、パラメータ値をリテラル文字列として処理することによりコマンドインジェクションを防げるようになります。

  型: 文字列

  有効な値: `ENV_VAR`
必須：いいえ

**variables**  
(スキーマバージョン 0.3 のみ) 自動化ランブックのステップ全体で参照または更新できる値。変数はパラメーターと似ていますが、非常に重要な点において異なります。パラメーター値はランブックのコンテキストでは静的ですが、変数の値はランブックのコンテキストでは変更できます。変数の値を更新する場合、データ型は定義されたデータ型と一致する必要があります。オートメーションの変数値の更新に関する詳細は、「[`aws:updateVariable` — ランブック変数の値を更新します。](automation-action-update-variable.md)」を参照してください。  
型: ブール値｜整数｜マップリスト｜文字列｜文字列リスト｜文字列マップ  
必須: いいえ  

```
variables:
    payload:
        type: StringMap
        default: "{}"
```

```
{
    "variables": [
        "payload": {
            "type": "StringMap",
            "default": "{}"
        }
    ]
}
```

**runtimeConfig**  
(スキーマバージョン 1.2 のみ) 1 つ以上の Systems Manager プラグインによって適用されるインスタンスの構成。プラグインは必ずしも順番に実行されるとは限りません。  
型: Dictionary<string,PluginConfiguration>  
必須: いいえ

**mainSteps**  
(スキーマバージョン 0.3、2.0、および 2.2 のみ) 複数のステップ (プラグイン) を含むことができるオブジェクト。プラグインはステップ内で定義されます。ステップは、ドキュメントに記載されている順番に実行されます。  
型: Dictionary<string,PluginConfiguration>  
必須: はい

**出力**  
(スキーマバージョン 0.3 のみ) このドキュメントの実行によって生成され、他のプロセスで使用できるデータ。例えば、ドキュメントで新しい AMI を作成する場合、出力値として「CreateImage.ImageId」を指定すると、この出力を使用して後続のオートメーションの実行から新しいインスタンスを作成できます。出力の詳細については、「[アクション出力の入力としての使用](automation-action-outputs-inputs.md)」を参照してください。  
型: Dictionary<string,OutputConfiguration>  
必須: いいえ

**files**  
(スキーマバージョン 0.3 のみ) ドキュメントに添付され、自動実行時に実行されるスクリプトファイル (およびそのチェックサム)。`aws:executeScript` アクションを含むドキュメントのうち、添付ファイルが 1 つ以上のステップに指定されているもののみに適用されます。  
オートメーションランブックでサポートされているランタイムについては、「[`aws:executeScript` – スクリプトを実行する](automation-action-executeScript.md)」を参照してください。Automation ランブックにスクリプトを含める方法の詳細については、「[ランブックでのスクリプトの使用](automation-document-script-considerations.md)」および「[オートメーションランブックのビジュアルデザインエクスペリエンス](automation-visual-designer.md)」を参照してください。  
アタッチメントの付いたオートメーションランブックを作成するときは、`--attachments` オプション (AWS CLI の場合) または `Attachments` (API および SDK の場合) を使用して添付ファイルを指定する必要があります。SSM ドキュメントと、Amazon Simple Storage Service (Amazon S3) バケット内に保存されているファイルの両方で、ファイルの場所を指定できます。詳細については、「AWS Systems Manager API リファレンス」の「[Attachments](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_CreateDocument.html#systemsmanager-CreateDocument-request-Attachments)」(アタッチメント) を参照してください。  

```
---
files:
  launch.py:
    checksums:
      sha256: 18871b1311b295c43d0f...[truncated]...772da97b67e99d84d342ef4aEXAMPLE
```

```
"files": {
    "launch.py": {
        "checksums": {
            "sha256": "18871b1311b295c43d0f...[truncated]...772da97b67e99d84d342ef4aEXAMPLE"
        }
    }
}
```
型: Dictionary<string,FilesConfiguration>  
必須: いいえ

## SSM ドキュメントパラメータ `type` の例
<a name="top-level-properties-type"></a>

SSM ドキュメント内のパラメータのデータ型は静的です。つまり、パラメータのデータ型は定義後に変更することはできません。SSM ドキュメントプラグインでパラメータを使用する場合、パラメータのデータ型をプラグインの入力内で動的に変更することはできません。例えば、`Integer` プラグインの `runCommand` 入力内の `aws:runShellScript` パラメータを参照することはできません。この入力は文字列または文字列のリストを受け入れるためです。プラグインの入力にパラメータを使用するには、パラメータのデータ型が、入力の受け入れ可能なデータ型と一致している必要があります。例えば、`Boolean` プラグインの `allowDowngrade` 入力には `aws:updateSsmAgent` 型のパラメータを指定する必要があります。パラメータのデータ型がプラグインの入力のデータ型と一致しない場合、SSM ドキュメントの検証は失敗となり、システムによってドキュメントは作成されません。これは、他のプラグイン、もしくは AWS Systems Manager のオートメーションアクション用に、入力内にある下流のパラメータを使用する場合にも当てはまります。例えば、`aws:runDocument` プラグインの `documentParameters` 入力にある `StringList` パラメータを参照することはできません。ダウンストリーム SSM ドキュメントパラメータのタイプが `StringList` パラメータで、かつ参照しようとしているパラメータと一致する場合でも、`documentParameters` 入力は、文字列へのマッピングを受け入れます。

 オートメーションアクションでパラメータを使用するときは、ほとんどの場合、SSM ドキュメントを作成するときにパラメータのデータ型は検証されません。`aws:runCommand` アクションを使用する場合にのみ、SSM ドキュメントを作成するときにパラメータのデータ型が検証されます。それ以外の場合、オートメーションの実行中、アクションが実行される前にその入力が検証されるときに、パラメータが検証されます。例えば、入力パラメータが `String` であり、それを `MaxInstanceCount` アクションの `aws:runInstances` 入力の値として参照する場合は、SSM ドキュメントが作成されます。ただし、ドキュメントを実行すると、`aws:runInstances` アクションの検証中にオートメーションは失敗します。`MaxInstanceCount` 入力に `Integer` が必要なためです。

以下に示しているのは、各パラメータ `type` の例です。

文字列  
引用符で囲んだ 0 個以上の Unicode 文字のシーケンス。例えば、"i-1234567890abcdef0" など。バックスラッシュを使用してエスケープします。  
文字列パラメータには、セキュリティを高めるために環境変数補間を有効にする値 `ENV_VAR` を持つ、オプションの `interpolationType` フィールドを含めることができます。  

```
---
InstanceId:
  type: String
  description: "(Optional) The target EC2 instance ID."
  interpolationType: ENV_VAR
```

```
"InstanceId":{
  "type":"String",
  "description":"(Optional) The target EC2 instance ID.",
  "interpolationType": "ENV_VAR"
}
```

StringList  
カンマ区切りの文字列項目のリスト。例えば、["cd \$1", "pwd"] など。  

```
---
commands:
  type: StringList
  description: "(Required) Specify a shell script or a command to run."
  default: ""
  minItems: 1
  displayType: textarea
```

```
"commands":{
  "type":"StringList",
  "description":"(Required) Specify a shell script or a command to run.",
  "minItems":1,
  "displayType":"textarea"
}
```

Boolean  
`true` または `false` のみを使用できます。"true" または 0 は使用できません。  

```
---
canRun:
  type: Boolean
  description: ''
  default: true
```

```
"canRun": {
  "type": "Boolean",
  "description": "",
  "default": true
}
```

整数  
整数。小数 (3.14159 など) や引用符で囲んだ数字 ("3" など) は使用できません。  

```
---
timeout:
  type: Integer
  description: The type of action to perform.
  default: 100
```

```
"timeout": {
  "type": "Integer",
  "description": "The type of action to perform.",
  "default": 100    
}
```

StringMap  
キーと値のマッピング。キーと値は文字列でなければなりません。例えば、\$1"Env": "Prod"\$1 など。  

```
---
notificationConfig:
  type: StringMap
  description: The configuration for events to be notified about
  default:
    NotificationType: 'Command'
    NotificationEvents:
    - 'Failed'
    NotificationArn: "$dependency.topicArn"
  maxChars: 150
```

```
"notificationConfig" : {
  "type" : "StringMap",
  "description" : "The configuration for events to be notified about",
  "default" : {
    "NotificationType" : "Command",
    "NotificationEvents" : ["Failed"],
    "NotificationArn" : "$dependency.topicArn"
  },
  "maxChars" : 150
}
```

MapList  
StringMap オブジェクトのリスト。  

```
blockDeviceMappings:
  type: MapList
  description: The mappings for the create image inputs
  default:
  - DeviceName: "/dev/sda1"
    Ebs:
      VolumeSize: "50"
  - DeviceName: "/dev/sdm"
    Ebs:
      VolumeSize: "100"
  maxItems: 2
```

```
"blockDeviceMappings":{
  "type":"MapList",
  "description":"The mappings for the create image inputs",
  "default":[
    {
      "DeviceName":"/dev/sda1",
      "Ebs":{
        "VolumeSize":"50"
      }
    },
    {
      "DeviceName":"/dev/sdm",
      "Ebs":{
        "VolumeSize":"100"
      }
    }
  ],
  "maxItems":2
}
```

## SSM コマンドドキュメントの内容の表示
<a name="viewing-ssm-document-content"></a>

AWS Systems Manager (SSM) コマンドドキュメントの必須パラメータとオプションのパラメータ、およびドキュメントが実行するアクションをプレビューするには、Systems Manager コンソールでドキュメントのコンテンツを表示できます。

**SSM コマンドドキュメントの内容を表示するには**

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

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

1. 検索ボックスで、[**ドキュメントのタイプ**] を選択し、[**コマンド**] を選択します。

1. ドキュメントの名前を選択し、[**コンテンツ**] タブをクリックします。

1. [コンテンツ] フィールドで、ドキュメントで使用できるパラメータとアクションステップを確認します。

   例えば、次の図は、(1) `version` と (2) `allowDowngrade` が `AWS-UpdateSSMAgent` ドキュメントのオプションのパラメータで、ドキュメントによって実行される最初のアクションが (3) `aws:updateSsmAgent` であることを示しています。  
![\[Systems Manager コンソールで SSM ドキュメントの内容を表示する\]](http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/images/view-document-content.png)

# コマンドドキュメントプラグインリファレンス
<a name="documents-command-ssm-plugin-reference"></a>

このリファレンスでは、AWS Systems Manager (SSM) コマンドドキュメントで指定できるプラグインが説明されています。これらのプラグインは、オートメーションアクションを使用する SSM オートメーションランブックでは使用できません。AWS Systems Manager Automation アクションについては、「[Systems Manager Automation アクションのリファレンス](automation-actions.md)」を参照してください。

Systems Manager は、SSM ドキュメントの内容を読み取ることによって、マネージドインスタンスで実行するアクションを判別します。各ドキュメントにはコード実行セクションが含まれています。ドキュメントのスキーマバージョンに応じて、このコード実行セクションには 1 つ以上のプラグインまたはステップが含まれます。このヘルプトピックの目的上、プラグインとステップは*プラグイン*と呼んでいます。このセクションには、各 Systems Manager プラグインに関して説明します。ドキュメントの作成に関する情報やスキーマのバージョンの違いなど、ドキュメントの詳細については、「[AWS Systems Manager ドキュメント](documents.md)」を参照してください。

`aws:runShellScript` や `aws:runPowerShellScript` などの文字列パラメータを受け入れるプラグインの場合、`interpolationType` パラメータを使用して、パラメータ入力を潜在的に実行可能なコマンドではなく文字列リテラルとして処理することにより、セキュリティを高めることができます。例えば、次のようになります。

```
{
    "schemaVersion": "2.2",
    "description": "runShellScript with command strings stored as Parameter Store parameter",
    "parameters": {
      "commands": {
        "type": "StringList",
        "description": "(Required) The commands to run on the instance.",
        "default": ["{{ ssm:myShellCommands }}"],
        "interpolationType" : "ENV_VAR"
      }
    },
    //truncated
 }
```

**注記**  
ここで説明するプラグインの中には、Windows Server インスタンスまたは Linux インスタンスのいずれかでのみ実行されるものがあります。各プラグインにはプラットフォームの依存関係が記載されています。  
macOS 向けの Amazon Elastic Compute Cloud (Amazon EC2) インスタンスでは、以下のドキュメントプラグインがサポートされています。  
`aws:refreshAssociation`
`aws:runShellScript`
`aws:runPowerShellScript`
`aws:softwareInventory`
`aws:updateSsmAgent`

**Topics**
+ [共有入力](#shared-inputs)
+ [`aws:applications`](#aws-applications)
+ [`aws:cloudWatch`](#aws-cloudWatch)
+ [`aws:configureDocker`](#aws-configuredocker)
+ [`aws:configurePackage`](#aws-configurepackage)
+ [`aws:domainJoin`](#aws-domainJoin)
+ [`aws:downloadContent`](#aws-downloadContent)
+ [`aws:psModule`](#aws-psModule)
+ [`aws:refreshAssociation`](#aws-refreshassociation)
+ [`aws:runDockerAction`](#aws-rundockeraction)
+ [`aws:runDocument`](#aws-rundocument)
+ [`aws:runPowerShellScript`](#aws-runPowerShellScript)
+ [`aws:runShellScript`](#aws-runShellScript)
+ [`aws:softwareInventory`](#aws-softwareinventory)
+ [`aws:updateAgent`](#aws-updateagent)
+ [`aws:updateSsmAgent`](#aws-updatessmagent)

## 共有入力
<a name="shared-inputs"></a>

あらゆるプラグインが以下の入力を使用できるのは、SSM Agent バージョン 3.0.502 以降のみです。

**finallyStep**  
ドキュメントに実行させる最後のステップです。この入力がステップに定義されている場合、`exit` または `onFailure` 入力で指定されている `onSuccess` 値よりもこれが優先されます。この入力が定義されたステップを期待どおりに実行するには、このステップをドキュメントの `mainSteps` で定義されている最後のステップにする必要があります。  
タイプ: ブール値  
有効な値: `true` \$1 `false`  
必須: いいえ

**onFailure**  
`exit` 値を使用するプラグインにこの入力を指定して、ステップが失敗した場合は、ステップのステータスにこの障害が反映され、`finallyStep` が定義されない限り、ドキュメントは残りのステップを実行しません。`successAndExit` 値を使用するプラグインにこの入力を値で指定して、ステップが失敗した場合は、ステップのステータスが成功になり、`finallyStep` が定義されない限り、ドキュメントは残りのステップを実行しません。  
型: 文字列  
有効な値: `exit` \$1 `successAndExit`  
必須: いいえ

**onSuccess**  
プラグインにこの入力を指定し、ステップが正常に実行した場合、`finallyStep` が定義されている場合を除き、ドキュメントは残りのステップを実行しません。  
型: 文字列  
有効な値: `exit`  
必須: いいえ

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: Shared inputs example
parameters:
  customDocumentParameter:
    type: String
    description: Example parameter for a custom Command-type document.
mainSteps:
- action: aws:runDocument
  name: runCustomConfiguration
  inputs:
    documentType: SSMDocument
    documentPath: "yourCustomDocument"
    documentParameters: '"documentParameter":{{customDocumentParameter}}'
    onSuccess: exit
- action: aws:runDocument
  name: ifConfigurationFailure
  inputs:
    documentType: SSMDocument
    documentPath: "yourCustomRepairDocument"
    onFailure: exit
- action: aws:runDocument
  name: finalConfiguration
  inputs:
    documentType: SSMDocument
    documentPath: "yourCustomFinalDocument"
    finallyStep: true
```

------
#### [ JSON ]

```
{
   "schemaVersion": "2.2",
   "description": "Shared inputs example",
   "parameters": {
      "customDocumentParameter": {
         "type": "String",
         "description": "Example parameter for a custom Command-type document."
      }
   },
   "mainSteps":[
      {
         "action": "aws:runDocument",
         "name": "runCustomConfiguration",
         "inputs": {
            "documentType": "SSMDocument",
            "documentPath": "yourCustomDocument",
            "documentParameters": "\"documentParameter\":{{customDocumentParameter}}",
            "onSuccess": "exit"
         }
      },
      {
         "action": "aws:runDocument",
         "name": "ifConfigurationFailure",
         "inputs": {
            "documentType": "SSMDocument",
            "documentPath": "yourCustomRepairDocument",
            "onFailure": "exit"
         }
      },
      {
         "action": "aws:runDocument",
         "name":"finalConfiguration",
         "inputs": {
            "documentType": "SSMDocument",
            "documentPath": "yourCustomFinalDocument",
            "finallyStep": true
         }
      }
   ]
}
```

------

## `aws:applications`
<a name="aws-applications"></a>

EC2 インスタンスでアプリケーションをインストール、修復、またはアンインストールします。このプラグインは、Windows Server オペレーティングシステムでのみ実行されます。

### 構文
<a name="applications-syntax"></a>

#### スキーマ 2.2
<a name="applications-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:applications plugin
parameters:
  source:
    description: "(Required) Source of msi."
    type: String
mainSteps:
- action: aws:applications
  name: example
  inputs:
    action: Install
    source: "{{ source }}"
```

------
#### [ JSON ]

```
{
  "schemaVersion":"2.2",
  "description":"aws:applications",
  "parameters":{
    "source":{
    "description":"(Required) Source of msi.",
    "type":"String"
    }
  },
  "mainSteps":[
    {
      "action":"aws:applications",
      "name":"example",
      "inputs":{
        "action":"Install",
        "source":"{{ source }}"
      }
    }
  ]
}
```

------

#### スキーマ 1.2
<a name="applications-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:applications:
    properties:
    - id: 0.aws:applications
      action: "{{ action }}"
      parameters: "{{ parameters }}"
      source: "{{ source }}"
      sourceHash: "{{ sourceHash }}"
```

------
#### [ JSON ]

```
{
   "runtimeConfig":{
      "aws:applications":{
         "properties":[
            {
               "id":"0.aws:applications",
               "action":"{{ action }}",
               "parameters":"{{ parameters }}",
               "source":"{{ source }}",
               "sourceHash":"{{ sourceHash }}"
            }
         ]
      }
   }
}
```

------

### プロパティ
<a name="applications-properties"></a>

**action**  
取るべきアクション｡  
タイプ: Enum  
有効な値: `Install` \$1 `Repair` \$1 `Uninstall`  
必須: はい

**パラメータ**  
インストーラのパラメータ。  
型: 文字列  
必須: いいえ

**source**  
アプリケーションの `.msi` ファイルの URL。  
型: 文字列  
必須: はい

**sourceHash**  
`.msi` ファイルの SHA256 ハッシュ。  
型: 文字列  
必須: いいえ

## `aws:cloudWatch`
<a name="aws-cloudWatch"></a>

Windows Server から Amazon CloudWatch または Amazon CloudWatch Logs にデータをエクスポートし、CloudWatch メトリクスを使用してデータをモニタリングします。このプラグインは、Windows Server オペレーティングシステムでのみ実行されます。Amazon Elastic Compute Cloud (Amazon EC2) との CloudWatch 統合の設定の詳細については、「Amazon CloudWatch ユーザーガイド」の「[CloudWatch エージェントを使用したメトリクス、ログ、トレースの収集](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html)」を参照してください。

**重要**  
CloudWatch の統合エージェントによって、ログデータを Amazon CloudWatch Logs に送信するためのツールとして SSM Agent が置き換えられました。SSM Agent aws:cloudWatch プラグインはサポートされていません。ログ収集プロセスには、統合された CloudWatch エージェントのみを使用することをお勧めします。詳細については、以下の各トピックを参照してください。  
[統合された CloudWatch Logs へのノードログの送信 (CloudWatch エージェント)](monitoring-cloudwatch-agent.md)
[Windows Server ノードのログ収集を CloudWatch エージェントに移行する](monitoring-cloudwatch-agent.md#monitoring-cloudwatch-agent-migrate)
「Amazon CloudWatch ユーザーガイド」の「[CloudWatch エージェントを使用してメトリクス、ログ、トレースを収集する](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html)」。

次のデータ型をエクスポートおよび監視できます。

**ApplicationEventLog**  
アプリケーションイベントログデータを CloudWatch Logs に送信します。

**CustomLogs**  
テキストベースのログファイルを Amazon CloudWatch Logs に送信します｡ CloudWatch プラグインは、ログファイルのフィンガープリントを作成します。次に、システムは各フィンガープリントにデータオフセットを関連付けます。プラグインは、変更があったときにファイルをアップロードし、オフセットを記録し、オフセットをフィンガープリントに関連付けます。この方法は、ユーザーがプラグインを有効にし、多数のファイルを含むディレクトリにサービスを関連付け、システムがすべてのファイルをアップロードすることを避けるために使用されます。  
アプリケーションがポーリング中にログをトランケートまたは消去しようとすると、`LogDirectoryPath` で指定されたログではエントリが失われることに注意してください。たとえば、ログファイルのサイズを制限する場合は、その制限に達すると新しいログファイルを作成し、新しいファイルにデータを書き続ける必要があります。

**ETW**  
Windows のイベントトレース (ETW) データを CloudWatch Logs に送信します｡

**IIS**  
IIS ログデータを CloudWatch Logs に送信します。

**PerformanceCounter**  
Windows パフォーマンスカウンターを CloudWatch に送信します｡ メトリクスとして CloudWatch にアップロードするさまざまなカテゴリを選択できます。アップロードするパフォーマンスカウンタごとに、一意の ID (たとえば、「PerformanceCounter2」、「PerformanceCounter3」など) を持つ[**PerformanceCounter**] セクションを作成し、そのプロパティを設定します。  
AWS Systems Manager SSM Agent または CloudWatch プラグインが停止した場合、パフォーマンスカウンターのデータは、CloudWatch にログ記録されません。この動作は、カスタムログまたは Windows イベントログとは異なります。SSM Agent または CloudWatch プラグインを使用できる場合、カスタムログと Windows イベントログはパフォーマンスカウンタデータを保持し、CloudWatch にアップロードします。

**SecurityEventLog**  
セキュリティイベントログデータを CloudWatch Logs に送信します。

**SystemEventLog**  
システムイベントログデータを CloudWatch Logs に送信します。

データの送信先として以下を定義できます。

**CloudWatch**  
パフォーマンスカウンターのメトリクスデータの送信先。同じデータを別の場所に送信するには、一意の ID (例: 「CloudWatch2」、「CloudWatch3」) を使用してセクションを追加し、新しい ID ごとに異なるリージョンを指定します。

**CloudWatchLogs**  
ログデータの送信先。一意の ID (例: 「CloudWatchLogs2」、「CloudWatchLogs3」) を含むセクションを追加し、新しい ID ごとに異なるリージョンを指定して、同じデータを別の場所に送信できます。

### 構文
<a name="cloudWatch-syntax"></a>

```
"runtimeConfig":{
        "aws:cloudWatch":{
            "settings":{
                "startType":"{{ status }}"
            },
            "properties":"{{ properties }}"
        }
    }
```

### 設定とプロパティ
<a name="cloudWatch-properties"></a>

**AccessKey**  
お客様のアクセスキー ID。IAM ロールを使用してインスタンスを起動しない限り、このプロパティは必須です。このプロパティは SSM では使用できません。  
型: 文字列  
必須: いいえ

**CategoryName**  
パフォーマンスモニターのパフォーマンスカウンタカテゴリ。  
型: 文字列  
必須: はい

**CounterName**  
パフォーマンスモニターのパフォーマンスカウンターの名前。  
型: 文字列  
必須: はい

**CultureName**  
タイムスタンプが記録されるロケール。**CultureName** を空白にした場合は、Windows Server インスタンスで使用されているものと同じロケールになります。  
型: 文字列  
有効な値: サポートされている値のリストについては、Microsoft ウェブサイトの「[National Language Support (NLS)](https://msdn.microsoft.com/en-us/library/cc233982.aspx)」を参照してください。**div**、**div-MV**、**hu**、および **hu-HU** の値はサポートされません。  
必須: いいえ

**DimensionName**  
Amazon CloudWatch メトリクスのディメンション。`DimensionName` を指定する場合は、`DimensionValue` を指定する必要があります。これらのパラメータにより、メトリクスが一覧表示される別のビューが表示されます。複数のメトリクスに同じディメンションを使用して、特定のディメンションに属するすべてのメトリクスを表示することができます。  
型: 文字列  
必須: いいえ

**DimensionValue**  
Amazon CloudWatch メトリクスのディメンション値。  
型: 文字列  
必須: いいえ

**エンコード**  
使用するファイルエンコード (たとえば、UTF-8)。表示名ではなく、エンコード名を使用します。  
タイプ: 文字列  
有効な値: サポートされる値の一覧については、Microsoft Learn Library の「[Encoding クラス](https://learn.microsoft.com/en-us/dotnet/api/system.text.encoding?view=net-7.0)」を参照してください。  
必須: はい

**フィルタ**  
ログ名のプレフィックス。すべてのファイルをモニタリングするには、このパラメータを空白のままにします。  
型: 文字列  
有効な値: サポートされる値の一覧については、MSDN ライブラリの「[FileSystemWatcherFilter プロパティ](http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.filter.aspx)」を参照してください。  
必須: いいえ

**フロー**  
アップロードする各データタイプ、およびデータの送信先 (CloudWatch または CloudWatch Logs)。例えば、[`"Id": "PerformanceCounter"`] で定義されたパフォーマンスカウンタを CloudWatch に送信するには、`"Id": "CloudWatch"` で定義された送信先、[**"PerformanceCounter,CloudWatch"**] を入力します。同様に、カスタムログ、ETW ログ、システムログを `"Id": "ETW"` で定義された CloudWatch Logs の送信先に送信するには、「**"(ETW),CloudWatchLogs"**」と入力します。加えて、同じパフォーマンスカウンターまたはログファイルを複数の宛先に送信することもできます。たとえば、アプリケーションログを `"Id": "CloudWatchLogs"` と `"Id": "CloudWatchLogs2"` で定義した 2 つの異なる宛先に送信するには、「**"ApplicationEventLog,(CloudWatchLogs, CloudWatchLogs2)"**」と入力します。  
型: 文字列  
有効な値 (ソース): `ApplicationEventLog` \$1 `CustomLogs` \$1 `ETW` \$1 `PerformanceCounter` \$1 `SystemEventLog` \$1 `SecurityEventLog`   
有効な値 (送信先): `CloudWatch` \$1 `CloudWatchLogs` \$1 `CloudWatch`*n* \$1 `CloudWatchLogs`*n*   
必須: はい

**FullName**  
コンポーネントのフルネーム。  
型: 文字列  
必須: はい

**ID**  
データソースまたは送信先を識別します。この識別子は、設定ファイル内で一意である必要があります。  
型: 文字列  
必須: はい

**InstanceName**  
パフォーマンスカウンターインスタンスの名前。各パフォーマンスカウンターコンポーネントではメトリクスが 1 つしかサポートされないため、アスタリスク (\$1) を使用してすべてのインスタンスを指定しないでください。ただし、**\$1Total** は使用できます。  
型: 文字列  
必須: はい

**レベル**  
Amazon CloudWatch に送信するメッセージのタイプ。  
型: 文字列  
有効な値:   
+ **1** - エラーメッセージだけがアップロードされます。
+ **2** - 警告メッセージだけがアップロードされます。
+ **4** - 情報メッセージだけがアップロードされます。
値を加算すると、複数の種類のメッセージを含めることができます。たとえば、**3** はエラーメッセージ (**1**) と警告メッセージ (**2**) が含まれることを意味します。**7** の値は、エラーメッセージ (**1**)、警告メッセージ (**2**)、情報メッセージ (**4**) が含まれることを意味します。  
必須: はい  
Windows セキュリティログではレベルを 7 に設定する必要があります。

**LineCount**  
ログファイルを識別するヘッダーの行数。たとえば、IIS のログファイルのヘッダーはほぼ同じです。「**3**」と入力すると、ログファイルのヘッダーの最初の 3 行が読み取られ、ログファイルを識別できます。IIS のログファイルでは、3 行目は日付と時刻のタイムスタンプで、ログファイル間で異なります。  
タイプ: 整数  
必須: いいえ

**LogDirectoryPath**  
CustomLogs の場合、EC2 インスタンスにログが保存されるパス。IIS ログの場合、IIS ログが個々のサイト (たとえば、**C:\$1\$1inetpub\$1\$1logs\$1\$1LogFiles\$1\$1W3SVC*n***) に保存されるフォルダ。IIS ログの場合、W3C ログ形式のみがサポートされます。IIS、NCSA、カスタム形式はサポートされません。  
型: 文字列  
必須: はい

**LogGroup**  
ロググループの名前です。この名前は、CloudWatch コンソールの [**ロググループ**] 画面に表示されます。  
型: 文字列  
必須: はい

**LogName**  
ログファイルの名前。  

1. ログの名前を検索するには、イベントビューアーのナビゲーションペインで、[**Applications and Services Logs**] を選択します。

1. ログの一覧で、アップロードするログを右クリックし (例えば、[`Microsoft`] > [`Windows`] > [`Backup`] > [`Operational`] など)、**[Create Custom View]** を選択します。

1. [**Create Custom View**] ダイアログボックスの [**XML**] タブを選択します。[**LogName**] は、<Select Path=> タグにあります (たとえば、`Microsoft-Windows-Backup` など)。このテキストを [**LogName**] パラメータにコピーします。
型: 文字列  
有効な値: `Application` \$1 `Security` \$1 `System` \$1 `Microsoft-Windows-WinINet/Analytic`  
必須: はい

**LogStream**  
送信先ログストリーム。[**\$1instance\$1id\$1**] (デフォルト) を使用した場合、このインスタンスのインスタンス ID がログストリーム名として使用されます。  
型: 文字列  
有効な値: `{instance_id}` \$1 `{hostname}` \$1 `{ip_address}` *<log\$1stream\$1name>*  
存在しないログストリーム名を入力すると、CloudWatch Logs によってログストリームが自動的に作成されます。リテラル文字列、定義済み変数（**\$1instance\$1id\$1**、**\$1hostname\$1**、**\$1ip\$1address\$1**）、またはこれらの組み合わせを使用して、ログストリーム名を定義できます。  
このパラメータで指定されたログのストリーム名は、CloudWatch コンソールの [**Log Groups > Streams for *<YourLogStream>***] 画面に表示されます。  
必須: はい

**MetricName**  
パフォーマンスデータが含まれる CloudWatch メトリクス。  
名前に特殊文字を使用しないでください。使用した場合、メトリクスおよびその関連付けられたアラームが機能しないことがあります。
型: 文字列  
必須: はい

**NameSpace**  
パフォーマンスカウンターデータを書き込むメトリック名前空間。  
型: 文字列  
必須: はい

**PollInterval**  
新しいパフォーマンスカウンタとログデータがアップロードされるまでに必要な経過秒数｡  
タイプ: 整数  
有効な値: これを 5 秒以上に設定します。15 秒 (00:00: 15) をお勧めします。  
必須: はい

**リージョン**  
ログデータを送信する AWS リージョン。パフォーマンスカウンターは、ログデータの送信元とは異なるリージョンに送信できますが、インスタンスが実行されているのと同じリージョンにこのパラメータを設定することをお勧めします。  
型: 文字列  
有効な値: Systems Manager と CloudWatch Logs の両方でサポートされる AWS リージョン のリージョン ID (`us-east-2`、`eu-west-1`、`ap-southeast-1` など)。各サービスでサポートされる AWS リージョン のリストについては、「Amazon Web Services 全般のリファレンス」の「[Amazon CloudWatch Logs サービスエンドポイント](https://docs.aws.amazon.com/general/latest/gr/cwl_region.html#cwl_region)」と「[Systems Manager サービスエンドポイント](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region)」を参照してください。  
必須: はい

**SecretKey**  
お客様のシークレットアクセスキー。IAM ロールを使用してインスタンスを起動しない限り、このプロパティは必須です。  
型: 文字列  
必須: いいえ

**startType**  
インスタンスで CloudWatch をオンまたはオフにします。  
型: 文字列  
有効な値: `Enabled` \$1 `Disabled`  
必須: はい

**TimestampFormat**  
使用するタイムスタンプ形式。サポートされる値の一覧については、MSDN ライブラリの「[カスタムの日付と時刻の書式指定文字列](http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx)」を参照してください。  
型: 文字列  
必須: はい

**TimeZoneKind**  
ログのタイムスタンプにタイムゾーン情報が含まれていない場合にタイムゾーン情報を提供できます。このパラメータが空になっていて、タイムスタンプにタイムゾーン情報が含まれていない場合、CloudWatch Logs ではデフォルトでローカルタイムゾーンが使用されます。タイムスタンプに既にタイムゾーン情報が含まれている場合、このパラメータは無視されます。  
型: 文字列  
有効な値: `Local` \$1 `UTC`  
必須: いいえ

**単位**  
メトリクスの適切な測定単位。  
型: 文字列  
有効な値: Seconds \$1 Microseconds \$1 Milliseconds \$1 Bytes \$1 Kilobytes \$1 Megabytes \$1 Gigabytes \$1 Terabytes \$1 Bits \$1 Kilobits \$1 Megabits \$1 Gigabits \$1 Terabits \$1 Percent \$1 Count \$1 Bytes/Second \$1 Kilobytes/Second \$1 Megabytes/Second \$1 Gigabytes/Second \$1 Terabytes/Second \$1 Bits/Second \$1 Kilobits/Second \$1 Megabits/Second \$1 Gigabits/Second \$1 Terabits/Second \$1 Count/Second \$1 None  
必須: はい

## `aws:configureDocker`
<a name="aws-configuredocker"></a>

(スキーマバージョン 2.0 以降) コンテナと Docker と連携するインスタンスを設定します。このプラグインは、Linux のほとんどのバージョンと Windows Server オペレーティングシステムでのみサポートされています｡

### 構文
<a name="configuredocker-syntax"></a>

#### スキーマ 2.2
<a name="configuredocker-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:configureDocker
parameters:
  action:
    description: "(Required) The type of action to perform."
    type: String
    default: Install
    allowedValues:
    - Install
    - Uninstall
mainSteps:
- action: aws:configureDocker
  name: configureDocker
  inputs:
    action: "{{ action }}"
```

------
#### [ JSON ]

```
{
  "schemaVersion": "2.2",
  "description": "aws:configureDocker plugin",
  "parameters": {
    "action": {
      "description": "(Required) The type of action to perform.",
      "type": "String",
      "default": "Install",
      "allowedValues": [
        "Install",
        "Uninstall"
      ]
    }
  },
  "mainSteps": [
    {
      "action": "aws:configureDocker",
      "name": "configureDocker",
      "inputs": {
        "action": "{{ action }}"
      }
    }
  ]
}
```

------

### 入力
<a name="configuredocker-properties"></a>

**action**  
実行するアクションのタイプ。  
タイプ: Enum  
有効な値: `Install` \$1 `Uninstall`  
必須: はい

## `aws:configurePackage`
<a name="aws-configurepackage"></a>

(スキーマバージョン 2.0 以降) AWS Systems Manager Distributor パッケージをインストールまたはアンインストールします。最新バージョン、デフォルトバージョン、または指定したパッケージのバージョンをインストールできます。AWS が提供するパッケージもサポートされています。このプラグインは、Windows Server および Linux オペレーティングシステムで実行されます。ただし、Linux オペレーティングシステムでは、すべての利用可能なパッケージがサポートされているわけではありません。

Windows Server 用の利用できる AWS パッケージには、`AWSPVDriver`、`AWSNVMe`、`AwsEnaNetworkDriver`、`AwsVssComponents`、`AmazonCloudWatchAgent`、`CodeDeployAgent`、`AWSSupport-EC2Rescue.` などがあります。

Linux オペレーティングシステムで使用できる AWSパッケージには、`AmazonCloudWatchAgent`、`CodeDeployAgent`、`AWSSupport-EC2Rescue` などがあります。

### 構文
<a name="configurepackage-syntax"></a>

#### スキーマ 2.2
<a name="configurepackage-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:configurePackage
parameters:
  name:
    description: "(Required) The name of the AWS package to install or uninstall."
    type: String
  action:
    description: "(Required) The type of action to perform."
    type: String
    default: Install
    allowedValues:
    - Install
    - Uninstall
  ssmParameter:
    description: "(Required) Argument stored in Parameter Store."
    type: String
    default: "{{ ssm:parameter_store_arg }}"
mainSteps:
- action: aws:configurePackage
  name: configurePackage
  inputs:
    name: "{{ name }}"
    action: "{{ action }}"
    additionalArguments: 
      "{\"SSM_parameter_store_arg\": \"{{ ssmParameter }}\", \"SSM_custom_arg\": \"myValue\"}"
```

------
#### [ JSON ]

```
{
   "schemaVersion": "2.2",
   "description": "aws:configurePackage",
   "parameters": {
      "name": {
         "description": "(Required) The name of the AWS package to install or uninstall.",
         "type": "String"
      },
      "action": {
         "description": "(Required) The type of action to perform.",
         "type": "String",
         "default": "Install",
         "allowedValues": [
            "Install",
            "Uninstall"
         ]
      },
      "ssmParameter": {
         "description": "(Required) Argument stored in Parameter Store.",
         "type": "String",
         "default": "{{ ssm:parameter_store_arg }}"
      }
   },
   "mainSteps": [
      {
         "action": "aws:configurePackage",
         "name": "configurePackage",
         "inputs": {
            "name": "{{ name }}",
            "action": "{{ action }}",
            "additionalArguments": "{\"SSM_parameter_store_arg\": \"{{ ssmParameter }}\", \"SSM_custom_arg\": \"myValue\"}"
         }
      }
   ]
}
```

------

### 入力
<a name="configurepackage-properties"></a>

**名前**  
インストールまたはアンインストールする AWS パッケージの名前。使用可能なパッケージには `AWSPVDriver`、`AwsEnaNetworkDriver`、`AwsVssComponents`、`AmazonCloudWatchAgent` などがあります。  
型: 文字列  
必須: はい

**action**  
パッケージをインストールまたはアンインストールします｡  
タイプ: Enum  
有効な値: `Install` \$1 `Uninstall`  
必須: はい

**installationType**  
実行するインストールのタイプ。`Uninstall and reinstall` を指定した場合、パッケージは完全にアンインストールされてから再インストールされます。再インストールが完了するまで、アプリケーションは利用できません。`In-place update` を指定した場合、更新スクリプトに指定した手順に従って、新しいファイルまたは変更されたファイルのみが既存のインストールに追加されます。アプリケーションは、更新プロセス中も引き続き使用できます。`In-place update` オプションは、AWS 公開パッケージではサポートされていません。`Uninstall and reinstall` がデフォルト値です。  
タイプ: Enum  
有効な値: `Uninstall and reinstall` \$1 `In-place update`  
必須: いいえ

**additionalArguments**  
インストール、アンインストール、または更新スクリプトに指定する追加パラメータの JSON 文字列。各パラメータには、接頭辞 `SSM_` を付ける必要があります。規則 `{{ssm:parameter-name}}` を使用して、追加の引数で Parameter Store パラメータを参照できます。インストール、アンインストール、または更新スクリプトで追加のパラメータを使用するには、オペレーティングシステムに適した構文を使用して、パラメータを環境変数として参照する必要があります。たとえば、PowerShell では、`SSM_arg` 引数を `$Env:SSM_arg` として参照します。定義する引数の数に制限はありませんが、追加の引数の入力には 4,096 文字の制限があります。この制限には、定義するすべてのキーと値が含まれます。  
型: StringMap  
必須: いいえ

**バージョン**  
インストールまたはアンインストールするパッケージの特定のバージョン。インストールする場合、デフォルトで最新の公開バージョンがインストールされます。アンインストールすると、デフォルトで現在インストールされているバージョンがアンインストールされます。インストールされているバージョンが見つからない場合は、最新の公開バージョンがダウンロードされ、アンインストール処理が実行されます。  
型: 文字列  
必須: いいえ

## `aws:domainJoin`
<a name="aws-domainJoin"></a>

ドメインに EC2 インスタンスを結合します｡ このプラグインは、Linux および Windows Server オペレーティングシステムでのみ実行されます。このプラグインは、Linux インスタンスのホスト名を EC2AMAZ-*XXXXXXX* の形式に変更します。EC2 インスタンスの結合の詳細については、*AWS Directory Service 管理ガイド*の [EC2 インスタンスの AWS Managed Microsoft AD ディレクトリへの結合](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_join_instance.html)を参照してください。

### 構文
<a name="domainJoin-syntax"></a>

#### スキーマ 2.2
<a name="domainJoin-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:domainJoin
parameters:
  directoryId:
    description: "(Required) The ID of the directory."
    type: String
  directoryName:
    description: "(Required) The name of the domain."
    type: String
  directoryOU:
    description: "(Optional) The organizational unit to assign the computer object to."
    type: String
  dnsIpAddresses:
    description: "(Required) The IP addresses of the DNS servers for your directory."
    type: StringList
  hostname:
    description: "(Optional) The hostname you want to assign to the node."
    type: String
mainSteps:
- action: aws:domainJoin
  name: domainJoin
  inputs:
    directoryId: "{{ directoryId }}"
    directoryName: "{{ directoryName }}"
    directoryOU: "{{ directoryOU }}"
    dnsIpAddresses: "{{ dnsIpAddresses }}"
    hostname: "{{ hostname }}"
```

------
#### [ JSON ]

```
{
  "schemaVersion": "2.2",
  "description": "aws:domainJoin",
  "parameters": {
    "directoryId": {
      "description": "(Required) The ID of the directory.",
      "type": "String"
    },
    "directoryName": {
      "description": "(Required) The name of the domain.",
      "type": "String"
    },
    "directoryOU": {
        "description": "(Optional) The organizational unit to assign the computer object to.",
        "type": "String"
      },
    "dnsIpAddresses": {
      "description": "(Required) The IP addresses of the DNS servers for your directory.",
      "type": "StringList"
    },
    "hostname": {
        "description": "(Optional) The hostname you want to assign to the node.",
        "type": "String"
      }
  },
  "mainSteps": [
    {
      "action": "aws:domainJoin",
      "name": "domainJoin",
      "inputs": {
        "directoryId": "{{ directoryId }}",
        "directoryName": "{{ directoryName }}",
        "directoryOU":"{{ directoryOU }}",
        "dnsIpAddresses":"{{ dnsIpAddresses }}",
        "hostname":"{{ hostname }}"
      }
    }
  ]
}
```

------

#### スキーマ 1.2
<a name="domainJoin-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:domainJoin:
    properties:
      directoryId: "{{ directoryId }}"
      directoryName: "{{ directoryName }}"
      directoryOU: "{{ directoryOU }}"
      dnsIpAddresses: "{{ dnsIpAddresses }}"
```

------
#### [ JSON ]

```
{
   "runtimeConfig":{
      "aws:domainJoin":{
         "properties":{
            "directoryId":"{{ directoryId }}",
            "directoryName":"{{ directoryName }}",
            "directoryOU":"{{ directoryOU }}",
            "dnsIpAddresses":"{{ dnsIpAddresses }}"
         }
      }
   }
}
```

------

### プロパティ
<a name="domainJoin-properties"></a>

**directoryId**  
ディレクトリの ID。  
型: 文字列  
必須: はい  
例: "directoryId": "d-1234567890"

**directoryName**  
ドメインの名前。  
型: 文字列  
必須: はい  
例: "directoryName": "example.com"

**directoryOU**  
部門単位 (OU)｡  
型: 文字列  
必須: いいえ  
例: "directoryOU": "OU=test,DC=example,DC=com"

**dnsIpAddresses**  
DNS サーバーの IP アドレス。  
タイプ: StringList  
必須: はい  
例: "dnsIpAddresses": ["198.51.100.1","198.51.100.2"]

**hostname**  
ノードに割り当てるホスト名。指定しない場合、Windows Server インスタンスの名前は変更されませんが、Linux インスタンスはデフォルトの命名パターンを使用します。指定した場合、Windows Server インスタンスは正確に指定された値を使用しますが、Linux インスタンスの場合はプレフィックスとして機能します (`keepHostName` が「true」に設定されている場合を除く)。  
タイプ: 文字列  
必須: いいえ

**keepHostName**  
ドメインに参加したときに Linux インスタンスのホスト名を変更するかどうかを決定します。これは Linux のみのパラメータです。デフォルトでは (`hostname`、`hostnameNumAppendDigits` への入力なしで、`keepHostName` が「false」の場合)、Linux ホストの名前はパターン EC2AMAZ-XXXXXX に変更されます。「true」に設定すると、元のホスト名が保持され、`hostname` と `hostnameNumAppendDigits` への入力は無視されます。  
タイプ: ブール値  
必須: いいえ

**hostnameNumAppendDigits**  
ホスト名値の後に追加するランダムな数値の数を定義します。これは Linux 専用パラメータであり、`hostname` パラメータと一緒に使用されます。これは、`hostname` が指定されなかった場合に無視されます。  
タイプ: 文字列  
許可される値: 1～5  
必須: いいえ

### 例
<a name="domainJoin-examples"></a>

例については、AWS Directory Service 管理ガイドの「[Amazon EC2 インスタンスを AWS Managed Microsoft AD に結合する](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ec2-join-aws-domain.html)」を参照してください。

## `aws:downloadContent`
<a name="aws-downloadContent"></a>

(スキーマバージョン 2.0 以降) リモートの場所から SSM ドキュメントとスクリプトをダウンロードします。GitHub Enterprise リポジトリはサポートされていません。このプラグインは、Linux および Windows Server オペレーティングシステムでのみサポートされています｡

### 構文
<a name="downloadContent-syntax"></a>

#### スキーマ 2.2
<a name="downloadContent-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:downloadContent
parameters:
  sourceType:
    description: "(Required) The download source."
    type: String
  sourceInfo:
    description: "(Required) The information required to retrieve the content from
      the required source."
    type: StringMap
mainSteps:
- action: aws:downloadContent
  name: downloadContent
  inputs:
    sourceType: "{{ sourceType }}"
    sourceInfo: "{{ sourceInfo }}"
```

------
#### [ JSON ]

```
{
  "schemaVersion": "2.2",
  "description": "aws:downloadContent",
  "parameters": {
    "sourceType": {
    "description": "(Required) The download source.",
    "type": "String"
  },
  "sourceInfo": {
    "description": "(Required) The information required to retrieve the content from the required source.",
    "type": "StringMap"
    }
  },
  "mainSteps": [
    {
      "action": "aws:downloadContent",
      "name": "downloadContent",
      "inputs": {
        "sourceType":"{{ sourceType }}",
        "sourceInfo":"{{ sourceInfo }}"
      }
    }
  ]
}
```

------

### 入力
<a name="downloadContent-inputs"></a>

**sourceType**  
ソースをダウンロードします。Systems Manager は、スクリプトおよび SSM ドキュメントのダウンロード用に `GitHub`、`Git`、`HTTP`、`S3`、および `SSMDocument` のソースタイプをサポートしています。  
型: 文字列  
必須: はい

**sourceInfo**  
必須ソースからコンテンツを取得するために必要な情報。  
型: StringMap  
必須: はい  
 **sourceType が `GitHub,` の場合は以下を指定します。**  
+ 所有者: リポジトリ所有者。
+ リポジトリ: リポジトリの名前。
+ パス: ダウンロードするファイルまたはディレクトリのパス。
+ getOptions: マスター以外のブランチまたはリポジトリ内の特定のコミットからコンテンツを取得するための追加オプション。マスターブランチで最新のコミットを使用している場合は、getOptions を省略できます。2020 年 10 月 1 日以降にリポジトリが作成された場合、デフォルトのブランチの名前は master ではなく main になる場合があります。この場合、getOptions パラメータの値を指定する必要があります。

  このパラメータは次の形式を使用します｡
  + ブランチ: refs/heads/*branch\$1name*

    デフォルトは `master` です。

    デフォルト以外のブランチを指定するには、次の形式を使用します。

    ブランチ: refs/heads/*branch\$1name*
  + commitID:*commitID*

    デフォルト: `head`。

    最新ではないコミットにあるバージョンの SSM ドキュメントを使用するには、完全なコミット ID を指定します。例えば、次のようになります。

    ```
    "getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",
    ```
+ tokenInfo: GitHub アクセストークン情報を `{{ssm-secure:secure-string-token-name}}` 形式で保存する先の Systems Manager パラメータ (SecureString パラメータ)。
**注記**  
この `tokenInfo` フィールドは、SecureString パラメータをサポートする唯一の SSM ドキュメントプラグインフィールドです。SecureString パラメータは、他のフィールドや他の SSM ドキュメントプラグインではサポートされません。

```
{
    "owner":"TestUser",
    "repository":"GitHubTest",
    "path":"scripts/python/test-script",
    "getOptions":"branch:master",
    "tokenInfo":"{{ssm-secure:secure-string-token}}"
}
```
 **sourceType `Git` には、以下を指定する必要があります。**  
+ repository

  ダウンロードするファイルまたはディレクトリへの Git リポジトリの URL です。

  型: 文字列
さらに、以下のオプションのパラメータを指定できます。  
+ getOptions

  マスター以外のブランチ、またはリポジトリ内の特定のコミットからコンテンツを取得するための追加オプションです。マスターブランチで最新のコミットを使用している場合は、getOptions を省略できます。

  型: 文字列

  このパラメータは次の形式を使用します｡
  + ブランチ: refs/heads/*branch\$1name*

    デフォルト: `master`。

    `"branch"` は、SSM ドキュメントが 以外のブランチに保存されている場合にのみ必要です。`master`例:

    ```
    "getOptions": "branch:refs/heads/main"
    ```
  + commitID:*commitID*

    デフォルト: `head`。

    最新ではないコミットにあるバージョンの SSM ドキュメントを使用するには、完全なコミット ID を指定します。以下に例を示します。

    ```
    "getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",
    ```
+ privateSSHKey

  指定した `repository` への接続時に使用する SSH キーです。SSH キーの値に対する `SecureString` パラメータを参照するには、`{{ssm-secure:your-secure-string-parameter}}` の形式を使用できます。

  型: 文字列
+ skipHostKeyChecking

  指定した `repository` に接続するときの stricthOstKeyChecking オプションの値を決定します。デフォルト値は `false` です。

  タイプ: ブール値
+ username

  HTTP を使用して指定した `repository` への接続時に使用するユーザー名です。ユーザー名の値に対する `SecureString`パラメータを参照するには、`{{ssm-secure:your-secure-string-parameter}}` の形式を使用できます。

  型: 文字列
+ password

  HTTP を使用して指定した `repository` への接続時に使用するパスワードです。パスワードの値に対する `SecureString`パラメータを参照するには、`{{ssm-secure:your-secure-string-parameter}}` の形式を使用できます。

  型: 文字列
 **sourceType `HTTP` には、以下を指定する必要があります。**  
+ url

  ダウンロードするファイルまたはディレクトリの URL です。

  型: 文字列
さらに、以下のオプションのパラメータを指定できます。  
+ allowInsecureDownload

  Secure Socket Layer (SSL) または Transport Layer Security (TLS) で暗号化されていない接続経由でダウンロードを実行できるかどうかを決定します。デフォルト値は `false` です。暗号化を使用せずにダウンロードを実行することは推奨されません。このようなダウンロードの実行を選択する場合は、ユーザーが関連するすべてのリスクに対する責任を負います。セキュリティは、AWS とお客様の間の共有責任です。これは、責任共有モデルと説明されます。詳細については、[責任共有モデル](https://aws.amazon.com/compliance/shared-responsibility-model/)を参照してください。

  タイプ: ブール値
+ authMethod

  指定した `url` への接続時の認証にユーザー名とパスワードを使用するかどうかを決定します。`Basic` または `Digest` を指定する場合は、`username` および `password` パラメータの値を入力する必要があります。`Digest` メソッドを使用するには、SSM Agent バージョン 3.0.1181.0 以降がインスタンスにインストールされている必要があります。`Digest` メソッドは、MD5 および SHA256 暗号化をサポートします。

  型: 文字列

  有効な値: `None` \$1 `Basic` \$1 `Digest`
+ username

  指定した `url` に `Basic` 認証を使用して接続するときに使用するユーザー名です。ユーザー名の値に対する `SecureString`パラメータを参照するには、`{{ssm-secure:your-secure-string-parameter}}` の形式を使用できます。

  型: 文字列
+ password

  指定した `url` に `Basic` 認証を使用して接続するときに使用するパスワードです。パスワードの値に対する `SecureString`パラメータを参照するには、`{{ssm-secure:your-secure-string-parameter}}` の形式を使用できます。

  型: 文字列
 **sourceType `S3` では以下を指定します。**  
+ パス: Amazon S3 からダウンロードするファイルまたはディレクトリの URL。
S3 バケットからファイルをダウンロードすると、ダウンロードディレクトリに .etag ファイルが生成されます。

```
{
    "path": "https://s3.amazonaws.com/amzn-s3-demo-bucket/powershell/helloPowershell.ps1" 
}
```
 **sourceType `SSMDocument` では、以下の*いずれか*を指定します。**  
+ 名前: `name:version` の形式のドキュメントの名前とバージョン。バージョンは省略できます。

  ```
  {
      "name": "Example-RunPowerShellScript:3" 
  }
  ```
+ name: `arn:aws:ssm:region:account_id:document/document_name` の形式のドキュメントの ARN。

  ```
  {
     "name":"arn:aws:ssm:us-east-2:3344556677:document/MySharedDoc"
  }
  ```

**destinationPath**  
ファイルのダウンロード先としてオプションで指定する、インスタンス上のローカルパス。パスを指定しない場合、コンテンツは、コマンド ID に相対的なパスにダウンロードされます。  
型: 文字列  
必須: いいえ

## `aws:psModule`
<a name="aws-psModule"></a>

Amazon EC2 インスタンスに PowerShell モジュールをインストールします。このプラグインは、Windows Server オペレーティングシステムでのみ実行されます。

### 構文
<a name="psModule-syntax"></a>

#### スキーマ 2.2
<a name="psModule-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:psModule
parameters:
  source:
    description: "(Required) The URL or local path on the instance to the application
      .zip file."
    type: String
mainSteps:
- action: aws:psModule
  name: psModule
  inputs:
    source: "{{ source }}"
```

------
#### [ JSON ]

```
{
  "schemaVersion": "2.2",
  "description": "aws:psModule",
  "parameters": {
    "source": {
      "description": "(Required) The URL or local path on the instance to the application .zip file.",
      "type": "String"
    }
  },
  "mainSteps": [
    {
      "action": "aws:psModule",
      "name": "psModule",
      "inputs": {
        "source": "{{ source }}"
      }
    }
  ]
}
```

------

#### スキーマ 1.2
<a name="domainJoin-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:psModule:
    properties:
    - runCommand: "{{ commands }}"
      source: "{{ source }}"
      sourceHash: "{{ sourceHash }}"
      workingDirectory: "{{ workingDirectory }}"
      timeoutSeconds: "{{ executionTimeout }}"
```

------
#### [ JSON ]

```
{
   "runtimeConfig":{
      "aws:psModule":{
         "properties":[
            {
               "runCommand":"{{ commands }}",
               "source":"{{ source }}",
               "sourceHash":"{{ sourceHash }}",
               "workingDirectory":"{{ workingDirectory }}",
               "timeoutSeconds":"{{ executionTimeout }}"
            }
         ]
      }
   }
}
```

------

### プロパティ
<a name="psModule-properties"></a>

**runCommand**  
モジュールのインストール後に実行する PowerShell コマンド。  
タイプ: StringList  
必須: いいえ

**source**  
アプリケーション`.zip` ファイルへのインスタンスの URL またはローカルパス。  
型: 文字列  
必須: はい

**sourceHash**  
`.zip` ファイルの SHA256 ハッシュ。  
型: 文字列  
必須: いいえ

**timeoutSeconds**  
コマンドが失敗したとみなされるまでの経過時間 (秒)。  
型: 文字列  
必須: いいえ

**workingDirectory**  
インスタンスの作業ディレクトリへのパス。  
型: 文字列  
必須: いいえ

## `aws:refreshAssociation`
<a name="aws-refreshassociation"></a>

(スキーマ バージョン 2.0 以降) 必要に応じて関連付けを更新 (強制適用) します。このアクションは、選択された関連付けで定義されている内容またはターゲットにバインドされているすべての関連付けに基づいてシステム状態を変更します。このプラグインは、Linux および Microsoft Windows Server オペレーティングシステムでのみ実行されます。

### 構文
<a name="refreshassociation-syntax"></a>

#### スキーマ 2.2
<a name="refreshassociation-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:refreshAssociation
parameters:
  associationIds:
    description: "(Optional) List of association IDs. If empty, all associations bound
      to the specified target are applied."
    type: StringList
mainSteps:
- action: aws:refreshAssociation
  name: refreshAssociation
  inputs:
    associationIds:
    - "{{ associationIds }}"
```

------
#### [ JSON ]

```
{
  "schemaVersion": "2.2",
  "description": "aws:refreshAssociation",
  "parameters": {
    "associationIds": {
      "description": "(Optional) List of association IDs. If empty, all associations bound to the specified target are applied.",
      "type": "StringList"
    }
  },
  "mainSteps": [
    {
      "action": "aws:refreshAssociation",
      "name": "refreshAssociation",
      "inputs": {
        "associationIds": [
          "{{ associationIds }}"
        ]
      }
    }
  ]
}
```

------

### 入力
<a name="refreshassociation-properties"></a>

**associationIds**  
関連付け ID の一覧。空の場合、指定されたターゲットにバインドされたすべての関連付けが適用されます。  
タイプ: StringList  
必須: いいえ

## `aws:runDockerAction`
<a name="aws-rundockeraction"></a>

(スキーマバージョン 2.0 以降) コンテナで Docker アクションを実行します。このプラグインは、Linux および Microsoft Windows Server オペレーティングシステムでのみ実行されます。

### 構文
<a name="rundockeraction-syntax"></a>

#### スキーマ 2.2
<a name="rundockeraction-syntax-2.2"></a>

------
#### [ YAML ]

```
---
mainSteps:
- action: aws:runDockerAction
  name: RunDockerAction
  inputs:
    action: "{{ action }}"
    container: "{{ container }}"
    image: "{{ image }}"
    memory: "{{ memory }}"
    cpuShares: "{{ cpuShares }}"
    volume: "{{ volume }}"
    cmd: "{{ cmd }}"
    env: "{{ env }}"
    user: "{{ user }}"
    publish: "{{ publish }}"
    workingDirectory: "{{ workingDirectory }}"
    timeoutSeconds: "{{ timeoutSeconds }}"
```

------
#### [ JSON ]

```
{
   "mainSteps":[
      {
         "action":"aws:runDockerAction",
         "name":"RunDockerAction",
         "inputs":{
            "action":"{{ action }}",
            "container":"{{ container }}",
            "image":"{{ image }}",
            "memory":"{{ memory }}",
            "cpuShares":"{{ cpuShares }}",
            "volume":"{{ volume }}",
            "cmd":"{{ cmd }}",
            "env":"{{ env }}",
            "user":"{{ user }}",
            "publish":"{{ publish }}",
            "workingDirectory": "{{ workingDirectory }}",
            "timeoutSeconds": "{{ timeoutSeconds }}"
         }
      }
   ]
}
```

------

### 入力
<a name="rundockeraction-properties"></a>

**action**  
実行するアクションのタイプ。  
型: 文字列  
必須: はい

**コンテナ**  
Docker コンテナ ID｡  
型: 文字列  
必須: いいえ

**イメージ**  
Docker イメージ名。  
型: 文字列  
必須: いいえ

**cmd**  
コンテナコマンド｡  
型: 文字列  
必須: いいえ

**メモリ**  
コンテナメモリの制限｡  
型: 文字列  
必須: いいえ

**cpuShares**  
コンテナの CPU シェア (相対重み)。  
型: 文字列  
必須: いいえ

**ボリューム**  
コンテナボリュームのマウント。  
タイプ: StringList  
必須: いいえ

**env**  
コンテナ環境変数。  
型: 文字列  
必須: いいえ

**ユーザー**  
コンテナユーザー名｡  
型: 文字列  
必須: いいえ

**publish**  
コンテナ公開されたポート。  
型: 文字列  
必須: いいえ

**workingDirectory**  
マネージドノードの作業ディレクトリへのパス。  
タイプ: 文字列  
必須: いいえ

**timeoutSeconds**  
コマンドが失敗したとみなされるまでの経過時間 (秒)。  
型: 文字列  
必須: いいえ

## `aws:runDocument`
<a name="aws-rundocument"></a>

(スキーマバージョン 2.0 以降) Systems Manager またはローカル共有に格納された SSM ドキュメントを実行します。このプラグインと [`aws:downloadContent`](#aws-downloadContent) プラグインを使用して、リモートの場所から SSM ドキュメントをローカル共有にダウンロードして実行できます。このプラグインは、Linux および Windows Server オペレーティングシステムでのみサポートされています｡ このプラグインは、`AWS-UpdateSSMAgent` ドキュメントの実行または `aws:updateSsmAgent` を使用するドキュメントをサポートしていません。

### 構文
<a name="rundocument-syntax"></a>

#### スキーマ 2.2
<a name="aws-rundocument-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:runDocument
parameters:
  documentType:
    description: "(Required) The document type to run."
    type: String
    allowedValues:
    - LocalPath
    - SSMDocument
mainSteps:
- action: aws:runDocument
  name: runDocument
  inputs:
    documentType: "{{ documentType }}"
```

------
#### [ JSON ]

```
{
  "schemaVersion": "2.2",
  "description": "aws:runDocument",
  "parameters": {
    "documentType": {
      "description": "(Required) The document type to run.",
      "type": "String",
      "allowedValues": [
        "LocalPath",
        "SSMDocument"
      ]
    }
  },
  "mainSteps": [
    {
      "action": "aws:runDocument",
      "name": "runDocument",
      "inputs": {
        "documentType": "{{ documentType }}"
      }
    }
  ]
}
```

------

### 入力
<a name="rundocument-properties"></a>

**documentType**  
実行するドキュメントタイプ。ローカルドキュメント (`LocalPath`) または Systems Manager (`SSMDocument`) に保存されているドキュメントを実行できます。  
型: 文字列  
必須: はい

**documentPath**  
ドキュメントへのパス。`documentType` が `LocalPath` の場合は、ローカル共有上のドキュメントへのパスを指定します。`documentType` が `SSMDocument` の場合は、ドキュメントの名前を指定します。  
型: 文字列  
必須: いいえ

**documentParameters**  
ドキュメントのパラメータ。  
型: StringMap  
必須: いいえ

## `aws:runPowerShellScript`
<a name="aws-runPowerShellScript"></a>

PowerShell スクリプトを実行するか、またはスクリプトを実行するパスを指定します。このプラグインは、Microsoft Windows Server および Linux オペレーティングシステムでのみ実行されます。

### 構文
<a name="runPowerShellScript-syntax"></a>

#### スキーマ 2.2
<a name="runPowerShellScript-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:runPowerShellScript
parameters:
  commands:
    type: String
    description: "(Required) The commands to run or the path to an existing script
      on the instance."
    default: Write-Host "Hello World"
mainSteps:
- action: aws:runPowerShellScript
  name: runPowerShellScript
  inputs:
    timeoutSeconds: '60'
    runCommand:
    - "{{ commands }}"
```

------
#### [ JSON ]

```
{
  "schemaVersion": "2.2",
  "description": "aws:runPowerShellScript",
  "parameters": {
    "commands": {
      "type": "String",
      "description": "(Required) The commands to run or the path to an existing script on the instance.",
      "default": "Write-Host \"Hello World\""
    }
  },
  "mainSteps": [
    {
      "action": "aws:runPowerShellScript",
      "name": "runPowerShellScript",
      "inputs": {
        "timeoutSeconds": "60",
        "runCommand": [
          "{{ commands }}"
        ]
      }
    }
  ]
}
```

------

#### スキーマ 1.2
<a name="runPowerShellScript-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:runPowerShellScript:
    properties:
    - id: 0.aws:runPowerShellScript
      runCommand: "{{ commands }}"
      workingDirectory: "{{ workingDirectory }}"
      timeoutSeconds: "{{ executionTimeout }}"
```

------
#### [ JSON ]

```
{
   "runtimeConfig":{
      "aws:runPowerShellScript":{
         "properties":[
            {
               "id":"0.aws:runPowerShellScript",
               "runCommand":"{{ commands }}",
               "workingDirectory":"{{ workingDirectory }}",
               "timeoutSeconds":"{{ executionTimeout }}"
            }
         ]
      }
   }
}
```

------

### プロパティ
<a name="runPowerShellScript-properties"></a>

**runCommand**  
実行するコマンド、またはインスタンス上の既存のスクリプトへのパスを指定します。  
タイプ: StringList  
必須: はい

**timeoutSeconds**  
コマンドが失敗したとみなされるまでの経過時間 (秒)。タイムアウトに達すると、Systems Manager はコマンドの実行を停止します。  
型: 文字列  
必須: いいえ

**workingDirectory**  
インスタンスの作業ディレクトリへのパス。  
型: 文字列  
必須: いいえ

## `aws:runShellScript`
<a name="aws-runShellScript"></a>

Linux シェルスクリプトを実行するか、またはスクリプトを実行するパスを指定します。このプラグインは、Linux オペレーティングシステム上のみで実行されます。

### 構文
<a name="runShellScript-syntax"></a>

#### スキーマ 2.2
<a name="runShellScript-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:runShellScript
parameters:
  commands:
    type: String
    description: "(Required) The commands to run or the path to an existing script
      on the instance."
    default: echo Hello World
mainSteps:
- action: aws:runShellScript
  name: runShellScript
  inputs:
    timeoutSeconds: '60'
    runCommand:
    - "{{ commands }}"
```

------
#### [ JSON ]

```
{
  "schemaVersion": "2.2",
  "description": "aws:runShellScript",
  "parameters": {
    "commands": {
      "type": "String",
      "description": "(Required) The commands to run or the path to an existing script on the instance.",
      "default": "echo Hello World"
    }
  },
  "mainSteps": [
    {
      "action": "aws:runShellScript",
      "name": "runShellScript",
      "inputs": {
        "timeoutSeconds": "60",
        "runCommand": [
          "{{ commands }}"
        ]
      }
    }
  ]
}
```

------

#### スキーマ 1.2
<a name="runShellScript-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:runShellScript:
    properties:
    - runCommand: "{{ commands }}"
      workingDirectory: "{{ workingDirectory }}"
      timeoutSeconds: "{{ executionTimeout }}"
```

------
#### [ JSON ]

```
{
   "runtimeConfig":{
      "aws:runShellScript":{
         "properties":[
            {
               "runCommand":"{{ commands }}",
               "workingDirectory":"{{ workingDirectory }}",
               "timeoutSeconds":"{{ executionTimeout }}"
            }
         ]
      }
   }
}
```

------

### プロパティ
<a name="runShellScript-properties"></a>

**runCommand**  
実行するコマンド、またはインスタンス上の既存のスクリプトへのパスを指定します。  
タイプ: StringList  
必須: はい

**timeoutSeconds**  
コマンドが失敗したとみなされるまでの経過時間 (秒)。タイムアウトに達すると、Systems Manager はコマンドの実行を停止します。  
型: 文字列  
必須: いいえ

**workingDirectory**  
インスタンスの作業ディレクトリへのパス。  
型: 文字列  
必須: いいえ

## `aws:softwareInventory`
<a name="aws-softwareinventory"></a>

(スキーマバージョン 2.0 以降) マネージドインスタンスのアプリケーション、ファイル、および設定に関するメタデータを収集します。このプラグインは、Linux および Microsoft Windows Server オペレーティングシステムでのみ実行されます。インベントリ収集を設定する際は、まず AWS Systems Manager State Manager の関連付けを作成します。関連付けが実行されると、Systems Manager はインベントリデータを収集します。最初に関連付けを作成せずに、`aws:softwareInventory` プラグインを呼び出そうとすると、システムは次のエラーを返します。

```
The aws:softwareInventory plugin can only be invoked via ssm-associate.
```

インスタンスには、一度に 1 つのインベントリのみ関連付けることができます。インスタンスに 2 つ以上関連付けを設定した場合、そのインベントリの関連付けは実行されず、インベントリデータは収集されません。インベントリの収集の詳細については、「[AWS Systems Manager インベントリ](systems-manager-inventory.md)」を参照してください。

### 構文
<a name="softwareinventory-syntax"></a>

#### スキーマ 2.2
<a name="softwareinventory-syntax-2.2"></a>

------
#### [ YAML ]

```
---
mainSteps:
- action: aws:softwareInventory
  name: collectSoftwareInventoryItems
  inputs:
    applications: "{{ applications }}"
    awsComponents: "{{ awsComponents }}"
    networkConfig: "{{ networkConfig }}"
    files: "{{ files }}"
    services: "{{ services }}"
    windowsRoles: "{{ windowsRoles }}"
    windowsRegistry: "{{ windowsRegistry}}"
    windowsUpdates: "{{ windowsUpdates }}"
    instanceDetailedInformation: "{{ instanceDetailedInformation }}"
    customInventory: "{{ customInventory }}"
```

------
#### [ JSON ]

```
{
   "mainSteps":[
      {
         "action":"aws:softwareInventory",
         "name":"collectSoftwareInventoryItems",
         "inputs":{
            "applications":"{{ applications }}",
            "awsComponents":"{{ awsComponents }}",
            "networkConfig":"{{ networkConfig }}",
            "files":"{{ files }}",
            "services":"{{ services }}",
            "windowsRoles":"{{ windowsRoles }}",
            "windowsRegistry":"{{ windowsRegistry}}",
            "windowsUpdates":"{{ windowsUpdates }}",
            "instanceDetailedInformation":"{{ instanceDetailedInformation }}",
            "customInventory":"{{ customInventory }}"
         }
      }
   ]
}
```

------

### 入力
<a name="softwareinventory-properties"></a>

**applications**  
(オプション) インストールされているアプリケーションのメタデータを収集します。  
型: 文字列  
必須: いいえ

**awsComponents**  
(オプション) amazon-ssm-agent などの AWS コンポーネントのメタデータを収集します。  
型: 文字列  
必須: いいえ

**ファイル**  
(オプション: SSM Agent バージョン 2.2.64.0 以降が必要) ファイル名、ファイル作成時間、ファイルの最終変更時間および最新アクセス時間、およびファイルサイズを含むファイルのメタデータを収集します (これらはほんの数例です)。ファイルインベントリの収集の詳細については、「[ファイルと Windows レジストリインベントリで作業する](inventory-file-and-registry.md)」を参照してください。  
型: 文字列  
必須: いいえ

**networkConfig**  
(オプション) ネットワーク設定のメタデータを収集します。  
型: 文字列  
必須: いいえ

**billingInfo**  
(オプション) AMI の請求コードに関連付けられたプラットフォーム情報のメタデータを収集します。  
タイプ: 文字列  
必須: いいえ

**windowsUpdates**  
(オプション) すべての Windows アップデートのメタデータを収集します。  
型: 文字列  
必須: いいえ

**InstanceDetailedInformation**  
(オプション) CPU モデル、速度、コア数を含む、デフォルトのインベントリプラグイン (`aws:instanceInformation`) によって提供されるよりも多くのインスタンス情報を収集します (これらはほんの数例です)。  
型: 文字列  
必須: いいえ

**サービス**  
(オプション: Windows OS のみ、SSM Agent バージョン 2.2.64.0 以降が必要) サービス設定のメタデータを収集します。  
タイプ: 文字列  
必須: いいえ

**windowsRegistry**  
(オプション: Windows OS のみ、SSM Agent バージョン 2.2.64.0 以降が必要) Windows レジストリキーと値を収集します。キーパスを選択して、すべてのキーと値を再帰的に収集できます。指定するパスで指定するレジストリキーおよびその値を収集することもできます。インベントリは、キーパス、名前、タイプ、値を収集します。Windows レジストリインベントリの収集についての詳細は、「[ファイルと Windows レジストリインベントリで作業する](inventory-file-and-registry.md)」を参照してください。  
型: 文字列  
必須: いいえ

**windowsRoles**  
(オプション: Windows OS のみ、SSM Agent バージョン 2.2.64.0 以降が必要) Microsoft Windows ロール設定のメタデータを収集します。  
タイプ: 文字列  
必須: いいえ

**customInventory**  
(オプション) カスタムインベントリのデータを収集します。カスタムインベントリの詳細については、「[カスタムインベントリの操作](inventory-custom.md)」を参照してください。  
型: 文字列  
必須: いいえ

**customInventoryDirectory**  
(オプション) 指定したディレクトリからカスタムインベントリデータを収集します。カスタムインベントリの詳細については、「[カスタムインベントリの操作](inventory-custom.md)」を参照してください。  
型: 文字列  
必須: いいえ

## `aws:updateAgent`
<a name="aws-updateagent"></a>

EC2Config サービスを最新バージョンに更新するか、または古いバージョンを指定します｡ このプラグインは、Microsoft Windows Server オペレーティングシステムでのみ実行されます。EC2Config サービスの詳細については、「Amazon EC2 ユーザーガイド」の「[EC2Config サービスを使用した Windows インスタンスの設定 (レガシー)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2config-service.html)」を参照してください。

### 構文
<a name="updateagent-syntax"></a>

#### スキーマ 2.2
<a name="updateagent-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:updateAgent
mainSteps:
- action: aws:updateAgent
  name: updateAgent
  inputs:
    agentName: Ec2Config
    source: https://s3.{Region}.amazonaws.com/aws-ssm-{Region}/manifest.json
```

------
#### [ JSON ]

```
{
  "schemaVersion": "2.2",
  "description": "aws:updateAgent",
  "mainSteps": [
    {
      "action": "aws:updateAgent",
      "name": "updateAgent",
      "inputs": {
        "agentName": "Ec2Config",
        "source": "https://s3.{Region}.amazonaws.com/aws-ssm-{Region}/manifest.json"
      }
    }
  ]
}
```

------

#### スキーマ 1.2
<a name="updateagent-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:updateAgent:
    properties:
      agentName: Ec2Config
      source: https://s3.{Region}.amazonaws.com/aws-ssm-{Region}/manifest.json
      allowDowngrade: "{{ allowDowngrade }}"
      targetVersion: "{{ version }}"
```

------
#### [ JSON ]

```
{
   "runtimeConfig":{
      "aws:updateAgent":{
         "properties":{
            "agentName":"Ec2Config",
            "source":"https://s3.{Region}.amazonaws.com/aws-ssm-{Region}/manifest.json",
            "allowDowngrade":"{{ allowDowngrade }}",
            "targetVersion":"{{ version }}"
         }
      }
   }
}
```

------

### プロパティ
<a name="updateagent-properties"></a>

**agentName**  
EC2Config。これは、EC2Config サービスを実行するエージェントの名前です。  
型: 文字列  
必須: はい

**allowDowngrade**  
EC2Config サービスを以前のバージョンにダウングレードできるようにします。false に設定すると、サービスは新しいバージョンにのみアップグレードできます (デフォルト)。true に設定すると、以前のバージョンを指定します。  
タイプ: ブール値  
必須: いいえ

**source**  
Systems Manager がインストールする EC2Config のバージョンをコピーする場所。この場所は変更できません。  
型: 文字列  
必須: はい

**targetVersion**  
インストールする EC2Config サービスの特定のバージョン。指定しない場合、サービスは最新バージョンに更新されます。  
型: 文字列  
必須: いいえ

## `aws:updateSsmAgent`
<a name="aws-updatessmagent"></a>

SSM Agent を最新バージョンに更新するか、古いバージョンを指定します｡ このプラグインは、Linux および Windows Server オペレーティングシステムでのみ実行されます。詳細については、「[「SSM Agent」 の使用](ssm-agent.md)」を参照してください。

### 構文
<a name="updateSSMagent-syntax"></a>

#### スキーマ 2.2
<a name="updateaSSMgent-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:updateSsmAgent
parameters:
  allowDowngrade:
    default: 'false'
    description: "(Optional) Allow the Amazon SSM Agent service to be downgraded to
      an earlier version. If set to false, the service can be upgraded to newer versions
      only (default). If set to true, specify the earlier version."
    type: String
    allowedValues:
    - 'true'
    - 'false'
mainSteps:
- action: aws:updateSsmAgent
  name: updateSSMAgent
  inputs:
    agentName: amazon-ssm-agent
    source: https://s3.{Region}.amazonaws.com/amazon-ssm-{Region}/ssm-agent-manifest.json
    allowDowngrade: "{{ allowDowngrade }}"
```

------
#### [ JSON ]

```
{
  "schemaVersion": "2.2",
  "description": "aws:updateSsmAgent",
  "parameters": {
    "allowDowngrade": {
      "default": "false",
      "description": "(Required) Allow the Amazon SSM Agent service to be downgraded to an earlier version. If set to false, the service can be upgraded to newer versions only (default). If set to true, specify the earlier version.",
      "type": "String",
      "allowedValues": [
        "true",
        "false"
      ]
    }
  },
  "mainSteps": [
    {
      "action": "aws:updateSsmAgent",
      "name": "awsupdateSsmAgent",
      "inputs": {
        "agentName": "amazon-ssm-agent",
        "source": "https://s3.{Region}.amazonaws.com/amazon-ssm-{Region}/ssm-agent-manifest.json",
        "allowDowngrade": "{{ allowDowngrade }}"
      }
    }
  ]
}
```

------

#### スキーマ 1.2
<a name="updateaSSMgent-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:updateSsmAgent:
    properties:
    - agentName: amazon-ssm-agent
      source: https://s3.{Region}.amazonaws.com/aws-ssm-{Region}/manifest.json
      allowDowngrade: "{{ allowDowngrade }}"
```

------
#### [ JSON ]

```
{
   "runtimeConfig":{
      "aws:updateSsmAgent":{
         "properties":[
            {
               "agentName":"amazon-ssm-agent",
               "source":"https://s3.{Region}.amazonaws.com/aws-ssm-{Region}/manifest.json",
               "allowDowngrade":"{{ allowDowngrade }}"
            }
         ]
      }
   }
}
```

------

### プロパティ
<a name="updateSSMagent-properties"></a>

**agentName**  
amazon-ssm-agent｡ これは、リクエストを処理してインスタンス上でコマンドを実行する Systems Manager Agent の名前です。  
型: 文字列  
必須: はい

**allowDowngrade**  
SSM Agent を以前のバージョンにダウングレードできるようにします。false に設定すると、エージェントは新しいバージョンにのみアップグレードできます (デフォルト)。true に設定すると、以前のバージョンを指定します。  
タイプ: ブール値  
必須: はい

**ソース**  
Systems Manager がインストールする SSM Agent のバージョンをコピーする場所。この場所は変更できません。  
型: 文字列  
必須: はい

**targetVersion**  
インストールする SSM Agent の特定のバージョン。指定しない場合、エージェントは最新バージョンに更新されます。  
型: 文字列  
必須: いいえ

# SSM ドキュメントコンテンツを作成する
<a name="documents-creating-content"></a>

AWS Systems Manager のパブリックドキュメントが AWS リソースで実行したいすべてのアクションを実行しない場合は、独自の SSM ドキュメントを作成できます。コンソールを使用して SSM ドキュメントのクローンを作成することもできます。ドキュメントのクローンにより、既存のドキュメントから変更可能な新しいドキュメントにコンテンツをコピーします。作成またはクローンするドキュメントは、その内容が 64KB を超えることはできません。このクォータには、ランタイム時に入力パラメータで指定される内容も含みます。新しい `Command` または `Policy` ドキュメントを作成する場合は、ドキュメントの編集、バージョンの自動管理、順序付けなどの最新の機能を利用できるように、スキーマバージョン 2.2 以降を使用することをお勧めします。

## SSM ドキュメントコンテンツを書き込む
<a name="writing-ssm-doc-content"></a>

独自の SSM ドキュメントコンテンツを作成するには、SSM ドキュメントで使用できるさまざまなスキーマ、機能、プラグイン、および構文を理解することが重要です。次のリソースに精通することをお勧めします。
+  [独自の AWS Systems Manager ドキュメントを作成する](https://aws.amazon.com/blogs//mt/writing-your-own-aws-systems-manager-documents/) 
+  [データ要素とパラメータ](documents-syntax-data-elements-parameters.md) 
+  [スキーマ、機能、および例](documents-schemas-features.md) 
+  [コマンドドキュメントプラグインリファレンス](documents-command-ssm-plugin-reference.md) 
+  [Systems Manager Automation アクションのリファレンス](automation-actions.md) 
+  [オートメーションシステム変数](automation-variables.md) 
+  [その他のランブックの例](automation-document-examples.md) 
+  AWS Toolkit for Visual Studio Code を使用して、[Systems Manager オートメーションランブックを操作する](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/systems-manager-automation-docs.html) 
+  [オートメーションランブックのビジュアルデザインエクスペリエンス](automation-visual-designer.md) 
+  [ランブックでのスクリプトの使用](automation-document-script-considerations.md) 

AWS の事前に定義された SSM ドキュメントでは、必要なアクションの一部を実行することがあります。これらのドキュメントは、ドキュメントタイプに応じて、カスタム SSM ドキュメント内で、`aws:runDocument`、`aws:runCommand`、または `aws:executeAutomation` プラグインを使用して呼び出すことができます。また、これらのドキュメントの一部をカスタム SSM ドキュメントにコピーし、要件に合わせてコンテンツを編集することもできます。

**ヒント**  
SSM ドキュメントコンテンツを作成する場合、テスト中にコンテンツを変更し、SSM ドキュメントを数回更新することがあります。次のコマンドでは、最新のコンテンツで SSM ドキュメントを更新し、ドキュメントのデフォルトバージョンをドキュメントの最新バージョンに更新します。  
Linux および Windows のコマンドでは、`jq` コマンドラインツールを使用して JSON レスポンスデータをフィルタリングします。

```
latestDocVersion=$(aws ssm update-document \
    --content file://path/to/file/documentContent.json \
    --name "ExampleDocument" \
    --document-format JSON \
    --document-version '$LATEST' \
    | jq -r '.DocumentDescription.LatestVersion')

aws ssm update-document-default-version \
    --name "ExampleDocument" \
    --document-version $latestDocVersion
```

```
latestDocVersion=$(aws ssm update-document ^
    --content file://C:\path\to\file\documentContent.json ^
    --name "ExampleDocument" ^
    --document-format JSON ^
    --document-version "$LATEST" ^
    | jq -r '.DocumentDescription.LatestVersion')

aws ssm update-document-default-version ^
    --name "ExampleDocument" ^
    --document-version $latestDocVersion
```

```
$content = Get-Content -Path "C:\path\to\file\documentContent.json" | Out-String
$latestDocVersion = Update-SSMDocument `
    -Content $content `
    -Name "ExampleDocument" `
    -DocumentFormat "JSON" `
    -DocumentVersion '$LATEST' `
    | Select-Object -ExpandProperty LatestVersion

Update-SSMDocumentDefaultVersion `
    -Name "ExampleDocument" `
    -DocumentVersion $latestDocVersion
```

### SSM ドキュメントのセキュリティベストプラクティス
<a name="ssm-document-security-practices"></a>

SSM ドキュメントを作成するときは、以下のセキュリティベストプラクティスに従うことで、コマンドインジェクションを防ぎ、安全なパラメータ処理を確保できます。
+ コマンドまたはスクリプトに使用する文字列パラメータには、環境変数補間を使用します。文字列パラメータに、値が `ENV_VAR` である `interpolationType` プロパティを追加します。

  ```
  {
      "command": {
          "type": "String",
          "description": "Command to execute",
          "interpolationType": "ENV_VAR"
      }
  }
  ```

  補間により配信される値で二重引用符を受け入れないように指定することで、SSM ドキュメントのセキュリティをさらに高めることができます。

  ```
  {
      "command": {
          "type": "String",
          "description": "Command to execute",
          "interpolationType": "ENV_VAR",
              "allowedPattern": "^[^"]*$"
      }
  }
  ```
+ インタプリタ型言語 (Python、Ruby、Node.js など) を使用するときは、適切な環境変数構文を使用してパラメータを参照します。

  ```
  # Python example
  import os
  command = os.environ['SSM_Message']
  ```
+ 古い SSM Agent バージョン (バージョン 3.3.2746.0 以前) との下位互換性を保つため、環境変数のフォールバックロジックを含めます。

  ```
  if [ -z "${SSM_command+x}" ]; then
      export SSM_command="{{command}}"
  fi
  ```
+ 環境変数補間を `allowedPattern` と組み合わせて追加の入力検証を行います。次の例では、`allowedPattern` 値の `^[^"]*$` が、文字列値で二重引用符が使用されることを特に防いでいます。

  ```
  {
      "command": {
          "type": "String",
          "interpolationType": "ENV_VAR",
          "allowedPattern": "^[a-zA-Z0-9_-]+$"
      }
  }
  ```
+ SSM ドキュメントを実装するときは、事前に次のセキュリティ上の考慮事項を確認します。
  + ユーザー入力を受け入れるすべての文字列パラメータは、環境変数補間を必要に応じて使用する。
  + 入力検証は、可能な限り `allowedPattern` を使用して実装する。
  + ドキュメントに、パラメータを処理するための適切なエラー処理が含まれている。
  + SSM Agent の古いバージョンを使用する環境向けに下位互換性が保たれている。

Systems Manager がアクセスする AWS サービス所有リソースについて、およびデータ境界ポリシーの設定方法については、「[AWS Systems Manager におけるデータ境界](data-perimeters.md)」を参照してください。

## SSM ドキュメントの複製
<a name="cloning-ssm-document"></a>

Systems Manager のドキュメントコンソールを使用して、AWS Systems Manager のドキュメントのクロ―ンを作成し、SSM ドキュメントを作成できます。SSM ドキュメントの複製により、既存のドキュメントから変更可能な新しいドキュメントにコンテンツをコピーします。64KB を超えるドキュメントをクローンすることはできません。

**SSM ドキュメントを複製するには**

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

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

1. 検索ボックスに、複製するドキュメントの名前を入力します。

1. 複製するドキュメントの名前を選択し、「**アクション**」ドロップダウンで「**ドキュメントの複製**」を選択します。

1. 必要に応じてドキュメントを変更し、[**ドキュメントの作成**] を選択してドキュメントを保存します。

SSM ドキュメントコンテンツを作成したら、次のいずれかの方法を使用して、コンテンツを使って SSM ドキュメントを作成できます。

**Topics**
+ [SSM ドキュメントコンテンツを書き込む](#writing-ssm-doc-content)
+ [SSM ドキュメントの複製](#cloning-ssm-document)
+ [複合ドキュメントの作成](#documents-creating-composite)

## 複合ドキュメントの作成
<a name="documents-creating-composite"></a>

*複合* AWS Systems Manager (SSM) ドキュメントは、1 つまたは複数のセカンダリ SSM ドキュメントを実行して一連のアクションを実行するカスタムドキュメントです。複合ドキュメントは、ブートストラップソフトウェアやドメイン結合インスタンスなどの一般的なタスク用の標準 SSM ドキュメントセットを作成できるようにすることで、*Infrastructure as Code (コードとしてのインフラストラクチャ)*を推進します。これらのドキュメントを同じ AWS リージョン の AWS アカウント 間で共有して、SSM ドキュメントのメンテナンスを減らし、整合性を確保することができます。

たとえば、次のアクションを実行する複合ドキュメントを作成できます｡

1. 許可リストのすべてのパッチをインストールする。

1. ウイルス対策ソフトウェアをインストールする｡

1. GitHub からスクリプトをダウンロードして実行する。

この例では、カスタム SSM ドキュメントに以下のアクションを実行するためのプラグインが含まれています。

1. `AWS-RunPatchBaseline` ドキュメントを実行する `aws:runDocument` プラグインは、すべての許可されたリストのパッチをインストールします。

1. `aws:runDocument` ドキュメントを実行する `AWS-InstallApplication` プラグインは、ウイルス対策ソフトウェアをインストールします。

1. `aws:downloadContent` プラグインは、GitHub からスクリプトをダウンロードして実行します。

複合ドキュメントとセカンダリドキュメントは、Systems Manager、GitHub (パブリックおよびプライベートリポジトリ)、または Amazon S3 に保存できます。複合ドキュメントおよびセカンダリドキュメントは JSON あるいは YAML で作成できます。

**注記**  
複合ドキュメントは最大 3 階層のドキュメントまでしか実行できません。つまり、複合ドキュメントは子ドキュメントを呼び出すことができます。その子ドキュメントは最後の 1 つのドキュメントを呼び出すことができます。

複合ドキュメントを作成するには、カスタム SSM ドキュメントで [`aws:runDocument`](documents-command-ssm-plugin-reference.md#aws-rundocument) プラグインを開き、必要な入力を指定します。以下に、次のアクションを実行する複合ドキュメントの例を示します｡

1. [`aws:downloadContent`](documents-command-ssm-plugin-reference.md#aws-downloadContent) プラグインを実行して、GitHub パブリックリポジトリからブートストラップというローカルディレクトリに SSM ドキュメントをダウンロードします。SSM ドキュメントは StateManagerBootstrap.yml (YAML ドキュメント) と呼ばれます。

1. `aws:runDocument` プラグインを実行して StateManagerBootstrap.yml ドキュメントを実行します。パラメータは指定されません。

1. `aws:runDocument` プラグインを実行して `AWS-ConfigureDocker pre-defined` SSM ドキュメントを実行します。指定されたパラメータが、インスタンスに Docker をインストールします。

```
{
  "schemaVersion": "2.2",
  "description": "My composite document for bootstrapping software and installing Docker.",
  "parameters": {
  },
  "mainSteps": [
    {
      "action": "aws:downloadContent",
      "name": "downloadContent",
      "inputs": {
        "sourceType": "GitHub",
        "sourceInfo": "{\"owner\":\"TestUser1\",\"repository\":\"TestPublic\", \"path\":\"documents/bootstrap/StateManagerBootstrap.yml\"}",
        "destinationPath": "bootstrap"
      }
    },
    {
      "action": "aws:runDocument",
      "name": "runDocument",
      "inputs": {
        "documentType": "LocalPath",
        "documentPath": "bootstrap",
        "documentParameters": "{}"
      }
    },
    {
      "action": "aws:runDocument",
      "name": "configureDocker",
      "inputs": {
        "documentType": "SSMDocument",
        "documentPath": "AWS-ConfigureDocker",
        "documentParameters": "{\"action\":\"Install\"}"
      }
    }
  ]
}
```

**詳細情報**  
+ Run Command を使用してスクリプトを呼び出すときに使用するサーバーとインスタンスの再起動については、「[コマンド実行時の再起動の処理](send-commands-reboot.md)」を参照してください。
+ カスタム SSM ドキュメントに追加できるプラグインの詳細については、「[コマンドドキュメントプラグインリファレンス](documents-command-ssm-plugin-reference.md)」を参照してください。
+ 複合ドキュメントを作成せずにリモートロケーションからドキュメントを実行するだけの場合は、「[遠隔で ドキュメントを実行する](documents-running-remote-github-s3.md)」を参照してください。

# ドキュメントでの作業
<a name="documents-using"></a>

このセクションには、SSM ドキュメントの使用方法と操作方法に関する情報が含まれています。

**Topics**
+ [SSM ドキュメントのバージョンを比較する](comparing-versions.md)
+ [SSM ドキュメントを作成する](create-ssm-console.md)
+ [カスタム SSM ドキュメントの削除](deleting-documents.md)
+ [遠隔で ドキュメントを実行する](documents-running-remote-github-s3.md)
+ [SSM ドキュメントの共有](documents-ssm-sharing.md)
+ [SSM ドキュメントを検索する](ssm-documents-searching.md)

# SSM ドキュメントのバージョンを比較する
<a name="comparing-versions"></a>

Systems Manager ドキュメントコンソールで、AWS Systems Manager (SSM) ドキュメントのバージョン間のコンテンツの違いを比較できます。SSM ドキュメントのバージョンを比較するときは、バージョンのコンテンツの違いが強調表示されます。

**SSM ドキュメントのコンテンツを比較する (コンソール)**

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

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

1. ドキュメントのリストから、コンテンツを比較するドキュメントを選択します。

1. [**Content**] (コンテンツ) タブで [**Compare versions**] (バージョンを比較) をクリックして、コンテンツを比較するドキュメントのバージョンを選択します。

# SSM ドキュメントを作成する
<a name="create-ssm-console"></a>

カスタム SSM ドキュメントのコンテンツを作成した後、[SSM ドキュメントコンテンツを書き込む](documents-creating-content.md#writing-ssm-doc-content) の説明に従って Systems Manager コンソールを使用し、コンテンツを使って SSM ドキュメントを作成できます。

**SSM ドキュメントを作成するには**

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

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

1. [**Create command or session (コマンドまたはセッションの作成)**] を選択します。

1. ドキュメントの説明的な名前を入力します。

1. (オプション) [**Target type (ターゲットタイプ)**] で、ドキュメントを実行できるリソースの種類を指定します。

1. [**ドキュメントタイプ**] リストで、作成するドキュメントのタイプを選択します。

1. [**Content (コンテンツ)**] フィールドの括弧を削除した後に、先に作成したドキュメントコンテンツを貼り付けます。

1. (オプション) [**Document tags (ドキュメントタグ)**] セクションで、1 つ以上のタグキーの名前と値のペアをドキュメントに適用します。

   タグは、リソースに割り当てるオプションのメタデータです。タグを使用すると、目的、所有者、環境などのさまざまな方法でリソースを分類できます。たとえば、ドキュメントにタグを付けて、ドキュメントが実行するタスクの種類、ターゲットとするオペレーティングシステムの種類、およびドキュメントが動作する環境を指定できます。この場合、以下のキーの名前と値のペアを指定します。
   + `Key=TaskType,Value=MyConfigurationUpdate`
   + `Key=OS,Value=AMAZON_LINUX_2`
   + `Key=Environment,Value=Production`

1. [**ドキュメントの作成**] を選択してドキュメントを保存します。

# カスタム SSM ドキュメントの削除
<a name="deleting-documents"></a>

カスタム SSM ドキュメントを使用する必要がなくなった場合は、AWS Systems Manager コンソールを使用して削除できます。

**SSM ドキュメントを削除するには**

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

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

1. 削除したいドキュメントを選択します。

1. [**削除**] を選択します。ドキュメントを削除するように求められたら、[**削除**] を選択します。

コマンドラインツールまたは SDK を使用して SSM ドキュメントを削除する例については、「[AWS SDK または CLI で `DeleteDocument` を使用する](example_ssm_DeleteDocument_section.md)」を参照してください。

# 遠隔で ドキュメントを実行する
<a name="documents-running-remote-github-s3"></a>

`AWS-RunDocument` 事前定義 SSM ドキュメントを使用すると、リモートの場所から AWS Systems Manager (SSM) ドキュメントを実行できます。このドキュメントでは、次の場所に保存されている SSM ドキュメントの実行がサポートされています。
+ パブリックおよびプライベート GitHub リポジトリ (GitHub Enterprise はサポートされていません)
+ Amazon S3 バケット
+ Systems Manager

AWS Systems Manager のツールである State Manager または Automation を使用してリモートドキュメントを実行することもできますが、次の手順では、Systems Manager コンソールで AWS Systems Manager Run Command を使用してリモート SSM ドキュメントを実行する方法のみを説明します。

**注記**  
`AWS-RunDocument` は、コマンドタイプの SSM ドキュメントのみを実行するために使用でき、Automation ランブックなど他のタイプは実行できません。`AWS-RunDocument` は、`aws:downloadContent` プラグインを使用します。`aws:downloadContent` の詳細については、「[`aws:downloadContent`](documents-command-ssm-plugin-reference.md#aws-downloadContent)」を参照してください。

**警告**  
`AWS-RunDocument` は、さまざまなソース (SSM ドキュメント、GitHub、S3、URL) からドキュメントコンテンツを実行できます。リモートドキュメントを実行する場合、評価される IAM アクセス許可は、リモートドキュメント `ssm:GetDocument` と `AWS-RunDocument` の `ssm:SendCommand` です。特定の SSM ドキュメントへのアクセスを拒否する IAM ポリシーがある場合、`AWS-RunDocument` アクセス許可を持つユーザーは、ドキュメントコンテンツをパラメータとして渡すことで、これらの拒否されたドキュメントを引き続き実行できます。これは、同じドキュメント固有の IAM 制限の対象にならない場合があります。  
ドキュメント実行を適切に制限するには、次のいずれかの方法を使用します。  
**許可リストで承認されたソース**: ネストされたドキュメント実行を使用する必要がある場合、SSM ドキュメントソースの `ssm:GetDocument` を制御する IAM ポリシー、Amazon S3 ソースの IAM と Amazon S3 バケットポリシー、パブリックインターネットソースのネットワーク設定 (VPC エンドポイントやセキュリティグループなど) のソースタイプごとに適切なコントロールを使用して承認されたソースのみにアクセスを制限します。
**AWS-RunDocument へのアクセスを制限する**: ネストされたドキュメント実行を防ぐために、`AWS-RunDocument` の `ssm:SendCommand`、および IAM ポリシーで `aws:runDocument`プラグインを使用するその他のすべてのドキュメントを拒否します。
**アクセス許可の境界を使用する**: IAM アクセス許可の境界を実装してユーザーの最大アクセス許可を設定し、実行方法に関係なく、ユーザーが承認されていないドキュメントを実行できないようにします。
IAM のベストプラクティスとアクセス許可の境界の詳細については、AWS Identity and Access Management ユーザーガイドの「[Permissions boundaries for IAM entities](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)」を参照してください。

**[開始する前に]**  
リモートドキュメントを実行する前に、次のタスクを完了する必要があります。
+ SSM コマンドドキュメントを作成し、リモートの場所に保存します。詳細については、[SSM ドキュメントコンテンツを作成する](documents-creating-content.md)を参照してください。
+ プライベート GitHub リポジトリに保存されているリモートドキュメントを実行する場合は、GitHub セキュリティアクセストークンの Systems Manager `SecureString` パラメータを作成する必要があります。SSH 経由でトークンを手動で渡すことで、プライベート GitHub リポジトリのリモートドキュメントにアクセスすることはできません。アクセストークンは、Systems Manager `SecureString` パラメータとして渡す必要があります。`SecureString` パラメータの作成の詳細については、「[Systems Manager での Parameter Store パラメータの作成](sysman-paramstore-su-create.md)」を参照してください。

## リモートドキュメントを実行する (コンソール)
<a name="documents-running-remote-github-s3-console"></a>

**リモートドキュメントを実行するには**

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

1. ナビゲーションペインで、**[Run Command]** を選択します。

1. [**Run command (コマンドの実行)**] を選択します。

1. [**Document (ドキュメント)**] リストで、[**`AWS-RunDocument`**] を選択します。

1. [**Command parameters (コマンドパラメータ)**] で、[**Source Type (ソースタイプ)**] としてオプションを選択します。
   + **[GitHub]** を選択した場合は、**[ソース情報]** の情報を次の形式で指定します。

     ```
     {
         "owner": "owner_name",
         "repository": "repository_name",
         "path": "path_to_document",
         "getOptions":"branch:branch_name",
         "tokenInfo": "{{ssm-secure:secure-string-token}}"
     }
     ```

     例えば、次のようになります。

     ```
     {
         "owner":"TestUser",
         "repository":"GitHubTestExamples",
         "path":"scripts/python/test-script",
         "getOptions":"branch:exampleBranch",
         "tokenInfo":"{{ssm-secure:my-secure-string-token}}"
     }
     ```
**注記**  
`getOptions` は、マスター以外のブランチまたはリポジトリ内の特定のコミットからコンテンツを取得するための追加オプションです。マスターブランチで最新のコミットを使用している場合は、`getOptions` を省略できます。`branch` は、SSM ドキュメントが `master` 以外のブランチに保存されている場合にのみ必要です。  
リポジトリ内の特定の*コミット*にあるバージョンの SSM ドキュメントを使用するには、`commitID` ではなく、`getOptions` を指定して `branch` を使用します。以下に例を示します。  

     ```
     "getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",
     ```
   + [**S3**] を選択した場合は、[**Source Info**] 情報を次の形式で指定します。

     ```
     {"path":"URL_to_document_in_S3"}
     ```

     以下に例を示します。

     ```
     {"path":"https://s3.amazonaws.com/amzn-s3-demo-bucket/scripts/ruby/mySSMdoc.json"}
     ```
   + [**SSMDocument**] を選択した場合は、[**Source Info**] 情報を次の形式で指定します。

     ```
     {"name": "document_name"}
     ```

     以下に例を示します。

     ```
     {"name": "mySSMdoc"}
     ```

1. [**Document Parameters**] フィールドに、リモート SSM ドキュメントのパラメータを入力します。例えば、`AWS-RunPowerShell` ドキュメントを実行する場合、以下を指定できます。

   ```
   {"commands": ["date", "echo \"Hello World\""]}
   ```

   `AWS-ConfigureAWSPack` ドキュメントを実行する場合は、以下を指定できます。

   ```
   {
      "action":"Install",
      "name":"AWSPVDriver"
   }
   ```

1. **[Targets]** (ターゲット) セクションで、タグの指定、インスタンスやエッジデバイスの手動選択、リソースグループの指定により、このオペレーションを実行するマネージドノードを選択します。
**ヒント**  
表示されるはずのマネージドノードが表示されない場合は、トラブルシューティングのヒントについて「[マネージドノードの可用性のトラブルシューティング](fleet-manager-troubleshooting-managed-nodes.md)」を参照してください。

1. **[その他のパラメータ]** で、以下の操作を行います。
   + **[コメント]** に、このコマンドに関する情報を入力します。
   + **[タイムアウト (秒)]** に、コマンドの実行全体が失敗するまでにシステムが待機する秒数を指定します。

1. **[レート制御]** の場合:
   + **[同時実行数]** の場合、コマンドを同時に実行するマネージドノードの数または割合を指定します。
**注記**  
マネージドノードに適用されるタグを指定するか、AWS リソースグループを指定してターゲットを選択し、ターゲットとなるマネージドノードの数が不明な場合は、割合を指定してドキュメントを同時に実行できるターゲットの数を制限します。
   + **[エラーのしきい値]** で、ノードの数または割合のいずれかで失敗した後、他のマネージドノードでのコマンドの実行をいつ停止するか指定します。例えば、3 つのエラーを指定した場合、4 番目のエラーが受信されると、システムマネージャー はコマンドの送信を停止します。コマンドを処理しているマネージドノードもエラーを送信する可能性があります。

1. (オプション) コマンド出力をファイルに保存する場合は、**[出力オプション]** の **[S3 バケットにコマンド出力を書き込む]** ボックスを選択します。ボックスにバケット名とプレフィックス (フォルダ) 名を入力します。
**注記**  
S3 バケットにデータを書き込む機能を許可する S3 許可は、このタスクを実行する IAM ユーザーのものではなく、インスタンスに割り当てられたインスタンスプロファイル (EC2 インスタンスの場合) または IAM サービスロール (ハイブリッドアクティベーションマシン) のものです。詳細については、「[Systems Manager に必要なインスタンスのアクセス許可を設定する](setup-instance-permissions.md)」または「[ハイブリッド環境に IAM サービスロールを作成する](hybrid-multicloud-service-role.md)」を参照してください。さらに、指定された S3 バケットが別の AWS アカウント にある場合は、マネージドノードに関連付けられたインスタンスプロファイルまたは IAM サービスロールが、そのバケットへの書き込みに必要なアクセス許可があることを確認してください。

1. [**SNS Notifications (SNS 通知)**] セクションで、コマンドの実行状態に関する通知を受け取る場合は、[**Enable SNS notifications (SNS 通知を有効にする)**] チェックボックスをオンにします。

   Run Command 用の Amazon SNS 通知の設定の詳細については、「[Amazon SNS 通知を使用した Systems Manager のステータス変更のモニタリング](monitoring-sns-notifications.md)」を参照してください。

1. [**Run** (実行)] を選択します。

**注記**  
Run Command を使用してスクリプトを呼び出すときに使用するサーバーとインスタンスの再起動については、「[コマンド実行時の再起動の処理](send-commands-reboot.md)」を参照してください。

# SSM ドキュメントの共有
<a name="documents-ssm-sharing"></a>

AWS Systems Manager (SSM) ドキュメントは、同じ AWS リージョン のアカウントとプライベートに共有することも、パブリックに共有することもできます。ドキュメントをプライベートに共有するには、ドキュメントのアクセス許可を変更して、特定の人物が AWS アカウント ID に基づいてドキュメントにアクセスできるようにします。SSM ドキュメントをパブリックに共有するには、ドキュメントのアクセス許可を変更し、[`All`] を指定します。ドキュメントをパブリックとプライベートで同時に共有することはできません。

**警告**  
信頼できるソースの共有 SSM ドキュメントのみ使用してください。共有ドキュメントを使用するときは、使用する前にドキュメントのコンテンツを慎重に確認し、インデックスの設定がどのように変わるかを理解してください。共有ドキュメントのベストプラクティスの詳細については、「[共有 SSM ドキュメントのベストプラクティス](#best-practices-shared)」を参照してください。

**制限事項**  
SSM ドキュメントの作業を始めるときは、次の制限事項に注意してください。
+ 所有者のみがドキュメントを共有できます。
+ ドキュメントを削除するには、その前にドキュメントの共有を停止する必要があります。詳細については、「[共有 SSM ドキュメントのアクセス許可を変更する](#modify-permissions-shared)」を参照してください。
+ 最大 1000 個の でドキュメントを共有できますAWS アカウント この制限の引き上げをリクエストするには、[サポート センター](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase)までお問い合わせください。[**制限のタイプ**] で、[*EC2 Systems Manager*] を選択し、リクエストの理由を入力します。
+ パブリックに最大 5 件の SSM ドキュメントを共有できます。この制限の引き上げをリクエストするには、[サポート センター](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase)までお問い合わせください。[**制限のタイプ**] で、[*EC2 Systems Manager*] を選択し、リクエストの理由を入力します。
+ ドキュメントは、同じ AWS リージョン の他のアカウントとのみ共有できます。クロスリージョン共有はサポートされていません。

**重要**  
Systems Manager において、*Amazon 所有*の SSM ドキュメントとは、Amazon Web Services 自体によって作成および管理されているドキュメントです。*Amazon 所有*のドキュメントでは、ドキュメント名に `AWS-*` のようなプレフィックスが含まれます。ドキュメントの所有者は、AWS 内の特定のユーザーアカウントではなく Amazon と見なされます。これらのドキュメントは公開されており、誰でも使用できます。

Systems Manager のService Quotas の詳細については、「[AWS Systems Manager の Service Quotas](https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)」を参照してください。

**Topics**
+ [共有 SSM ドキュメントのベストプラクティス](#best-practices-shared)
+ [SSM ドキュメントのパブリック共有をブロックする](#block-public-access)
+ [SSM ドキュメントを共有する](#ssm-how-to-share)
+ [共有 SSM ドキュメントのアクセス許可を変更する](#modify-permissions-shared)
+ [共有 SSM ドキュメントを使用する](#using-shared-documents)

## 共有 SSM ドキュメントのベストプラクティス
<a name="best-practices-shared"></a>

共有ドキュメントを共有したり使用したりする前に、次のガイドラインを確認してください。

**機密情報を削除する**  
AWS Systems Manager (SSM) ドキュメントを慎重に確認して、機密情報があればそれを削除します。例えば、ドキュメントに AWS 認証情報が含まれていないことを確認します。特定のユーザーとドキュメントを共有する場合、そのユーザーはドキュメント内の情報を表示することができます。パブリックにドキュメントを共有する場合、誰でもドキュメント内の情報を表示することができます。

**ドキュメントのパブリック共有をブロックする**  
アカウント内のすべてのパブリック共有されている SSM ドキュメントを確認し、共有を継続するかどうかを確認します。特定のドキュメントのパブリック共有を停止するには、このトピックの [共有 SSM ドキュメントのアクセス許可を変更する](#modify-permissions-shared) セクションで説明しているように、そのドキュメントのアクセス許可設定を変更する必要があります。パブリック共有ブロック設定を有効にしても、現在パブリック共有しているドキュメントには影響しません。ユースケースでパブリック共有を有効にする必要がある場合を除き、Systems Manager ドキュメントコンソールの **[詳細設定]** セクションで、SSM ドキュメントのパブリック共有ブロック設定をオンにすることをお勧めします。この設定をオンにすると、SSM ドキュメントへの不要なアクセスを防止できます。パブリック共有のブロック設定は、アカウントレベルの設定で、各 AWS リージョン で異なる可能性があります。

**IAM 信頼ポリシーを使用して Run Command アクションを制限する**  
ドキュメントにアクセスできるユーザーに対する制限付き AWS Identity and Access Management (IAM) ポリシーを作成します。IAM ポリシーにより、ユーザーが Amazon Elastic Compute Cloud (Amazon EC2) コンソールで表示できるか、AWS Command Line Interface (AWS CLI) または AWS Tools for Windows PowerShell で `ListDocuments` を呼び出して表示できる SSM ドキュメントが決まります。このポリシーでは、SSM ドキュメントに対してユーザーが実行できるアクションも制限されます。制限付きポリシーを作成し、ユーザーが特定のドキュメントのみを表示するようにできます。詳細については、「[カスタマーマネージドポリシーの例](security_iam_id-based-policy-examples.md#customer-managed-policies)」を参照してください。

**共有 SSM ドキュメントを使用する際の注意事項**  
インスタンスで実行されるコマンドを理解するために、共有されている各ドキュメント (特にパブリックドキュメント) のコンテンツを確認します。ドキュメントは、実行後に意図的または非意図的に悪影響を及ぼすことがあります。ドキュメントが外部ネットワークを参照している場合、ドキュメントを使用する前に外部ソースを確認してください。

**ドキュメントハッシュを使用してコマンドを送信する**  
ドキュメントを共有する場合、システムは Sha-256 ハッシュを作成し、それをドキュメントに割り当てます。また、システムはドキュメントコンテンツのスナップショットを保存します。共有ドキュメントを使用してコマンドを送信するときは、コマンドでハッシュを指定して、次の条件が確実に該当するようにできます。  
+ 正しい Systems Manager ドキュメントからコマンドを実行している
+ ドキュメントが自分と共有されてからコンテンツが変更されていない
ハッシュが、指定されたドキュメントと一致しない場合、または共有ドキュメントのコンテンツが変更されている場合、コマンドは `InvalidDocument` 例外を返します。ハッシュは、外部の場所からドキュメントのコンテンツを確認することはできません。

**補間パラメータを使用してセキュリティを高める**  
SSM ドキュメントの `String` タイプのパラメータでは、パラメータと値 `interpolationType": "ENV_VAR` を使用して、パラメータ入力を潜在的に実行可能なコマンドではなく文字列リテラルとして処理することにより、コマンドインジェクション攻撃に対するセキュリティを高めます。この場合、エージェントは、パラメータの値を含む `SSM_parameter-name` という名前の環境変数を作成します。`String` タイプのパラメータを含む既存の SSM ドキュメントをすべて更新して `"interpolationType": "ENV_VAR"` を含めておくことが推奨されます。詳細については、「[SSM ドキュメントコンテンツを書き込む](documents-creating-content.md#writing-ssm-doc-content)」を参照してください。

## SSM ドキュメントのパブリック共有をブロックする
<a name="block-public-access"></a>

開始する前に、AWS アカウント でパブリック共有されている SSM ドキュメントをすべて確認し、共有を継続するかどうかを確認します。特定の SSM ドキュメントのパブリック共有を停止するには、このトピックの [共有 SSM ドキュメントのアクセス許可を変更する](#modify-permissions-shared) セクションで説明しているように、そのドキュメントのアクセス許可設定を変更する必要があります。パブリック共有ブロック設定を有効にしても、現在パブリック共有している SSM ドキュメントには影響しません。パブリック共有ブロック設定を有効にすると、追加の SSM ドキュメントをパブリック共有できなくなります。

ユースケースでパブリック共有を有効にする必要がある場合を除き、SSM ドキュメントのパブリック共有ブロック設定をオンにすることをお勧めします。この設定をオンにすると、SSM ドキュメントへの不要なアクセスを防止できます。パブリック共有のブロック設定は、アカウントレベルの設定で、各 AWS リージョン で異なる可能性があります。現在共有していない SSM ドキュメントについてパブリック共有をブロックするには、次のタスクを完了します。

### パブリック共有のブロック (コンソール)
<a name="block-public-access-console"></a>

**SSM ドキュメントのパブリック共有をブロックするには**

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

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

1. [**Preferences (設定)**] を選択してから、**パブリック共有のブロック**セクションにある [**編集**] を選択します。

1. [**パブリック共有のブロック**] のチェックボックスを選択してから、[**保存**]を選択します。

### パブリック共有のブロック (コマンドライン)
<a name="block-public-access-cli"></a>

AWS Command Line Interface(AWS CLI) を開く、またはローカルコンピュータの AWS Tools for Windows PowerShellを開き、以下のコマンドを実行してSSM ドキュメントのパブリック共有をブロックします。

------
#### [ Linux & macOS ]

```
aws ssm update-service-setting  \
    --setting-id /ssm/documents/console/public-sharing-permission \
    --setting-value Disable \
    --region 'The AWS リージョン you want to block public sharing in'
```

------
#### [ Windows ]

```
aws ssm update-service-setting ^
    --setting-id /ssm/documents/console/public-sharing-permission ^
    --setting-value Disable ^
    --region "The AWS リージョン you want to block public sharing in"
```

------
#### [ PowerShell ]

```
Update-SSMServiceSetting `
    -SettingId /ssm/documents/console/public-sharing-permission `
    -SettingValue Disable `
    –Region The AWS リージョン you want to block public sharing in
```

------

以下のコマンドで、設定値が更新されたことを確認します。

------
#### [ Linux & macOS ]

```
aws ssm get-service-setting   \
    --setting-id /ssm/documents/console/public-sharing-permission \
    --region The AWS リージョン you blocked public sharing in
```

------
#### [ Windows ]

```
aws ssm get-service-setting  ^
    --setting-id /ssm/documents/console/public-sharing-permission ^
    --region "The AWS リージョン you blocked public sharing in"
```

------
#### [ PowerShell ]

```
Get-SSMServiceSetting `
    -SettingId /ssm/documents/console/public-sharing-permission `
    -Region The AWS リージョン you blocked public sharing in
```

------

### IAM によるパブリック共有をブロックするためのアクセスの制限
<a name="block-public-access-changes-iam"></a>

AWS Identity and Access Management (IAM) ポリシーを作成して、ユーザーによるパブリック共有のブロック設定の変更を制限します。これにより、SSM ドキュメントへの不要なアクセスをユーザーが許可できなくなります。

以下は、ユーザーがパブリック共有をブロックする設定を更新できないようにする IAM ポリシーの例です。この例を使用するには、Amazon Web Services のアカウント ID の例を自分のアカウント ID に置き換える必要があります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "ssm:UpdateServiceSetting",
            "Resource": "arn:aws:ssm:*:444455556666:servicesetting/ssm/documents/console/public-sharing-permission"
        }
    ]
}
```

------

## SSM ドキュメントを共有する
<a name="ssm-how-to-share"></a>

Systems Manager コンソールを使用して AWS Systems Manager (SSM) ドキュメントを共有できます。コンソールからドキュメントを共有する場合、共有できるのはドキュメントのデフォルトバージョンのみです。また、AWS Command Line Interface (AWS CLI)、AWS Tools for Windows PowerShell、または AWS SDK を使用して、`ModifyDocumentPermission` API オペレーションを呼び出すことで、プログラムで SSM ドキュメントを共有することもできます。ドキュメントを共有する前に、共有するユーザーの AWS アカウント ID を取得します。ドキュメントを共有する場合に、これらのアカウント ID を指定します。

### ドキュメントを共有する (コンソール)
<a name="share-using-console"></a>

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

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

1. ドキュメントリストで共有するドキュメントを選択し、[**詳細を表示**] を選択します。[**Permissions**] タブで自分がドキュメントの所有者であることを確認します。ドキュメントの所有者のみがドキュメントを共有できます。

1. [**Edit**] を選択します。

1. コマンドをパブリックに共有するには、[**Public**] を選択し、[**Save**] を選択します。コマンドをプライベートに共有するには、[**Private (プライベート)**] を選択し、AWS アカウント ID を入力します。次に、[**Add permission (アクセス権限の追加)**] を選択し、[**Save (保存)**] を選択します。

### ドキュメントの共有 (コマンドライン)
<a name="share-using-cli"></a>

次の手順では、コマンドラインセッションの AWS リージョン を指定する必要があります。

1. ローカルコンピュータで AWS CLI または AWS Tools for Windows PowerShell を開き、以下のコマンドを実行して認証情報を指定します。

   次のコマンドで、*[Region]* (リージョン) をユーザー自身の情報に置き換えます。サポートされている *region* 値の一覧については、「Amazon Web Services 全般のリファレンス」の「[Systems Manager サービスエンドポイント](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region)」にある **Region** 列を参照してください。

------
#### [ Linux & macOS ]

   ```
   aws config
   
   AWS Access Key ID: [your key]
   AWS Secret Access Key: [your key]
   Default region name: region
   Default output format [None]:
   ```

------
#### [ Windows ]

   ```
   aws config
   
   AWS Access Key ID: [your key]
   AWS Secret Access Key: [your key]
   Default region name: region
   Default output format [None]:
   ```

------
#### [ PowerShell ]

   ```
   Set-AWSCredentials –AccessKey your key –SecretKey your key
   Set-DefaultAWSRegion -Region region
   ```

------

1. 次のコマンドを使用して、使用可能なすべての SSM ドキュメントの一覧を表示します。一覧には、作成したドキュメント、および自分と共有されたドキュメントが含まれます。

------
#### [ Linux & macOS ]

   ```
   aws ssm list-documents
   ```

------
#### [ Windows ]

   ```
   aws ssm list-documents
   ```

------
#### [ PowerShell ]

   ```
   Get-SSMDocumentList
   ```

------

1. 特定のドキュメントを取得するには、次のコマンドを使用します。

------
#### [ Linux & macOS ]

   ```
   aws ssm get-document \
       --name document name
   ```

------
#### [ Windows ]

   ```
   aws ssm get-document ^
       --name document name
   ```

------
#### [ PowerShell ]

   ```
   Get-SSMDocument `
       –Name document name
   ```

------

1. ドキュメントの説明を表示するには、次のコマンドを使用します。

------
#### [ Linux & macOS ]

   ```
   aws ssm describe-document \
       --name document name
   ```

------
#### [ Windows ]

   ```
   aws ssm describe-document ^
       --name document name
   ```

------
#### [ PowerShell ]

   ```
   Get-SSMDocumentDescription `
       –Name document name
   ```

------

1. ドキュメントのアクセス権限を表示するには、次のコマンドを使用します。

------
#### [ Linux & macOS ]

   ```
   aws ssm describe-document-permission \
       --name document name \
       --permission-type Share
   ```

------
#### [ Windows ]

   ```
   aws ssm describe-document-permission ^
       --name document name ^
       --permission-type Share
   ```

------
#### [ PowerShell ]

   ```
   Get-SSMDocumentPermission `
       –Name document name `
       -PermissionType Share
   ```

------

1. ドキュメントのアクセス権限を変更して共有するには、次のコマンドを使用します。アクセス権限を編集するには、ドキュメントの所有者である必要があります。オプションで、特定の AWS アカウント ID と共有するドキュメントの場合は、`--shared-document-version` パラメータを使用して共有するドキュメントのバージョンを指定できます。バージョンを指定しない場合、ドキュメント の `Default` バージョンが共有されます。ドキュメントをパブリックに (`all` と) 共有する場合は、指定したドキュメントのすべてのバージョンがデフォルトで共有されます。次のコマンド例は、特定の個人の AWS アカウント ID に基づいて、その個人とドキュメントをプライベートに共有します。

------
#### [ Linux & macOS ]

   ```
   aws ssm modify-document-permission \
       --name document name \
       --permission-type Share \
       --account-ids-to-add AWS アカウント ID
   ```

------
#### [ Windows ]

   ```
   aws ssm modify-document-permission ^
       --name document name ^
       --permission-type Share ^
       --account-ids-to-add AWS アカウント ID
   ```

------
#### [ PowerShell ]

   ```
   Edit-SSMDocumentPermission `
       –Name document name `
       -PermissionType Share `
       -AccountIdsToAdd AWS アカウント ID
   ```

------

1. 次のコマンドを使用してドキュメントをパブリックに共有します。
**注記**  
ドキュメントをパブリックに (`all` と) 共有する場合は、指定したドキュメントのすべてのバージョンがデフォルトで共有されます。

------
#### [ Linux & macOS ]

   ```
   aws ssm modify-document-permission \
       --name document name \
       --permission-type Share \
       --account-ids-to-add 'all'
   ```

------
#### [ Windows ]

   ```
   aws ssm modify-document-permission ^
       --name document name ^
       --permission-type Share ^
       --account-ids-to-add "all"
   ```

------
#### [ PowerShell ]

   ```
   Edit-SSMDocumentPermission `
       -Name document name `
       -PermissionType Share `
       -AccountIdsToAdd ('all')
   ```

------

## 共有 SSM ドキュメントのアクセス許可を変更する
<a name="modify-permissions-shared"></a>

コマンドを共有する場合、AWS Systems Manager (SSM) ドキュメントへのアクセス権を削除するか、SSM ドキュメントを削除するまで、そのコマンドを表示および使用できます。ただし、共有されている限り、ドキュメントを削除することはできません。ドキュメントを削除する前に、共有を停止する必要があります。

### ドキュメント共有の停止 (コンソール)
<a name="unshare-using-console"></a>

**ドキュメント共有の停止**

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

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

1. ドキュメントリストで共有を停止するドキュメントを選択し、**[詳細]** を選択します。**[アクセス許可]** セクションで自分がドキュメントの所有者であることを確認します。ドキュメントの所有者のみが、ドキュメントの共有を停止できます。

1. [**Edit**] を選択します。

1. [**X**] を選択してコマンドへのアクセス権を取り消す AWS アカウント ID を削除し、[**Save**] を選択します。

### ドキュメントの共有の停止 (コマンドライン)
<a name="unshare-using-cli"></a>

ローカルコンピュータで AWS CLI または AWS Tools for Windows PowerShell を開き、次のコマンドを実行してコマンドの共有を停止します。

------
#### [ Linux & macOS ]

```
aws ssm modify-document-permission \
    --name document name \
    --permission-type Share \
    --account-ids-to-remove 'AWS アカウント ID'
```

------
#### [ Windows ]

```
aws ssm modify-document-permission ^
    --name document name ^
    --permission-type Share ^
    --account-ids-to-remove "AWS アカウント ID"
```

------
#### [ PowerShell ]

```
Edit-SSMDocumentPermission `
    -Name document name `
    -PermissionType Share `
    –AccountIdsToRemove AWS アカウント ID
```

------

## 共有 SSM ドキュメントを使用する
<a name="using-shared-documents"></a>

AWS Systems Manager (SSM) ドキュメントを共有すると、システムは Amazon リソースネーム (ARN) を生成して、コマンドに割り当てます。Systems Manager コンソールから共有ドキュメントを選択して実行する場合、ARN は表示されません。ただし、Systems Manager コンソール以外の方法を使用して共有 SSM ドキュメントを実行する場合は、`DocumentName` リクエストパラメータにドキュメントの完全な ARN を指定する必要があります。コマンドを実行してドキュメントをリストすると、SSM ドキュメントの完全な ARN が表示されます。

**注記**  
AWS のパブリックドキュメント (先頭に `AWS-*` が付くドキュメント)、または自己所有のドキュメントに ARN を指定する必要はありません。

### 共有 SSM ドキュメントを使用する (コマンドライン)
<a name="using-shared-documents-cli"></a>

 **すべてのパブリック SSM ドキュメントをリスト表示するには** 

------
#### [ Linux & macOS ]

```
aws ssm list-documents \
    --filters Key=Owner,Values=Public
```

------
#### [ Windows ]

```
aws ssm list-documents ^
    --filters Key=Owner,Values=Public
```

------
#### [ PowerShell ]

```
$filter = New-Object Amazon.SimpleSystemsManagement.Model.DocumentKeyValuesFilter
$filter.Key = "Owner"
$filter.Values = "Public"

Get-SSMDocumentList `
    -Filters @($filter)
```

------

 **自分と共有されているプライベート SSM ドキュメントをリスト表示するには** 

------
#### [ Linux & macOS ]

```
aws ssm list-documents \
    --filters Key=Owner,Values=Private
```

------
#### [ Windows ]

```
aws ssm list-documents ^
    --filters Key=Owner,Values=Private
```

------
#### [ PowerShell ]

```
$filter = New-Object Amazon.SimpleSystemsManagement.Model.DocumentKeyValuesFilter
$filter.Key = "Owner"
$filter.Values = "Private"

Get-SSMDocumentList `
    -Filters @($filter)
```

------

 **使用できるすべての SSM ドキュメントをリスト表示するには** 

------
#### [ Linux & macOS ]

```
aws ssm list-documents
```

------
#### [ Windows ]

```
aws ssm list-documents
```

------
#### [ PowerShell ]

```
Get-SSMDocumentList
```

------

 **自分と共有されている SSM ドキュメントについての情報を入手するには** 

------
#### [ Linux & macOS ]

```
aws ssm describe-document \
    --name arn:aws:ssm:us-east-2:12345678912:document/documentName
```

------
#### [ Windows ]

```
aws ssm describe-document ^
    --name arn:aws:ssm:us-east-2:12345678912:document/documentName
```

------
#### [ PowerShell ]

```
Get-SSMDocumentDescription `
    –Name arn:aws:ssm:us-east-2:12345678912:document/documentName
```

------

 **共有 SSM ドキュメントを実行するには** 

------
#### [ Linux & macOS ]

```
aws ssm send-command \
    --document-name arn:aws:ssm:us-east-2:12345678912:document/documentName \
    --instance-ids ID
```

------
#### [ Windows ]

```
aws ssm send-command ^
    --document-name arn:aws:ssm:us-east-2:12345678912:document/documentName ^
    --instance-ids ID
```

------
#### [ PowerShell ]

```
Send-SSMCommand `
    –DocumentName arn:aws:ssm:us-east-2:12345678912:document/documentName `
    –InstanceIds ID
```

------

# SSM ドキュメントを検索する
<a name="ssm-documents-searching"></a>

AWS Systems Manager (SSM) ドキュメントストアでは、フリーテキスト検索やフィルターによる検索を使用して、SSM ドキュメントを検索することができます。また、頻繁に使用する SSM ドキュメントを見つけるのに役立つように、ドキュメントをお気に入りに追加することもできます。ここでは、これらを使用する方法について説明します。

## フリーテキスト検索の使用
<a name="ssm-documents-searching-free-text"></a>

Systems Manager の [**ドキュメント**] ページの検索ボックスでは、フリーテキスト検索がサポートされています。フリーテキスト検索では、入力した検索語を各 SSM ドキュメントのドキュメント名と比較します。例えば、「**ansible**」という 1 つの検索語を入力すると、Systems Manager はこの語を含むすべての SSM ドキュメントを返します。複数の検索語を入力すると、Systems Manager は `OR` ステートメントを使用して検索します。例えば、**ansible** と **linux** を指定すると、名前に*どちらか*の検索語を含むすべてのドキュメントが返されます。

フリーテキスト検索用語を入力して [**Platform type**] (プラットフォームタイプ) などの検索オプションを選択する場合は、検索が `AND` 文を使用して、名前に指定したキーワードが含まれ、かつ指定したプラットフォームタイプのすべてのドキュメントを返します。

**注記**  
フリーテキスト検索では、次の点に注意してください。  
フリーテキスト検索では、大文字と小文字は区別*されません*。
検索語は 3～20 文字にする必要があります。
フリーテキスト検索では、検索語を 5 つまで使用できます。
検索語の間にスペースを入れると、検索時にスペースが含まれます。
フリーテキスト検索は、[**Document type (ドキュメントタイプ)**] や [**Platform type (プラットフォームタイプ)**] などの他の検索オプションと組み合わせることができます。
[**Document name prefix (ドキュメント名のプレフィックス)**] フィルターとフリーテキスト検索は一緒に使用できません。

**SSM ドキュメントを検索するには**

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

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

1. 検索ボックスに検索語を入力し、Enter キーを押します。

### AWS CLI を使用したドキュメントのフリーテキスト検索の実行
<a name="ssm-documents-searching-free-text-cli"></a>

**CLI を使用してドキュメントのフリーテキスト検索を実行するには**

1. まだ AWS Command Line Interface (AWS CLI) をインストールして設定していない場合は、インストールして設定します。

   詳細については、「[AWS CLI の最新バージョンをインストールまたは更新します。](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

1. 1 つの検索語でドキュメントのフリーテキスト検索を実行するには、次のコマンドを実行します。このコマンドの *search\$1term* を使用する検索語に置き換えてください。

   ```
   aws ssm list-documents --filters Key="SearchKeyword",Values="search_term"
   ```

   以下に例を示します。

   ```
   aws ssm list-documents --filters Key="SearchKeyword",Values="aws-asg" --region us-east-2
   ```

   複数の検索語を使用して `AND` 演算で検索するには、次のコマンドを実行します。このコマンドの *search\$1term\$11* と *search\$1term\$12* を使用する検索語に置き換えてください。

   ```
   aws ssm list-documents --filters Key="SearchKeyword",Values="search_term_1","search_term_2","search_term_3" --region us-east-2
   ```

   以下に例を示します。

   ```
   aws ssm list-documents --filters Key="SearchKeyword",Values="aws-asg","aws-ec2","restart" --region us-east-2
   ```

## フィルターの使用
<a name="ssm-documents-searching-filters"></a>

Systems Manager の [**Documents (ドキュメント)**] ページの検索ボックスを選択すると、以下のフィルターが自動的に表示されます。
+ [Document name prefix (ドキュメント名のプレフィックス)]
+ [Platform types (プラットフォームタイプ)]
+ [Document type (ドキュメントタイプ)]
+ タグキー

![\[SSM ドキュメントページのフィルターオプション\]](http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/images/ssm-documents-filters-1.png)


1 つのフィルターを使用して、SSM ドキュメントを検索できます。より具体的な SSM ドキュメントのセットを返す場合は、複数のフィルターを適用できます。次の図は、[**Platform types (プラットフォームタイプ)**] フィルターと [**Document name prefix (ドキュメント名のプレフィックス)**] フィルターを使用した検索の例を示しています。

![\[SSM ドキュメントページで複数のフィルターオプションを適用します。\]](http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/images/ssm-documents-filters-2.png)


複数のフィルターを適用すると、Systems Manager は選択したフィルターに基づいて異なる検索ステートメントで検索します。
+ *同じ*フィルター ([**Document name prefix (ドキュメント名のプレフィックス)**] など) を複数回適用すると、Systems Manager は `OR` ステートメントを使用して検索します。例えば、1 つ目の [**Document name prefix (ドキュメント名のプレフィックス)**] フィルターに「**AWS**」を指定し、2 つ目の [**Document name prefix (ドキュメント名のプレフィックス)**] フィルターに「**Lambda**」を指定した場合、検索ではプレフィックスが「`AWS`」のすべてのドキュメントとプレフィックスが「`Lambda`」のすべてのドキュメントが返されます。
+ *異なる*フィルターを適用する場合 ([**Document name prefix**] (ドキュメント名プレフィックス) と [**Platform types**] (プラットフォームタイプ) など)、Systems Manager は検索に `AND` ステートメントを使用します。例えば、[**Document name prefix**] (ドキュメント名プレフィックス) のフィルターに **AWS** を使用し、[**Platform types**] (プラットフォームタイプ) のフィルターに **Linux** を指定した場合、検索結果は「`AWS`」のプレフィックスが付いたドキュメントのうち、Linux プラットフォーム固有のものをすべて表示します。

**注記**  
フィルターを使用する検索では、大文字と小文字は区別されます。

## ドキュメントのお気に入りへの追加
<a name="favorite-documents"></a>

頻繁に使用する SSM ドキュメントを見つけやすいように、ドキュメントをお気に入りに追加してください。1 つのドキュメントタイプ、AWS アカウント および AWS リージョン 1 つにつき、最大 20 のドキュメントをお気に入りに追加できます。ドキュメント AWS マネジメントコンソール からお気に入りを選択、変更、表示できます。次の手順は、お気に入りを選択、変更、表示する方法について説明します。

**SSM ドキュメントをお気に入りにするには**

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

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

1. お気に入りにしたいドキュメント名の横にある星のアイコンを選択します。

**SSM ドキュメントをお気に入りから削除するには**

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

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

1. お気に入りから削除するドキュメント名の横にある星アイコンを選択解除します。

**ドキュメント AWS マネジメントコンソール からお気に入りを表示するには**

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

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

1. **[お気に入り]** タブを選択します。

# パラメータ処理の問題のトラブルシューティング
<a name="parameter-troubleshooting"></a>

## パラメータ処理のよくある問題
<a name="common-parameter-issues"></a>

**実行中に環境変数を使用できない**  
**問題:** 環境変数 (`SSM_parameter-name`) が見つからないことによりコマンドが失敗する。  
**考えられる原因:**  
+ SSM Agent バージョンが環境変数補間をサポートしていない
+ `interpolationType` が `ENV_VAR` に設定されていない
+ パラメータ名が予想される環境変数名と一致しない
**解決策**:  
+ SSM Agent バージョンが 3.3.2746.0 以降であることを確認する
+ 古いエージェントバージョンのフォールバックロジックを追加する

  ```
  if [ -z "${SSM_parameterName+x}" ]; then
      export SSM_parameterName="{{parameterName}}"
  fi
  ```

**特殊文字を含むパラメータ値**  
**問題:** パラメータ値にスペース、引用符、その他特殊文字が含まれているときにコマンドが失敗する。  
**解決策**:  
+ 環境変数を参照するときは適切な引用符を使用する

  ```
  # Correct
  echo "$SSM_parameter-name"
  
  # Incorrect
  echo $SSM_parameter-name
  ```
+ `allowedPattern` を使用して入力検証を追加し、特殊文字を制限する

**プラットフォーム間で動作に一貫性がない**  
**問題:** Linux と Windows Server のシステムとでパラメータ処理の動作が異なる。  
**解決策**:  
+ 各プラットフォームに固有の環境変数構文を使用する

  ```
  # PowerShell
  $env:SSM_parameter-name
  
  # Bash
  $SSM_parameter-name
  ```
+ ドキュメントに、プラットフォームに固有の前提条件チェックを実行する

**パラメータ値が適切にエスケープされない**  
**問題:** 環境変数補間を使用しているにもかかわらずコマンドインジェクションに対して脆弱である。  
**解決策**:  
+ コマンドにパラメータ値を含めるときに、常に適切なエスケープを使用する

  ```
  # Correct
  mysql_command="mysql -u \"$SSM_username\" -p\"$SSM_password\""
  
  # Incorrect
  mysql_command="mysql -u $SSM_username -p$SSM_password"
  ```

## パラメータ検証のヒント
<a name="parameter-validation"></a>

次の方法を使ってパラメータ処理を検証します。

1. テスト環境変数の可用性:

   ```
   #!/bin/bash
   # Print all SSM_ environment variables
   env | grep ^SSM_
   
   # Test specific parameter
   if [ -n "$SSM_parameter" ]; then
       echo "Parameter is available"
   else
       echo "Parameter is not available"
   fi
   ```

1. パラメータのパターンを確認します。

   ```
   parameters:
     myParameter:
       type: String
       allowedPattern: "^[a-zA-Z0-9_-]+$"
       description: "Test this pattern with sample inputs"
   ```

1. エラー処理を含めます。

   ```
   if [[ ! "$SSM_parameter" =~ ^[a-zA-Z0-9_-]+$ ]]; then
       echo "Parameter validation failed"
       exit 1
   fi
   ```