Amazon Elastic Container Service
開発者ガイド (API バージョン 2014-11-13)

コンテナインスタンスのリモート管理

Amazon EC2 Run Command 機能を使用すると、Amazon ECS コンテナインスタンスの設定を安全にリモートで管理できます。また、ローカルでインスタンスにログオンする必要なく、一般的な管理タスクを簡単な方法で実行できます。複数のコンテナインスタンスでコマンドを同時に実行することで、クラスター全体の設定の変更を管理できます。Run Command は各コマンドのステータスと結果をレポートします。

ここでは、Run Command を使用して実行できるタスクのタイプについていくつか例を示します。

  • パッケージをインストールまたはアンインストールする。

  • セキュリティ更新プログラムを実行する。

  • Docker イメージをクリーンアップする。

  • サービスを停止または起動する。

  • システムリソースを表示する。

  • ログファイルを表示する。

  • ファイルオペレーションを実行する。

このトピックは、Amazon ECS-optimized AMI の Linux バリアントでの Run Command の基本的なインストールと、いくつかの簡単なユースケースを取り上げたものです。Run Command を網羅するものではありません。Run Command の詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイド の「Amazon EC2 インスタンスをリモートで管理する」を参照してください。

Run Command に関する IAM ポリシー

Run Command を使用してコンテナインスタンスにコマンドを送信する前に、Amazon EC2 Systems Manager (SSM) API へのアクセスを許可する IAM ポリシーを ecsInstanceRole にアタッチする必要があります。以下の手順では、コンテナインスタンスロールに AmazonEC2RoleforSSM 管理ポリシーをアタッチして、このロールにより起動したインスタンスで Run Command を使用できるようにする方法について説明します。

ecsInstanceRoleAmazonEC2RoleforSSM ポリシーをアタッチするには

  1. https://console.aws.amazon.com/iam/ にある IAM コンソールを開きます。

  2. ナビゲーションペインで [Roles (ロール) ] を選択します。

  3. ecsInstanceRole を選択します。ロールが存在しない場合は、「Amazon ECS コンテナインスタンス IAM ロール」の手順に従ってロールを作成します。

  4. [Permissions] を選択します。

  5. [Managed Policies] セクションで、[Attach Policy] を選択します。

  6. アタッチに使用可能なポリシーを絞り込むには、[フィルター] に「AmazonEC2RoleforSSM」と入力します。

  7. [AmazonEC2RoleforSSM] ポリシーのチェックボックスをオンにし、[ポリシーのアタッチ] を選択します。

Amazon ECS-Optimized AMI への SSM エージェントのインストール

ecsInstanceRoleAmazonEC2RoleforSSM ポリシーをアタッチしたら、コンテナインスタンスに SSM エージェントをインストールできます。SSM エージェントは Run Command 要求を処理し、要求に指定されたインスタンスを設定します。以下の手順を使用して、Amazon ECS-optimized AMI コンテナインスタンスに SSM エージェントをインストールします。

既存の Amazon ECS-optimized AMI コンテナインスタンスに SSM エージェントを手動でインストールするには

  1. コンテナインスタンスに接続します。

  2. SSM エージェント RPM をインストールします。SSM エージェントは Amazon ECS が利用可能なすべてのリージョンで使用できます。各リージョンには、リージョン固有のダウンロード URL があります。以下のコマンド例は Amazon ECS がサポートするすべてのリージョンで利用できます。コンテナインスタンスのリージョンを置き換えることにより、RPM ダウンロードに伴うリージョン間のデータ転送のコストを回避します。

    [ec2-user ~]$ sudo yum install -y https://amazon-ssm-us-east-1.s3.amazonaws.com/latest/linux_amd64/amazon-ssm-agent.rpm

Amazon EC2 ユーザーデータを使用して新しいインスタンスの起動時に SSM エージェントをインストールするには

  • Amazon ECS コンテナインスタンスの起動」の手順に従って 1 つ以上のコンテナインスタンスを起動します。ただし「ステップ 6.g」では、以下のユーザーデータスクリプトをコピーし、[User data] フィールドに貼り付けます。また、このユーザーデータスクリプトのコマンドを、他のタスク (インスタンスの登録先のクラスター名の設定など) を実行する別の既存のスクリプトに追加することもできます。

    注記

    以下のユーザーデータスクリプトは、jq JSON パーサーをインストールし、そのパーサーを使用してコンテナインスタンスのリージョンを判断します。その後、SSM エージェントをダウンロードし、インストールします。

    #!/bin/bash # Install JQ JSON parser yum install -y jq # Get the current region from the instance metadata region=$(curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | jq -r .region) # Install the SSM agent RPM yum install -y https://amazon-ssm-$region.s3.amazonaws.com/latest/linux_amd64/amazon-ssm-agent.rpm

Run Command の使用

AmazonEC2RoleforSSM ポリシーを ecsInstanceRole にアタッチし、コンテナインスタンスに SSM エージェントをインストールしたら、Run Command を使用してコンテナインスタンスにコマンドを送信できます。Linux インスタンス用 Amazon EC2 ユーザーガイド の次のトピックでは、インスタンスでコマンドとシェルスクリプトを実行し、結果の出力を表示する方法について説明します。

Run Command の詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイド の「Amazon EC2 インスタンスをリモートで管理する」を参照してください。

例: Run Command を使用してコンテナインスタンスソフトウェアを更新するには

Run Command の一般的ユースケースは、コンテナインスタンスのフリート全体でインスタンスソフトウェアを一度に更新することです。

  1. ecsInstanceRole に AmazonEC2RoleforSSM ポリシーをアタッチします。

  2. コンテナインスタンスに SSM エージェントをインストールします。詳細については、「Amazon ECS-Optimized AMI への SSM エージェントのインストール」を参照してください。

  3. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  4. 左のナビゲーションペインで [コマンド]、[コマンドを実行] を選択します。

  5. [Command document] で、AWS-RunShellScript を選択します。

  6. [Target instances (ターゲットインスタンス)] セクションで [インスタンスの選択] を選択し、更新コマンドを送信するコンテナインスタンスのチェックボックスをオンにします。

  7. [Commands] セクションで、コンテナインスタンスに送信するコマンドを入力します。この例では、以下のコマンドはインスタンスソフトウェアを更新します。

    $ yum update -y
  8. [Run] を選択して、指定したインスタンスにコマンドを送信します。

  9. (オプション) [結果を表示] を選択します。

  10. (オプション) コマンドの出力を表示するには、最近実行したコマンドのリストからコマンドを選択します。

    
                        Run Command コマンドのリスト
  11. (オプション) [出力]、[出力の表示] を選択します。以下の画像では、yum update コマンドを実行した場合のコンテナインスタンスの出力のスニペットを示しています。

    注記

    出力を Amazon S3 バケットに保存するようにコマンドを設定しない限り、コマンドの出力は 2,500 文字で切り捨てられます。

    
                        Run Command コマンドの出力