AWS Systems Manager
ユーザーガイド

GitHub および Amazon S3 からのスクリプトの実行

このセクションでは、Ansible Playbooks、Python、Ruby、および PowerShell scripts スクリプトなどの、GitHub および Amazon S3 からスクリプトをダウンロードするための AWS-RunRemoteScript 事前定義 SSMドキュメントの使用方法について説明します。このドキュメントを使用することで、スクリプトを手動で Amazon EC2 にしたり SSM ドキュメントにラップしたりする必要はなくなりました。Systems Manager と GitHub および Amazon S3 との統合により、コードとしてのインフラストラクチャが促進され、フリート全体の構成を標準化しながらインスタンスを管理する時間が短縮されます。

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

GitHub からのスクリプトの実行

このセクションでは、プライベートまたはパブリックの GitHub リポジトリからスクリプトをダウンロードして実行する方法について説明します。Ansible Playbooks、Python、Ruby、PowerShell スクリプトなど、さまざまな種類のスクリプトを実行できます。

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

GitHub からのスクリプトの実行に関する以下の重要な詳細をメモします。

  • Systems Manager は、スクリプトがインスタンス上で実行可能かどうかを確認しません。スクリプトをダウンロードして実行する前に、必要なソフトウェアがインスタンスにインストールされていることを確認する必要があります。または、コマンドの実行またはステートマネージャーのいずれかを使用してソフトウェアをインストールした複合ドキュメントを作成し、スクリプトをダウンロードして実行することもできます。

  • お客様には、すべての GitHub 要件が満たされていることを確認する責任があります。これには、必要に応じてアクセストークンを更新することが含まれます。また、認証されたリクエストまたは認証されていないリクエストの数が超過しないようにする必要もあります。詳細については、GitHub のドキュメントを参照してください。

GitHub からの Ansible プレイブックの実行

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

開始する前に

プライベート GitHub リポジトリに保存されているスクリプトを実行する場合は、GitHub セキュリティアクセストークンの Systems Manager SecureString パラメータを作成する必要があります。SSH 経由でトークンを手動で渡すことで、プライベート GitHub リポジトリのスクリプトにアクセスすることはできません。アクセストークンは Systems Manager SecureString パラメータとして渡す必要があります。SecureString パラメータの作成の詳細については、「Systems Manager パラメータの作成」を参照してください。

GitHub から Ansible プレイブックを実行する (コンソール)

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

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

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

    -または-

    AWS Systems Manager ホームページが最初に開く場合は、メニューアイコン ( ) を選択してナビゲーションペインを開き、[Run Command] を選択します。

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

  4. [Command document] リストで、[AWS-RunRemoteScript] を選択します。

  5. [Targets (ターゲット)] セクションで、手動でインスタンスを指定または選択して、このオペレーションを実行するインスタンスを指定します。

    注記

    インスタンスを手動で選択することにしたが、そのインスタンスがリストに表示されない場合、トラブルシューティングのヒントについては、「インスタンスの場所」を参照してください。

  6. [Command parameters] で、以下の作業を行います。

    • [Source Type (ソースタイプ)] では、GitHub を選択します。

    • [Source Info (ソース情報)] ボックスに、ソースにアクセスするために必要な情報を次の形式で入力します。

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

      次に例を示します。

      {"owner":"TestUser1", "repository": "GitHubPrivateTest", "path": "scripts/webserver.yml", "tokenInfo":"{{ssm-secure:mySecureStringParameter}}" }

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

    • [Command Line] フィールドに、スクリプトの実行に必要なパラメータを入力します。例を示します。

      ansible-playbook -i “localhost,” --check -c local webserver.yml
    • (オプション) [Working Directory] に、スクリプトをダウンロードして実行するインスタンスのディレクトリ名を入力します。

    • (オプション) [Execution Timeout] に、スクリプトコマンドの実行を失敗とするまでにシステムが待機する秒数を指定します。

  7. [その他のパラメータ] で、以下の操作を行います。

    • [コメント] に、このコマンドに関する情報を入力します。

    • [タイムアウト (秒)] に、コマンドの実行全体が失敗するまでにシステムが待機する秒数を指定します。

  8. (オプション) [レートの制御] で、以下の操作を行います。

    • [同時実行] で、コマンドを同時に実行するインスタンスの数または割合 (%) を指定します。

      注記

      マネージドインスタンスに適用されるタグを指定するか、AWS リソースグループを指定してターゲットを選択し、ターゲットとなるインスタンスの数が不明な場合は、割合 (%) を指定してドキュメントを同時に実行できるインスタンスの数を制限します。

    • [エラーのしきい値] で、インスタンスの数または割合 (%) で失敗した後で他のインスタンスでのコマンドの実行をいつ停止するか指定します。たとえば、3 つのエラーを指定した場合、4 番目のエラーが受信されると、Systems Manager はコマンドの送信を停止します。コマンドを処理しているインスタンスもエラーを送信する可能性があります。

  9. [出力オプション] セクションで、コマンド出力をファイルに保存する場合は、[コマンド出力の Amazon S3 バケットへの書き込み] を選択します。ボックスにバケット名とプレフィックス名 ()フォルダー を入力します。

    注記

    S3 バケットにデータを書き込む機能を許可する S3 アクセス許可は、このタスクを実行する IAM ユーザーのものではなく、インスタンスに割り当てられたインスタンスプロファイルのものです。詳細については、「Systems Manager の IAM インスタンスプロファイルの作成」を参照してください。

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

    コマンドの実行の Amazon SNS 通知の設定の詳細については、「AWS Systems Manager の Amazon SNS 通知の設定」を参照してください。

  11. [実行] を選択します。

