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

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

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

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

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

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

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

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

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

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

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

このトピックは、Amazon ECS に最適化された AMI での 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. [Filter] に「AmazonEC2RoleforSSM」と入力して、使用可能なポリシーを絞り込みます。

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

Amazon ECS に最適化された AMI への SSM エージェントのインストール

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

Amazon ECS に最適化された既存の 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 つ以上のコンテナインスタンスを起動します。ただし「ステップ 7」では、以下のユーザーデータスクリプトをコピーし、[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 を使用してコンテナインスタンスソフトウェアを更新するには

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

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

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

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

  4. 左側のナビゲーションで [Commands] を選択します。

  5. [Run a command] を選択します。

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

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

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

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

  10. (オプション) コマンドの結果を表示するには、[View result] を選択します。

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

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

    注記

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

     Run Command コマンドの出力