Amazon ECSサービスのプラットフォームバージョンを変更してみた
はじめに
本記事では、Amazon ECSサービスのLinuxプラットフォームバージョンの変更方法についてご紹介します。
具体的には、LATEST
で作成していたため、明示的にバージョン1.4.0
を指定するよう変更します。
執筆時点では、LATEST
のLinuxプラットフォームバージョンは1.4.0
です。
[LATEST] の Linux プラットフォームバージョンは 1.4.0 です。
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/platform-version-migration.html
明示的にバージョンを指定する理由は、プラットフォームバージョンの変更による影響を制御するためです。
LATEST
を使用すると、計画的なバージョン管理ができず、予期せぬ問題が発生するリスクがあります。
AWSでは、タスクを新しいプラットフォームバージョンに移行する前に、そのバージョンでの動作確認を行うことを推奨しています。
明示的なバージョン指定により、計画的なテストと移行が可能となり、より安全なシステム運用を実現できます。
FargateタスクのAmazon ECSをプラットフォームバージョン 1.0.0、1.1.0、1.2.0、または 1.3.0 からプラットフォームバージョン 1.4.0 に移行する場合は、次のことを考慮してください。タスクを移行する前に、そのタスクがプラットフォームバージョン 1.4.0 で正しく動作するのを確認することがベストプラクティスです。
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/platform-version-migration.html
前提条件
- ECSサービスが作成済みで、タスクが起動中であること
- 起動タイプ:Fargate
- ロードバランサー:ALB(Application Load Balancer)を使用
- ECSサービスのプラットフォームバージョンが
LATEST
に設定されていること
LATEST
の場合、起動中のタスクは、1.4.0
であることが確認できます
プラットフォームバージョンを変更してみる
執筆時点ではマネジメントコンソール上でプラットフォームバージョンの変更はできないため、AWS CloudShellを起動し、コマンドで変更します。
プラットフォームバージョンを変更するためのAWS CLIコマンドは以下の通りです。
$ aws ecs update-service \
--cluster クラスター名 \
--service サービス名 \
--platform-version 1.4.0
# コマンドパラメータの説明
# --cluster: 対象のECSクラスター名を指定
# --service: 変更対象のサービス名を指定
# --platform-version: 変更後のプラットフォームバージョンを指定
コマンド実行後、マネジメントコンソールで確認すると、以下の通りプラットフォームバージョンが1.4.0
に正常に変更されていることが確認できます。
これでECSサービスのプラットフォームバージョン指定をLATEST
から1.4.0
に変更が完了です。
変更作業の影響と注意点
プラットフォームバージョンをLATEST
から1.4.0
に更新すると、以下の挙動が自動的に実行されることが分かりました。
- バージョン
1.4.0
が指定された新規タスクが起動 - 既存の
LATEST
指定タスクが停止
プラットフォームバージョン変更時、デプロイの強制を指定しない場合でも、上述のとおり、タスクの入れ替えが発生します。
そのため、本番環境でプラットフォームバージョンを変更する際は、メンテナンス時間帯での実施を検討し、事前に検証環境での動作確認を行うことをお勧めします。