AWS CLI コンソールを使用して、GitHub から Ansible プレイブックを実行する

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

    詳細については、「AWS CLI をインストールまたはアップグレードするには:」を参照してください。

  2. 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"]}'

    例を示します。

    aws ssm send-command --document-name "AWS-RunRemoteScript" --instance-ids "i-1234abcd" --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 スクリプトの実行

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

GitHub から Python スクリプトを実行する (コンソール)

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

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

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

    -または-

    AWS Systems Manager ホームページが最初に開く場合は、メニューアイコン ( ) を選択してナビゲーションペインを開き、[Run Command] を選択します。

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

  4. [Command document] リストで、[AWS-RunRemoteScript] を選択します。

  5. [Targets (ターゲット)] セクションで、手動でインスタンスを指定または選択して、このオペレーションを実行するインスタンスを指定します。

    注記

    インスタンスを手動で選択することにしたが、そのインスタンスがリストに表示されない場合、トラブルシューティングのヒントについては、「インスタンスの場所」を参照してください。

  6. [Command parameters] で、以下の作業を行います。

    • [Source Type (ソースタイプ)] では、GitHub を選択します。

    • [Source Info] テキストボックスに、ソースにアクセスするために必要な情報を次の形式で入力します。

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

      次に例を示します。

      {"owner":"TestUser1", "repository":"GitHubPrivateTest", "path": "scripts/python/complex-script","tokenInfo":"{{ssm-secure:mySecureStringParameter}}"}

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

    • [Command Line] フィールドに、スクリプトの実行に必要なパラメータを入力します。例を示します。

      mainFile.py argument-1 argument-2

      この例では、mainFile.py が実行され、複合スクリプトディレクトリ内の他のスクリプトを実行できます。

    • (オプション) [Working Directory] に、スクリプトをダウンロードして実行するインスタンスのディレクトリ名を入力します。

    • (オプション) [Execution Timeout] に、スクリプトコマンドの実行を失敗とするまでにシステムが待機する秒数を指定します。

  7. [その他のパラメータ] で、以下の操作を行います。

    • [コメント] に、このコマンドに関する情報を入力します。

    • [タイムアウト (秒)] に、コマンドの実行全体が失敗するまでにシステムが待機する秒数を指定します。

  8. (オプション) [レートの制御] で、以下の操作を行います。

    • [同時実行] で、コマンドを同時に実行するインスタンスの数または割合 (%) を指定します。

      注記

      マネージドインスタンスに適用されるタグを指定するか、AWS リソースグループを指定してターゲットを選択し、ターゲットとなるインスタンスの数が不明な場合は、割合 (%) を指定してドキュメントを同時に実行できるインスタンスの数を制限します。

    • [エラーのしきい値] で、インスタンスの数または割合 (%) で失敗した後で他のインスタンスでのコマンドの実行をいつ停止するか指定します。たとえば、3 つのエラーを指定した場合、4 番目のエラーが受信されると、Systems Manager はコマンドの送信を停止します。コマンドを処理しているインスタンスもエラーを送信する可能性があります。

  9. [出力オプション] セクションで、コマンド出力をファイルに保存する場合は、[コマンド出力の Amazon S3 バケットへの書き込み] を選択します。ボックスにバケット名とプレフィックス名 ()フォルダー を入力します。

    注記

    S3 バケットにデータを書き込む機能を許可する S3 アクセス許可は、このタスクを実行する IAM ユーザーのものではなく、インスタンスに割り当てられたインスタンスプロファイルのものです。詳細については、「Systems Manager の IAM インスタンスプロファイルの作成」を参照してください。

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

    コマンドの実行の Amazon SNS 通知の設定の詳細については、「AWS Systems Manager の Amazon SNS 通知の設定」を参照してください。

  11. [実行] を選択します。

