

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

# 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` ディレクトリ内の他のスクリプトを実行できます。