はじめに
Amazon ECSにおいてEC2インスタンスをホストで稼働させる場合、Fargateと異なりエージェントの登録といった作業が必要になります。
今回は、ECS on EC2環境のECSエージェントの登録方法について忘備録としてまとめます。
エージェントの登録手順
- クラスターの作成
Fargate、EC2どちらもECSのクラスターが必要なため作成します。
今回はtest-cluster
という名前で作成します。
- ECSに最適化されたAMIからEC2を復元
EC2をクラスターに登録するためにECS関連のパッケージが必要なので、ECS用に最適化されたAMIからEC2を復元します。 どのAMIを使用するかは、以下の公式ページを参考にしてください。
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/retrieve-ecs-optimized_AMI.html
今回は ami-0ec3dcc987d10643f
を使用します。
❯ aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/recommended/image_id --region ap-northeast-1 { "Parameters": [ { "Name": "/aws/service/ecs/optimized-ami/amazon-linux-2023/recommended/image_id", "Type": "String", "Value": "ami-0ec3dcc987d10643f", "Version": 17, "LastModifiedDate": "2023-11-09T05:04:33.494000+09:00", "ARN": "arn:aws:ssm:ap-northeast-1::parameter/aws/service/ecs/optimized-ami/amazon-linux-2023/recommended/image_id", "DataType": "text" } ], "InvalidParameters": [] }
IAM Roleの権限は、AmazonEC2ContainerServiceforEC2Role
のポリシーを付与しています。
- 設定ファイルの変更
ECSのクラスターに登録するため、EC2の設定ファイルにクラスターを定義しサービスの更新を行います。
# vi /etc/ecs/ecs.config ECS_CLUSTER=test-cluster # service ecs restart Redirecting to /bin/systemctl restart ecs.service
- クラスターの画面を確認
ECSのクラスターを確認してみると、クラスターにEC2が登録されていることが確認できます。
エージェントの再登録
インスタンスのスペックアップといった操作や、別のクラスターにエージェントを登録し直したいといった場合、エージェントの再登録が必要になります。
- エージェントの再登録
設定ファイルを書き換えてサービスを再起動するのみでは登録が行えないため、EC2に残っている過去のエージェント情報を削除する必要があります。
# rm -f /var/lib/ecs/data/agent.db # service ecs restart
上記のコマンドを実施後、クラスターを確認してみるとエージェントが再登録されていることが確認できます。
- 以前のエージェントの削除
クラスターに以前のエージェントが登録された状態のため、コンソールから削除したら完了です。
終わりに
ECS on EC2環境におけるECSエージェントの登録について説明しました。
本番環境でエージェントを登録し直す機会は少ないと思いますが、実際に実行する前に一度開発環境などで試して頂ければと思います。