AWS CLI を使用して、GitHub から Python スクリプトを実行する

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

    詳細については、「AWS CLI をインストールまたはアップグレードするには:」を参照してください。

  2. 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-abcd1234" --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 を実行します。これは、複合スクリプトディレクトリ内で他のスクリプトを実行することができます。

Amazon S3 からのスクリプトの実行

このセクションでは、Amazon S3 からスクリプトをダウンロードして実行する方法について説明します。Ansible Playbooks、Python、Ruby、Shell、PowerShell など、さまざまな種類のスクリプトを実行できます。

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

Amazon S3 からのスクリプトの実行に関する以下の重要な詳細をメモします。

  • Systems Manager は、スクリプトがインスタンス上で実行可能かどうかを確認しません。スクリプトをダウンロードして実行する前に、必要なソフトウェアがインスタンスにインストールされていることを確認する必要があります。または、コマンドの実行またはステートマネージャーのいずれかを使用してソフトウェアをインストールした複合ドキュメントを作成し、スクリプトをダウンロードして実行することもできます。

  • AWS Identity and Access Management (IAM) ユーザーアカウント、ロール、またはグループに S3 バケットから読み取るアクセス権限があることを確認します。

Amazon S3 からの Ruby スクリプトの実行

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

Amazon S3 から Ruby スクリプトを実行する (コンソール)

Amazon S3 から Ruby スクリプトを実行する

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

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

    -または-

    AWS Systems Manager ホームページが最初に開く場合は、メニューアイコン ( ) を選択してナビゲーションペインを開き、[Run Command] を選択します。

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

  4. [Command document] リストで、[AWS-RunRemoteScript] を選択します。

  5. [Targets (ターゲット)] セクションで、手動でインスタンスを指定または選択して、このオペレーションを実行するインスタンスを指定します。

    注記

    インスタンスを手動で選択することにしたが、そのインスタンスがリストに表示されない場合、トラブルシューティングのヒントについては、「インスタンスの場所」を参照してください。

  6. [Command parameters] で、以下の作業を行います。

    • [Source Type] で、[S3] を選択します。

    • [Source Info] テキストボックスに、ソースにアクセスするために必要な情報を次の形式で入力します。

      {"path":"https://s3.amazonaws.com/path_to_script"}

      次に例を示します。

      {"path":"https://s3.amazonaws.com/rubytest/scripts/ruby/helloWorld.rb"}
    • [Command Line] フィールドに、スクリプトの実行に必要なパラメータを入力します。例を示します。

      helloWorld.rb argument-1 argument-2
    • (オプション) [Working Directory] に、スクリプトをダウンロードして実行するインスタンスのディレクトリ名を入力します。

    • (オプション) [Execution Timeout] に、スクリプトコマンドの実行を失敗とするまでにシステムが待機する秒数を指定します。

  7. [その他のパラメータ] で、以下の操作を行います。

    • [コメント] に、このコマンドに関する情報を入力します。

    • [タイムアウト (秒)] に、コマンドの実行全体が失敗するまでにシステムが待機する秒数を指定します。

  8. (オプション) [レートの制御] で、以下の操作を行います。

    • [同時実行] で、コマンドを同時に実行するインスタンスの数または割合 (%) を指定します。

      注記

      マネージドインスタンスに適用されるタグを指定するか、AWS リソースグループを指定してターゲットを選択し、ターゲットとなるインスタンスの数が不明な場合は、割合 (%) を指定してドキュメントを同時に実行できるインスタンスの数を制限します。

    • [エラーのしきい値] で、インスタンスの数または割合 (%) で失敗した後で他のインスタンスでのコマンドの実行をいつ停止するか指定します。たとえば、3 つのエラーを指定した場合、4 番目のエラーが受信されると、Systems Manager はコマンドの送信を停止します。コマンドを処理しているインスタンスもエラーを送信する可能性があります。

  9. [出力オプション] セクションで、コマンド出力をファイルに保存する場合は、[コマンド出力の Amazon S3 バケットへの書き込み] を選択します。ボックスにバケット名とプレフィックス名 ()フォルダー を入力します。

    注記

    S3 バケットにデータを書き込む機能を許可する S3 アクセス許可は、このタスクを実行する IAM ユーザーのものではなく、インスタンスに割り当てられたインスタンスプロファイルのものです。詳細については、「Systems Manager の IAM インスタンスプロファイルの作成」を参照してください。

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

    コマンドの実行の Amazon SNS 通知の設定の詳細については、「AWS Systems Manager の Amazon SNS 通知の設定」を参照してください。

  11. [実行] を選択します。

