

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

# その他の製品やサービスとの統合
<a name="integrations-partners"></a>

AWS Systems Manager には、次の表に示す製品とサービスの統合が組み込まれています。


|  |  | 
| --- |--- |
|  Ansible  |  [https://www.ansible.com/](https://www.ansible.com/) は、アプリケーションとシステムのデプロイを容易にする IT オートメーションプラットフォームです。 Systems Manager には、Systems Manager ドキュメント (SSM ドキュメント) `AWS-ApplyAnsiblePlaybooks` が用意されています。これにより、Ansible プレイブックを実行する State Manager の関連付けを作成できます。  詳細情報 [Ansible プレイブックを実行する関連付けの作成](systems-manager-state-manager-ansible.md)   | 
|  Chef  |  [https://www.chef.io/](https://www.chef.io/) は、アプリケーションとシステムのデプロイを容易にする IT オートメーションツールです。 Systems Manager には `AWS-ApplyChefRecipes` SSM ドキュメントが用意されています。これにより、Chef レシピを実行する、AWS Systems Manager のツールである State Manager の関連付けを作成できます。  詳細情報 [Chef recipe を実行する関連付けの作成](systems-manager-state-manager-chef.md)  Systems Manager は [https://www.chef.io/products/chef-inspec/](https://www.chef.io/products/chef-inspec/) プロファイルとも統合されるため、コンプライアンススキャンを実行したり、準拠および非準拠のノードを表示したりできます。  詳細情報 [Systems Manager Compliance で Chef InSpec プロファイルを使用する](integration-chef-inspec.md)   | 
|  GitHub  |  [https://github.com/](https://github.com/) は、ソフトウェア開発のバージョン管理とコラボレーションのためのホスティングを提供します。 Systems Manager には、GitHub に格納されている他の SSM ドキュメントを実行できる SSM ドキュメント `AWS-RunDocument` と、GitHub に格納されているスクリプトを実行できる SSM ドキュメント `AWS-RunRemoteScript` が用意されています。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/integrations-partners.html)  | 
|  Jenkins  |  [https://www.jenkins.io/](https://www.jenkins.io/) は、デベロッパーがソフトウェアを確実に構築、テスト、デプロイできるようにするオープンソースのオートメーションサーバーです。 Systems Manager のツールである Automation は、Amazon Machine Images (AMIs) にアプリケーションリリースをプレインストールするためのビルド後のステップとして使用できます。  詳細情報 [オートメーションと Jenkins を使用した AMIs の更新](automation-tutorial-update-patch-ami-jenkins-integration.md)   | 
|  ServiceNow  |  [https://www.servicenow.com/](https://www.servicenow.com/) は、IT サービスと運用を管理できるエンタープライズサービス管理システムです。 Automation、Change Manager、Incident Manager、および OpsCenter (すべて Systems Manager のツール) は、AWS Service Management Connector を使用して ServiceNow と統合できます。この統合により、ServiceNow から AWS サポート ケースの表示、作成、更新、対応の追加、および解決を行うことができます。  詳細情報 [ServiceNow との統合](integrations-partners-servicenow.md)    | 
| Terraform |  HashiCorp [Terraform](https://registry.terraform.io/) は、さまざまなクラウドサービスを管理するためのコマンドラインインターフェイス (CLI) ワークフローを提供するオープンソースの *Infrastructure as code (IaC)* ソフトウェアツールです。Systems Manager では、Terraform を使用して以下の要素を管理またはプロビジョニングできます。 **リソース** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/integrations-partners.html) **データソース** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/integrations-partners.html)  | 

**Topics**
+ [

# GitHub からのスクリプトの実行
](integration-remote-scripts.md)
+ [

# Systems Manager Compliance で Chef InSpec プロファイルを使用する
](integration-chef-inspec.md)
+ [

# ServiceNow との統合
](integrations-partners-servicenow.md)

# GitHub からのスクリプトの実行
<a name="integration-remote-scripts"></a>

このトピックでは、事前定義された Systems Manager ドキュメント (SSM ドキュメント) `AWS-RunRemoteScript` を使用して、Ansible プレイブック、Python、Ruby、および PowerShell スクリプトなどのスクリプトを GitHub からダウンロードする方法について説明します。この SSM ドキュメントを使用することで、スクリプトを手動で Amazon Elastic Compute Cloud (Amazon EC2) にポーティングしたり、SSM ドキュメントにラップしたりする必要はなくなりました。AWS Systems Manager と GitHub との統合により、Infrastructure as Code (コードとしてのインフラストラクチャ) が促進され、フリート全体の設定を標準化しながらノードを管理する時間が短縮されます。

リモートの場所からスクリプトやその他の SSM ドキュメントをダウンロードして実行できる、カスタム SSM ドキュメントを作成することもできます。詳細については、「[複合ドキュメントの作成](documents-creating-content.md#documents-creating-composite)」を参照してください。

複数のスクリプトを含むディレクトリをダウンロードすることもできます。ディレクトリ内でプライマリスクリプトを実行すると、Systems Manager はディレクトリに含まれている参照されるスクリプトも実行します。

GitHub からのスクリプトの実行に関する以下の重要な詳細をメモします。
+ Systems Manager は、スクリプトがノードで実行できるかどうかを検証しません。スクリプトをダウンロードして実行する前に、必要なソフトウェアがノードにインストールされていることを確認してください。または、複合ドキュメントを作成することで、Run Command か、AWS Systems Manager のツールである State Manager のいずれかを使用してソフトウェアをインストールし、さらにスクリプトをダウンロードして実行することができます。
+ お客様には、すべての GitHub 要件が満たされていることを確認する責任があります。これには、必要に応じてアクセストークンを更新することが含まれます。また、認証されたリクエストまたは認証されていないリクエストの数が超過しないようにしてください。詳細については、GitHub ドキュメントを参照してください。
+ GitHub Enterprise リポジトリはサポートされていません。

**Topics**
+ [

# GitHub から Ansible プレイブックを実行する
](integration-github-ansible.md)
+ [

# GitHub から Python スクリプトを実行する
](integration-github-python.md)

# GitHub から Ansible プレイブックを実行する
<a name="integration-github-ansible"></a>

このセクションでは、コンソールまたは AWS Command Line Interface (AWS CLI) を使用して、GitHub から Ansible プレイブックを実行する手順を説明します。

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

## GitHub から Ansible プレイブックを実行する (コンソール)
<a name="integration-github-ansible-console"></a>

**GitHub から Ansible プレイブックを実行する**

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

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

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

1. **[コマンドのドキュメント]** リストで、**[`AWS-RunRemoteScript`]** を選択します。

1. **[コマンドパラメータ]** で、以下の作業を行います。
   + **[ソースタイプ]** で、**[GitHub]** を選択します。
   + **[ソース情報]** ボックスに、ソースにアクセスするために必要な情報を次の形式で入力します。

     ```
     {
       "owner": "owner_name",
       "repository": "repository_name", 
       "getOptions": "branch:branch_name",
       "path": "path_to_scripts_or_directory",
       "tokenInfo": "{{ssm-secure:SecureString_parameter_name}}" 
     }
     ```

     この例では、`webserver.yml` という名前のファイルがダウンロードされます。

     ```
     {
         "owner": "TestUser1",
         "repository": "GitHubPrivateTest",
         "getOptions": "branch:myBranch",
         "path": "scripts/webserver.yml",
         "tokenInfo": "{{ssm-secure:mySecureStringParameter}}"
     }
     ```
**注記**  
`"branch"` は、SSM ドキュメントが 以外のブランチに保存されている場合にのみ必要です。`master`  
リポジトリ内の特定のコミットにあるバージョンのスクリプトを使用するには、`commitID` ではなく、`getOptions` を指定して `branch` を使用します。以下に例を示します。  
`"getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",`
   + **[コマンドライン]** フィールドに、スクリプトの実行に必要なパラメータを入力します。以下はその例です。

     **ansible-playbook -i “localhost,” --check -c local webserver.yml**
   + (オプション) **[作業ディレクトリ]** に、スクリプトをダウンロードして実行する先の、ノードのディレクトリの名前を入力します。
   + (オプション) **[実行タイムアウト]** に、スクリプトコマンドの実行を失敗とするまでにシステムが待機する秒数を指定します。

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

## AWS CLI を使用して、GitHub から Ansible プレイブックを実行する
<a name="integration-github-ansible-cli"></a>

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

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

1. GitHub からスクリプトをダウンロードして実行するには、次のコマンドを実行します。

   ```
   aws ssm send-command \
       --document-name "AWS-RunRemoteScript" \
       --instance-ids "instance-IDs"\
       --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"owner_name\", \"repository\": \"repository_name\", \"path\": \"path_to_file_or_directory\", \"tokenInfo\":\"{{ssm-secure:name_of_your_SecureString_parameter}}\" }"],"commandLine":["commands_to_run"]}'
   ```

   ローカル Linux マシン上で実行するコマンドの例を次に示します。

   ```
   aws ssm send-command \    
       --document-name "AWS-RunRemoteScript" \
       --instance-ids "i-02573cafcfEXAMPLE" \
       --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"TestUser1\", \"repository\": \"GitHubPrivateTest\", \"path\": \"scripts/webserver.yml\", \"tokenInfo\":\"{{ssm-secure:mySecureStringParameter}}\" }"],"commandLine":["ansible-playbook -i “localhost,” --check -c local webserver.yml"]}'
   ```

# GitHub から Python スクリプトを実行する
<a name="integration-github-python"></a>

このセクションでは、AWS Systems Manager コンソールまたは AWS Command Line Interface (AWS CLI) を使用して、GitHub から Python スクリプトを実行する手順を説明します。

## GitHub から Python スクリプトを実行する (コンソール)
<a name="integration-github-python-console"></a>

**GitHub から Python スクリプトを実行する**

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

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

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

1. [**Command document (コマンドのドキュメント)**] リストで、[**`AWS-RunRemoteScript`**] を選択します。

1. [**コマンドのパラメータ**] で、以下の作業を行います。
   + **[ソースタイプ]** で、**[GitHub]** を選択します。
   + [**Source Info (ソース情報)**] ボックスに、ソースにアクセスするために必要な情報を次の形式で入力します。

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

     たとえば次の例では、*complex-script* という名前のスクリプトのディレクトリをダウンロードします。

     ```
     {
         "owner": "TestUser1",
         "repository": "SSMTestDocsRepo",
         "getOptions": "branch:myBranch",
         "path": "scripts/python/complex-script",
         "tokenInfo": "{{ssm-secure:myAccessTokenParam}}"
     }
     ```
**注記**  
`"branch"` は、スクリプトが 以外のブランチに保存されている場合にのみ必要です。`master`  
リポジトリ内の特定の*コミット*にあるバージョンのスクリプトを使用するには、`commitID` ではなく、`getOptions` を指定して `branch` を使用します。以下に例を示します。  
`"getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",`
   + [**Command Line (コマンドライン)**] に、スクリプト実行用のパラメータを入力します。以下はその例です。

     ```
     mainFile.py argument-1 argument-2
     ```

     この例では `mainFile.py` を実行し、`complex-script` ディレクトリ内の他のスクリプトを実行できます。
   + (オプション) [**Working Directory**] (作業ディレクトリ) に、スクリプトをダウンロードして実行する先の、ノードのディレクトリの名前を入力します。
   + (オプション) [**Execution Timeout (実行タイムアウト)**] に、スクリプトコマンドの実行が失敗するまでにシステムが待機する秒数を指定します。

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** (実行)] を選択します。

## AWS CLI を使用して、GitHub から Python スクリプトを実行する
<a name="integration-github-python-cli"></a>

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

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

1. GitHub からスクリプトをダウンロードして実行するには、次のコマンドを実行します。

   ```
   aws ssm send-command --document-name "AWS-RunRemoteScript" --instance-ids "instance-IDs" --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"owner_name\", \"repository\":\"repository_name\", \"path\": \"path_to_script_or_directory"}"],"commandLine":["commands_to_run"]}'
   ```

   以下はその例です。

   ```
   aws ssm send-command --document-name "AWS-RunRemoteScript" --instance-ids "i-02573cafcfEXAMPLE" --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"TestUser1\", \"repository\":\"GitHubTestPublic\", \"path\": \"scripts/python/complex-script\"}"],"commandLine":["mainFile.py argument-1 argument-2 "]}'
   ```

   この例では、`complex-script` というスクリプトのディレクトリをダウンロードします。`commandLine` エントリが `mainFile.py` を実行し、`complex-script` ディレクトリ内の他のスクリプトを実行できます。

# Systems Manager Compliance で Chef InSpec プロファイルを使用する
<a name="integration-chef-inspec"></a>

AWS Systems Manager は [https://www.chef.io/products/chef-inspec](https://www.chef.io/products/chef-inspec) に統合されています。Chef InSpec はオープンソースのテストフレームワークで、人が読み取り可能なプロファイルを作成して GitHub または Amazon Simple Storage Service (Amazon S3) に保存できます。その後、Systems Manager を使用してコンプライアンススキャンを実行し、準拠または非準拠のノードを表示できます。プロファイルは、コンピューティング環境のセキュリティ、コンプライアンス、またはポリシー要件です。例えば、AWS Systems Manager のツールである Compliance でノードをスキャンするとき、次のチェックを実行するプロファイルを作成できます
+ 特定のポートが開いているか閉じているかをチェックします。
+ 特定のアプリケーションが実行中かどうかをチェックします。
+ 特定のパッケージがインストールされているかどうかをチェックします。
+ 特定のプロパティの Windows レジストリキーをチェックします。

Systems Manager で管理している Amazon Elastic Compute Cloud (Amazon EC2) インスタンス用の InSpec プロファイル*のみ*作成できます。オンプレミスサーバーまたは仮想マシン (VM) は、サポートされていません。次のサンプル Chef InSpec プロファイルでは、ポート 22 が開いているかどうかをチェックします。

```
control 'Scan Port' do
impact 10.0
title 'Server: Configure the service port'
desc 'Always specify which port the SSH server should listen to.
Prevent unexpected settings.'
describe sshd_config do
its('Port') { should eq('22') }
end
end
```

InSpec には、チェックや監査コントロールを迅速に書き込みするのに役立つリソースのコレクションが含まれています。InSpec は [InSpec ドメイン固有言語 (DSL)](https://docs.chef.io/inspec/7.0/reference/glossary/#dsl) を使用して、これらのコントロールを Ruby で書き込みます。InSpec ユーザーの大規模なコミュニティで作成されたプロファイルを使用することもできます。例えば、GitHub の [DevSec chef-os-hardening](https://github.com/dev-sec/chef-os-hardening) プロジェクトには、ノードをセキュリティで保護するのに役立つ数多くのプロファイルが含まれています。プロファイルを記述して GitHub または Amazon S3 に保存できます。

## 仕組み
<a name="integration-chef-inspec-how"></a>

ここでは、Compliance で InSpec プロファイルを使用するプロセスの仕組みを説明します。

1. 事前定義された InSpec プロファイルを使用するよう指定するか、独自に作成します。GitHub の[事前定義されたプロファイル](https://github.com/search?p=1&q=topic%3Ainspec+org%3Adev-sec&type=Repositories)を使用して開始できます。独自の InSpec プロファイルを作成する方法については、[Chef InSpec プロファイル](https://www.inspec.io/docs/reference/profiles/)に関するページを参照してください。

1. パブリックまたはプライベートの GitHub リポジトリ、または S3 バケットにプロファイルを保存します。

1. Systems Manager ドキュメント (SSM ドキュメント) `AWS-RunInspecChecks` を使用して、InSpec プロファイルで Compliance を実行します。Compliance スキャンは、AWS Systems Manager のツールである Run Command を使用してオンデマンドスキャンを開始することも、AWS Systems Manager のツールである State Manager を使用して定期的な Compliance スキャンをスケジュールすることもできます。

1. Compliance API または Compliance コンソールを使用して、準拠していないノードを識別します。

**注記**  
以下の情報に注意してください。  
Chef はノードのクライアントを使用してプロファイルを処理します。クライアントをインストールする必要はありません。Systems Manager が SSM ドキュメント `AWS-RunInspecChecks` を実行すると、システムはクライアントがインストールされているかどうかをチェックします。インストールされていない場合、Systems Manager はスキャン中に Chef クライアントをインストールし、スキャンが完了した後にクライアントをアンインストールします。
このトピックで説明するように、SSM ドキュメント `AWS-RunInspecChecks` を実行すると、対象となる各ノードにタイプ `Custom:Inspec` のコンプライアンスエントリが割り当てられます。このコンプライアンスタイプを割り当てるために、ドキュメントは [PutComplianceItems](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PutComplianceItems.html) API オペレーションを呼び出します。

## InSpec コンプライアンススキャンの実行
<a name="integration-chef-inspec-running"></a>

このセクションでは、Systems Manager コンソールと AWS Command Line Interface (AWS CLI) を使用して InSpec コンプライアンススキャンを実行する方法について説明します。コンソールの手順では、State Manager を設定してスキャンを実行する方法を示します。AWS CLI の手順では、Run Command を設定してスキャンを実行する方法を示します。

### State Manager (コンソール) を使用して InSpec コンプライアンススキャンを実行する
<a name="integration-chef-inspec-running-console"></a>

**AWS Systems Manager コンソールを使用して State Manager で InSpec コンプライアンススキャンを実行するには**

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

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

1. **[関連付けの作成]** を選択します。

1. **[関連付けの詳細の指定]** セクションで、名前を入力します。

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

1. **[ドキュメントのバージョン]** リストで、**[ランタイムの最新]** を選択します。

1. **[パラメータ]** セクション内の **[ソースタイプ]** リストで、**[GitHub]** または **[S3]** を選択します。

   **[GitHub]** を選択した場合は、**[ソース情報]** フィールドのパブリックまたはプライベート GitHub リポジトリに InSpec プロファイルへのパスを入力します。Systems Manager チームによって提供された以下の場所からのパブリックプロファイルの例です [https://github.com/awslabs/amazon-ssm/tree/master/Compliance/InSpec/PortCheck](https://github.com/awslabs/amazon-ssm/tree/master/Compliance/InSpec/PortCheck)。

   ```
   {"owner":"awslabs","repository":"amazon-ssm","path":"Compliance/InSpec/PortCheck","getOptions":"branch:master"}
   ```

   **[S3]** を選択した場合は、**[ソース情報]** フィールドの S3 バケットの InSpec プロファイルに有効な URL を入力します。

   Systems Manager が GitHub および Amazon S3 と統合する方法の詳細については、「[GitHub からのスクリプトの実行](integration-remote-scripts.md)」を参照してください。

1. **[ターゲット]** セクションで、タグの指定、インスタンスやエッジデバイスの手動選択、リソースグループの指定により、このオペレーションを実行するマネージドノードを選択します。
**ヒント**  
表示されるはずのマネージドノードが表示されない場合は、トラブルシューティングのヒントについて「[マネージドノードの可用性のトラブルシューティング](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. **[関連付けの作成]** を選択します。システムにより関連付けが作成され、コンプライアンススキャンが自動的に実行されます。

1. スキャンが完了するまで数分待ってから、ナビゲーションペインの **[コンプライアンス]** を選択します。

1. **[対応するマネージドインスタンス]** で、**[コンプライアンスタイプ]** の列が **[Custom:Inspec]** であるノードを見つけます。

1. 非準拠ステータスの詳細を表示するには、ノード ID を選択します。

### Run Command (AWS CLI) を使用した InSpec コンプライアンススキャンの実行
<a name="integration-chef-inspec-running-cli"></a>

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

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

1. 以下のいずれかのコマンドを実行して GitHub または Amazon S3 から InSpec プロファイルを実行します。

    コマンドでは、以下のパラメータを使用します。
   + **sourceType**: GitHub またはAmazon S3
   + **sourceInfo**: GitHub または S3 バケットのいずれかの InSpec プロファイルフォルダへの URL。フォルダには、基本 InSpec ファイル (\$1.yml) およびすべての関連するコントロール (\$1.rb) が含まれている必要があります。

   **GitHub**

   ```
   aws ssm send-command --document-name "AWS-RunInspecChecks" --targets '[{"Key":"tag:tag_name","Values":["tag_value"]}]' --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"owner_name\", \"repository\":\"repository_name\", \"path\": \"Inspec.yml_file"}"]}'
   ```

   以下はその例です。

   ```
   aws ssm send-command --document-name "AWS-RunInspecChecks" --targets '[{"Key":"tag:testEnvironment","Values":["webServers"]}]' --parameters '{"sourceType":["GitHub"],"getOptions":"branch:master","sourceInfo":["{\"owner\":\"awslabs\", \"repository\":\"amazon-ssm\", \"path\": \"Compliance/InSpec/PortCheck\"}"]}'
   ```

   **Amazon S3**

   ```
   aws ssm send-command --document-name "AWS-RunInspecChecks" --targets '[{"Key":"tag:tag_name","Values":["tag_value"]}]' --parameters'{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.aws-api-domain/amzn-s3-demo-bucket/Inspec.yml_file\"}"]}'
   ```

   以下はその例です。

   ```
   aws ssm send-command --document-name "AWS-RunInspecChecks" --targets '[{"Key":"tag:testEnvironment","Values":["webServers"]}]' --parameters'{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.aws-api-domain/amzn-s3-demo-bucket/InSpec/PortCheck.yml\"}"]}' 
   ```

1. コンプライアンススキャンの概要を表示するには、次のコマンドを実行します。

   ```
   aws ssm list-resource-compliance-summaries --filters Key=ComplianceType,Values=Custom:Inspec
   ```

1. 次のコマンドを実行して、準拠していないノードの詳細を表示します。

   ```
   aws ssm list-compliance-items --resource-ids node_ID --resource-type ManagedInstance --filters Key=DocumentName,Values=AWS-RunInspecChecks
   ```

# ServiceNow との統合
<a name="integrations-partners-servicenow"></a>

ServiceNow は、IT サービス、チケットシステム、サポートなど、組織レベルのワークフローを作成および管理するためのクラウドベースのサービス管理システムを提供します。AWS Service Management Connector は、ServiceNow を Systems Manager と統合して、ServiceNow から AWS リソースをプロビジョニング、管理、運用します。AWS Service Management Connector を使用すると、Automation、Change Manager、Incident Manager、および OpsCenter (すべて AWS Systems Manager のツール) と ServiceNow を統合できます。

ServiceNow を使用して、以下のタスクを実行できます。
+ Systems Manager からオートメーションプレイブックを実行します。
+ Systems Manager OpsItems からインシデントを表示、更新、および解決します。
+ Systems Manager OpsCenter を使用して、インシデントなどの運用アイテムを表示および管理します。
+ 事前承認された変更テンプレートのキュレートされたリストから Systems Manager 変更リクエストを表示して実行します。
+ Incident Manager と統合することで、AWS ホストアプリケーションに関連するインシデントの管理と解決を行います。

**注記**  
ServiceNow との統合方法については、「AWS サービスマネジメントコネクタ管理者ガイド」の「[AWS サービスの統合の設定](https://docs.aws.amazon.com/smc/latest/ag/sn-config-integ.html)」を参照してください。