遠隔で ドキュメントを実行する - AWS Systems Manager

遠隔で ドキュメントを実行する

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

開始する前に

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

  • 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] を選択します。

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

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

  5. [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/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] (ターゲット) セクションで、タグの指定、インスタンスやエッジデバイスの手動選択、リソースグループの指定により、このオペレーションを実行するマネージドノードを選択します。

    ヒント

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

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

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

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

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

    • [同時実行数] の場合、コマンドを同時に実行するマネージドノードの数または割合を指定します。

      注記

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

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

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

    注記

    S3 バケットにデータを書き込む機能を許可する S3 許可は、このタスクを実行する IAM ユーザーのものではなく、インスタンスに割り当てられたインスタンスプロファイル (EC2 インスタンスの場合) または IAM サービスロール (ハイブリッドアクティベーションマシン) のものです。詳細については、「Systems Manager に必要なインスタンスのアクセス許可を設定する」または「ハイブリッド環境に IAM サービスロールを作成する」を参照してください。さらに、指定された S3 バケットが別の AWS アカウント にある場合は、マネージドノードに関連付けられたインスタンスプロファイルまたは IAM サービスロールが、そのバケットへの書き込みに必要なアクセス許可があることを確認してください。

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

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

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

注記

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