AWS CLI を使用して Amazon S3 から Ruby スクリプトを実行する

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

    詳細については、「AWS CLI をインストールまたはアップグレードするには:」を参照してください。

  2. ローカルマシンのオペレーティングシステムのタイプに応じて、次のいずれかのコマンドを実行し、Amazon S3 からスクリプトをダウンロードして実行します (Windows バージョンには、コマンドラインツールからコマンドを実行するために必要なエスケープ文字 (「/」) が含まれます)。

    Windows ローカルマシン

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=instance-IDs" --parameters "sourceType"="S3",sourceInfo='{\"path\":\"https://s3.amazonaws.com/path_to_script\"}',"commandLine"="script_name_and_arguments"

    例を示します。

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=i-1234567890abcdef0" --parameters "sourceType"="S3",sourceInfo='{\"path\":\"https://s3.amazonaws.com/RubyTest/scripts/ruby/helloWorld.rb\"}',"commandLine"="helloWorld.rb argument-1 argument-2"

    Linux ローカルマシン

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=instance-IDs" --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.amazonaws.com/path_to_script\"}"],"commandLine":["script_name_and_arguments"]}'

    例を示します。

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=i-1234567890abcdef0" --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.amazonaws.com/RubyTest/scripts/ruby/helloWorld.rb\"}"],"commandLine":["helloWorld.rb argument-1 argument-2"]}'

Amazon S3 からのシェルスクリプトの実行

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

Amazon S3 から Shell スクリプトを実行する (コンソール)

