Amazon S3 からのスクリプトの実行 - AWS Systems Manager

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

このセクションでは、Amazon Simple Storage Service (Amazon S3) からスクリプトをダウンロードして実行する方法について説明します。次のトピックでは、Amazon S3 に関する情報と用語について説明します。Amazon S3 の詳細については、「Amazon S3 とは」を参照してください。Ansible Playbooks、Python、Ruby、Shell、 など、さまざまなタイプのスクリプトを実行できます PowerShell。

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

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

  • Systems Manager は、スクリプトがノードで実行できるかどうかを検証しません。スクリプトをダウンロードして実行する前に、必要なソフトウェアがノードにインストールされていることを確認してください。または、 AWS Systems Managerの機能である Run Command または State Manager のいずれかを使用してソフトウェアをインストールした複合ドキュメントを作成し、スクリプトをダウンロードして実行することもできます。

  • ユーザー、ロール、またはグループに、S3 バケットからの読み取りに必要な AWS Identity and Access Management (IAM) アクセス許可が付与されていることを確認します。

  • Amazon Elastic Compute Cloud (Amazon EC2) インスタンス上のインスタンスプロファイルに、s3:ListBucket および s3:GetObject アクセス許可があることを確認します。インスタンスプロファイルにこれらのアクセス許可がない場合、システムは S3 バケットからのスクリプトのダウンロードに失敗します。詳細については、IAM ユーザーガイドの「インスタンスプロファイルの使用」を参照してください。

Amazon S3 からシェルスクリプトを実行する

以下の情報には、 AWS Systems Manager コンソールまたは () を使用して Amazon Simple Storage Service (Amazon S3) からスクリプトを実行するための手順が含まれています AWS Command Line Interface AWS CLI。例ではシェルスクリプトを使用していますが、他のタイプのスクリプトに置き換えることができます。

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

Amazon S3 からシェルスクリプトを実行する
  1. https://console.aws.amazon.com/systems-manager/ で AWS Systems Manager コンソールを開きます。

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

    -または-

    AWS Systems Manager ホームページが最初に開いたら、メニューアイコン (      The menu icon   ) を選択してナビゲーションペインを開き、 を選択しますRun Command

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

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

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

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

    • [Source Info (ソース情報)] テキストボックスに、ソースにアクセスするために必要な情報を次の形式で入力します。各リソースプレースホルダーの例をユーザー自身の情報に置き換えます。

      注記

      https://s3.aws-api-domain をバケットの URL に置き換えます。Amazon S3 のバケット URL は [Objects] (オブジェクト) タブでコピーできます。

      {"path":"https://s3.aws-api-domain/path to script"}

      次に例を示します。

      {"path":"https://mytestbucket.s3.us-west-2.amazonaws.com/scripts/shell/helloWorld.sh"}
    • [コマンドライン] フィールドに、スクリプトの実行に必要なパラメータを入力します。以下はその例です。

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

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

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

    ヒント

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

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

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

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

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

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

      注記

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

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

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

    注記

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

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

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

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

Amazon S3 からシェルスクリプトを実行する (コマンドライン)

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

    詳細については、「AWS CLIの最新バージョンをインストールまたは更新します。」を参照してください。

  2. 以下のコマンドを実行します。各リソースプレースホルダーの例をユーザー自身の情報に置き換えます。

    注記

    https://s3.aws-api-domain をバケットの URL に置き換えます。Amazon S3 のバケット URL は [Objects] (オブジェクト) タブでコピーできます。

    Linux & macOS
    aws ssm send-command \ --document-name "AWS-RunRemoteScript" \ --output-s3-bucket-name "bucket-name" \ --output-s3-key-prefix "key-prefix" \ --targets "Key=InstanceIds,Values=instance-id" \ --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.aws-api-domain/script path\"}"],"commandLine":["script name and arguments"]}'
    Windows
    aws ssm send-command ^ --document-name "AWS-RunRemoteScript" ^ --output-s3-bucket-name "bucket-name" ^ --output-s3-key-prefix "key-prefix" ^ --targets "Key=InstanceIds,Values=instance-id" ^ --parameters "sourceType"="S3",sourceInfo='{\"path\":\"https://s3.aws-api-domain/script path\"}',"commandLine"="script name and arguments"
    PowerShell
    Send-SSMCommand ` -DocumentName "AWS-RunRemoteScript" ` -OutputS3BucketName "bucket-name" ` -OutputS3KeyPrefix "key-prefix" ` -Target @{Key="InstanceIds";Values=@("instance-id")} ` -Parameter @{ sourceType="S3";sourceInfo='{"path": "https://s3.aws-api-domain/script path"}',; "commandLine"="script name and arguments"}