GitHub から Python スクリプトを実行する - AWS Systems Manager

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

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

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

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

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

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

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

  5. [コマンドのパラメータ] で、以下の作業を行います。

    • [ソースタイプ] で、[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 (実行タイムアウト)] に、スクリプトコマンドの実行が失敗するまでにシステムが待機する秒数を指定します。

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

    ヒント

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

  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 (実行)] を選択します。

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

  1. まだ AWS Command Line Interface (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-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 ディレクトリ内の他のスクリプトを実行できます。