Amazon S3 から Shell スクリプトを実行する

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

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

    -または-

    AWS Systems Manager ホームページが最初に開く場合は、メニューアイコン ( ) を選択してナビゲーションペインを開き、[Run Command] を選択します。

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

  4. [Command document] リストで、[AWS-RunRemoteScript] を選択します。

  5. [Targets (ターゲット)] セクションで、手動でインスタンスを指定または選択して、このオペレーションを実行するインスタンスを指定します。

    注記

    インスタンスを手動で選択することにしたが、そのインスタンスがリストに表示されない場合、トラブルシューティングのヒントについては、「インスタンスの場所」を参照してください。

  6. [Command parameters] で、以下の作業を行います。

    • [Source Type] で、[S3] を選択します。

    • [Source Info] テキストボックスに、ソースにアクセスするために必要な情報を次の形式で入力します。

      {"path":"https://s3.amazonaws.com/path_to_script"}

      次に例を示します。

      {"path":"https://s3.amazonaws.com/shelltest/scripts/shell/helloWorld.sh"}
    • [Command Line] フィールドに、スクリプトの実行に必要なパラメータを入力します。例を示します。

      helloWorld.sh argument-1 argument-2
    • (オプション) [Working Directory] に、スクリプトをダウンロードして実行するインスタンスのディレクトリ名を入力します。

    • (オプション) [Execution Timeout] に、スクリプトコマンドの実行を失敗とするまでにシステムが待機する秒数を指定します。

  7. [その他のパラメータ] で、以下の操作を行います。

    • [コメント] に、このコマンドに関する情報を入力します。

    • [タイムアウト (秒)] に、コマンドの実行全体が失敗するまでにシステムが待機する秒数を指定します。

  8. (オプション) [レートの制御] で、以下の操作を行います。

    • [同時実行] で、コマンドを同時に実行するインスタンスの数または割合 (%) を指定します。

      注記

      マネージドインスタンスに適用されるタグを指定するか、AWS リソースグループを指定してターゲットを選択し、ターゲットとなるインスタンスの数が不明な場合は、割合 (%) を指定してドキュメントを同時に実行できるインスタンスの数を制限します。

    • [エラーのしきい値] で、インスタンスの数または割合 (%) で失敗した後で他のインスタンスでのコマンドの実行をいつ停止するか指定します。たとえば、3 つのエラーを指定した場合、4 番目のエラーが受信されると、Systems Manager はコマンドの送信を停止します。コマンドを処理しているインスタンスもエラーを送信する可能性があります。

  9. [出力オプション] セクションで、コマンド出力をファイルに保存する場合は、[コマンド出力の Amazon S3 バケットへの書き込み] を選択します。ボックスにバケット名とプレフィックス名 ()フォルダー を入力します。

    注記

    S3 バケットにデータを書き込む機能を許可する S3 アクセス許可は、このタスクを実行する IAM ユーザーのものではなく、インスタンスに割り当てられたインスタンスプロファイルのものです。詳細については、「Systems Manager の IAM インスタンスプロファイルの作成」を参照してください。

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

    コマンドの実行の Amazon SNS 通知の設定の詳細については、「AWS Systems Manager の Amazon SNS 通知の設定」を参照してください。

  11. [実行] を選択します。

AWS CLI を使用して Amazon S3 からシェルスクリプトを実行する

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

    詳細については、「AWS CLI をインストールまたはアップグレードするには:」を参照してください。

  2. ローカルマシンのオペレーティングシステムのタイプに応じて、次のいずれかのコマンドを実行し、Amazon S3 からスクリプトをダウンロードして実行します (Windows バージョンには、コマンドラインツールからコマンドを実行するために必要なエスケープ文字 (「\」) が含まれます)。

    Windows ローカルマシン

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=instance-IDs" --parameters "sourceType"="S3",sourceInfo='{\"path\":\"https://s3.amazonaws.com/path_to_script\"}',"commandLine"="script_name_and_arguments"

    例を示します。

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=i-1234567890abcdef0" --parameters "sourceType"="S3",sourceInfo='{\"path\":\"https://s3.amazonaws.com/ShellTest/scripts/shell/helloWorld.sh\"}',"commandLine"="helloWorld.sh argument-1 argument-2"

    Linux ローカルマシン

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=instance-IDs" --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.amazonaws.com/path_to_script\"}"],"commandLine":["script_name_and_arguments"]}'

    例を示します。

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=i-1234567890abcdef0" --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.amazonaws.com/ShellTest/scripts/shell/helloWorld.sh\"}"],"commandLine":["helloWorld.sh argument-1 argument-2"]}'

Amazon S3 から PowerShell スクリプトを実行する

このセクションでは、EC2 コンソールまたは AWS CLI を使用して、Amazon S3 から PowerShell スクリプトを実行する手順を説明します。

Amazon S3 から PowerShell スクリプトを実行する (コンソール)

