遠隔地から Systems Manager のコマンドドキュメントを実行する - AWS Systems Manager

遠隔地から Systems Manager のコマンドドキュメントを実行する

AWS-RunDocument 事前定義 SSM ドキュメントを使用すると、リモートの場所から AWS Systems Manager (SSM) ドキュメントを実行できます。このドキュメントでは、次の場所に保存されている SSM ドキュメントの実行がサポートされています。

  • GitHub リポジトリ (パブリックおよびプライベート)

  • 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」を参照してください。

開始する前に

リモートドキュメントを実行する前に、次のタスクを完了する必要があります。

  • SSM コマンドドキュメントを作成し、リモートの場所に保存します。詳細については、「SSM ドキュメントの作成」を参照してください。

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

リモートドキュメントを実行する (コンソール)

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

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

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

    -または-

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

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

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

  5. [Command parameters (コマンドパラメータ)] で、[Source Type (ソースタイプ)] としてオプションを選択します。

    • [GitHub] を選択した場合は、[Source Info] 情報を次の形式で指定します。

      { "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/DOC-EXAMPLE-BUCKET/scripts/ruby/mySSMdoc.json"}
    • [SSMDocument] を選択した場合は、[Source Info] 情報を次の形式で指定します。

      {"name": "document_name"}

      以下に例を示します。

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

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

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

    { "action":"Install", "name":"AWSPVDriver" }
  7. [Targets (ターゲット)] セクションで、手動でインスタンスを指定または選択して、このオペレーションを実行するインスタンスを指定します。

    注記

    表示されると予測される Amazon EC2 インスタンスが表示されない場合は、トラブルシューティングのヒントについて「Amazon EC2 マネージドインスタンスの可用性のトラブルシューティング」を参照してください。

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

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

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

  9. [レート制御] の場合:

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

      注記

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

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

  10. (オプション) コマンド出力をファイルに保存する場合は、[Output options] の [Write command output to an S3 bucket] ボックスを選択します。ボックスにバケット名とプレフィックス (フォルダ) 名を入力します。

    注記

    S3 バケットにデータを書き込む機能を許可する S3 アクセス権限は、このタスクを実行する IAM ユーザのものではなく、インスタンスに割り当てられたインスタンスプロファイルのものです。詳細については「Systems Manager の IAM インスタンスプロファイルを作成する」を参照してください。さらに、指定された S3 バケットが別の AWS アカウント にある場合は、インスタンスに関連付けられたインスタンスプロファイルに、そのバケットへの書き込みに必要なアクセス許可があることを確認してください。

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

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

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

注記

Run Command を使用してスクリプトを呼び出すときに使用するサーバーとインスタンスの再起動については、「スクリプトからのマネージドインスタンスの再起動」を参照してください。