Amazon ECS でカスタム AMI を作成して使用するにはどうすればよいですか?

最終更新日: 2022 年 4 月 15 日

CentOS、SUSE Enterprise Server、または RHEL ベースのカスタム Amazon マシンイメージ (AMI) を Amazon Elastic Container Service (Amazon ECS) クラスターで設定して使用したいと考えています。

簡単な説明

Amazon ECS で使用するカスタム AMI を作成するには、次の手順を実行します。

  1. AMI を作成します。
  2. ご使用のオペレーティングシステム用に Docker をインストールします。
  3. ecs-init パッケージをインストールします。
  4. ECS サービスを有効にして、ECS コンテナエージェントがアクティブであることを確認します。
  5. 後で使用するためにイメージをクリーンアップします。
  6. 新しい Amazon Elastic Compute Cloud (Amazon EC2) イメージを作成します。
  7. Amazon ECS Linux コンテナインスタンスを起動し、インスタンスの実行時に必要な UserData を追加して ecs.config ファイルを設定します。

解決方法

AMI を作成する

AMI の作成には 3 つのオプションがあります。

Docker をインストールする

ご使用のオペレーティングシステムとシステムアーキテクチャに合わせて Docker をインストールするには、「Install Docker Engine」を参照してください。

ecs-int パッケージをインストールする

1.    次のいずれかのコマンドを実行して、 CentOSSUSE Enterprise Server、または RHEL 用の Amazon ecs-int パッケージをダウンロードします。

注: region を、インスタンスを起動した AWS リージョンに置き換えます。

x86_64 CentOS 7 / 8SUSE Enterprise Server 15、または RHEL 7 の場合:

$ curl -o amazon-ecs-init.rpm https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.x86_64.rpm

aarch64 CentOS 7 / 8 または RHEL 7 の場合:

$ curl -o amazon-ecs-init.rpm https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.aarch64.rpm

2.    次のいずれかのコマンドを実行して、インスタンス用にダウンロードした rpm パッケージをインストールします。

CentOS 7 / 8 および RHEL 7 用の rpm パッケージの場合:

$ sudo yum install -y ./amazon-ecs-init.rpm

SUSE Enterprise Server 15rpm パッケージの場合:

$ sudo zypper install -y --allow-unsigned-rpm ./amazon-ecs-init.rpm

ECS サービスを有効にして、ECS コンテナエージェントがアクティブであることを確認する

1.    ECS サービスを有効にするには、次のコマンドを実行します。

$ sudo systemctl enable --now ecs

2.    次のコマンドを実行して、ECS サービスが有効になっており、ECS コンテナエージェントがアクティブであることを確認します。

$ sudo systemctl status ecs

$ sudo docker ps

出力は次のようになります。

ecs.service - Amazon Elastic Container Service - container agent
     Loaded: loaded (/lib/systemd/system/ecs.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-02-22 08:39:02 UTC; 11min ago
CONTAINER ID   IMAGE                            COMMAND    CREATED         STATUS                   PORTS     NAMES
108cfb8a10d2   amazon/amazon-ecs-agent:latest   "/agent"   9 minutes ago   Up 9 minutes (healthy)             ecs-agent

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

1.    将来使用するためにイメージをクリーンアップするには、次のコマンドを実行して ecs-init パッケージと Docker プロセスを停止します。

$ sudo systemctl stop ecs
$ sudo systemctl stop docker

2.    イメージの保存時にログファイルが保存されないように、現在のインスタンスからすべてのログファイルを削除します。「Security best practices for EC2 Image Builder」(EC2 Image Builder のセキュリティのベストプラクティス) のサンプルスクリプトを使用して、インスタンスからさまざまなファイルをクリーンアップします。

3.    ECS 固有のデータをクリーンアップするには、次のコマンドを実行します。

$ sudo rm -rf /var/log/ecs/*
$ sudo rm /var/lib/ecs/data/agent.db

新しい Amazon EC2 イメージを作成する

次のコマンドを実行して、前のステップで設定したイメージを使用して新しいイメージを作成します。

$ aws ec2 create-image --description "My ECS Image" --instance-id 
i-012345678910 --name Custom-ECS-Image --reboot

出力は次のようになります。

{
    "ImageId": "ami-01234567890101"
}

インスタンスを起動する

インスタンスを起動するには、「Amazon ECS Linux コンテナインスタンスの起動」を参照してください。

その後、新しい AMI を使用し、次のコマンドを実行して、UserDataecs.config ファイルに書き込むコマンドが含まれていることを確認します。注: your_cluster_name をクラスターの名前に置き換えます。

#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config

この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?