Amazon S3 からの PowerShell スクリプトの実行

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

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

    -または-

    AWS Systems Manager ホームページが最初に開く場合は、メニューアイコン ( ) を選択してナビゲーションペインを開き、[Run Command] を選択します。

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

  4. [Command document] リストで、[AWS-RunRemoteScript] を選択します。

  5. [Targets (ターゲット)] セクションで、手動でインスタンスを指定または選択して、このオペレーションを実行するインスタンスを指定します。

    注記

    インスタンスを手動で選択することにしたが、そのインスタンスがリストに表示されない場合、トラブルシューティングのヒントについては、「インスタンスの場所」を参照してください。

  6. [Command parameters] で、以下の作業を行います。

    • [Source Type] で、[S3] を選択します。

    • [Source Info] テキストボックスに、ソースにアクセスするために必要な情報を次の形式で入力します。

      {"path": "https://s3.amazonaws.com/path_to_script"}

      次に例を示します。

      {"path": "https://s3.amazonaws.com/PowerShellTest/powershell/helloPowershell.ps1"}
    • [Command Line] フィールドに、スクリプトの実行に必要なパラメータを入力します。例を示します。

      helloPowershell.ps1 argument-1 argument-2
    • (オプション) [Working Directory] に、スクリプトをダウンロードして実行するインスタンスのディレクトリ名を入力します。

    • (オプション) [Execution Timeout] に、スクリプトコマンドの実行を失敗とするまでにシステムが待機する秒数を指定します。

  7. [その他のパラメータ] で、以下の操作を行います。

    • [コメント] に、このコマンドに関する情報を入力します。

    • [タイムアウト (秒)] に、コマンドの実行全体が失敗するまでにシステムが待機する秒数を指定します。

  8. (オプション) [レートの制御] で、以下の操作を行います。

    • [同時実行] で、コマンドを同時に実行するインスタンスの数または割合 (%) を指定します。

      注記

      マネージドインスタンスに適用されるタグを指定するか、AWS リソースグループを指定してターゲットを選択し、ターゲットとなるインスタンスの数が不明な場合は、割合 (%) を指定してドキュメントを同時に実行できるインスタンスの数を制限します。

    • [エラーのしきい値] で、インスタンスの数または割合 (%) で失敗した後で他のインスタンスでのコマンドの実行をいつ停止するか指定します。たとえば、3 つのエラーを指定した場合、4 番目のエラーが受信されると、Systems Manager はコマンドの送信を停止します。コマンドを処理しているインスタンスもエラーを送信する可能性があります。

  9. [出力オプション] セクションで、コマンド出力をファイルに保存する場合は、[コマンド出力の Amazon S3 バケットへの書き込み] を選択します。ボックスにバケット名とプレフィックス名 ()フォルダー を入力します。

    注記

    S3 バケットにデータを書き込む機能を許可する S3 アクセス許可は、このタスクを実行する IAM ユーザーのものではなく、インスタンスに割り当てられたインスタンスプロファイルのものです。詳細については、「Systems Manager の IAM インスタンスプロファイルの作成」を参照してください。

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

    コマンドの実行の Amazon SNS 通知の設定の詳細については、「AWS Systems Manager の Amazon SNS 通知の設定」を参照してください。

  11. [実行] を選択します。

AWS CLI を使用して S3 から PowerShell スクリプトを実行する

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

    詳細については、「AWS CLI をインストールまたはアップグレードするには:」を参照してください。

  2. ローカルマシンのオペレーティングシステムのタイプに応じて、次のいずれかのコマンドを実行し、Amazon S3 からスクリプトをダウンロードして実行します (Windows バージョンには、コマンドラインツールからコマンドを実行するために必要なエスケープ文字 (「\」) が含まれます)。

    Windows ローカルマシン

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=instance-IDs" --parameters "sourceType"="S3",sourceInfo='{\"path\":\"https://s3.amazonaws.com/path_to_script\"}',"commandLine"="script_name_and_arguments"

    例を示します。

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=i-1234567890abcdef0" --parameters "sourceType"="S3",sourceInfo='{\"path\":\"https://s3.amazonaws.com/PowerShellTest/scripts/powershell/helloWorld.ps1\"}',"commandLine"="helloWorld.ps1 argument-1 argument-2"

    Linux ローカルマシン

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=instance-IDs" --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.amazonaws.com/path_to_script\"}"],"commandLine":["script_name_and_arguments"]}'

    例を示します。

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=i-1234567890abcdef0" --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.amazonaws.com/PowerShellTest/scripts/powershell/helloWorld.ps1\"}"],"commandLine":["helloWorld.ps1 argument-1 argument-2"]}'