[アップデート] Amazon ECS サービスでキャパシティプロバイダー戦略の更新がサポートされました
こんにちは!クラウド事業本部コンサルティング部のたかくに(@takakuni_)です。
Amazon ECS でキャパシティプロバイダーの更新がサポートされました。
はじめに
まず初めにキャパシティプロバイダーとは、 ECS タスクをホストするプラットフォームを指定する設定項目です。付随して、キャパシティプロバイダー戦略は ECS タスクをどのプラットフォームに配置するかの比重を決定する設定値です。
キャパシティプロバイダーは ECS クラスターで指定する項目で、「AWS Fargate でホストする」など、 1 つ以上のプラットフォームを指定する必要があります。
キャパシティプロバイダー戦略は ECS クラスターおよび、ECS サービスに設定する項目で、ECS サービスで指定がなかった場合は、ECS クラスターで設定した戦略(デフォルトキャパシティープロバイダー戦略)が利用されるイメージです。
この辺りの仕様は、以下のブログによくまとまっているので、合わせてご覧ください。
アップデート内容
前置きはここまでで、今回のアップデートは、 ECS サービスのキャパシティプロバイダー戦略が更新できるようになったと言うものです。
たとえば、Fargate でホストしていた ECS タスクを EC2 上でホストしたくなった場合、今までだと更新ができない項目だったため、新たに ECS サービスを作成する必要がありました。
「新たに ECS サービスを作成する必要がありました。
」と言うことは、ALB や Route53 など ECS 以外のサービスも意識する必要があり、大掛かりな作業が想定されます。
今回のアップデートで ECS サービス上で更新ができるようになったため、別サービス含めて新しい環境を用意して切り替えといった作業は必要なくなりました。
サポートされている変更パターンは以下のとおりです。
- Fargate 起動タイプから、 EC2 Auto Scaling Group キャパシティプロバイダーへの変更
- EC2 起動タイプから、 Fargate キャパシティープロバイダーへの変更
- Fargate キャパシティープロバイダーから、 EC2 Auto Scaling Group キャパシティープロバイダーへの変更
- Amazon EC2 キャパシティープロバイダーから、 Fargate キャパシティープロバイダーへの変更
- EC2 Auto Scaling Group または、 Fargate キャパシティープロバイダーから起動タイプへの変更
また、今回の変更はローリングアップデートおよびブルーグリーンでサポートしています。
You can change capacity providers for rolling deployments and blue/green deployments.
やってみた
今回は EC2 Auto Scaling でホストしていた ECS タスクを AWS Fargate へ移行してみたいと思います。
アップデート方式はローリングアップデートを採用しています。
Fargate から EC2 へ移行する場合、事前に ECS クラスターへキャパシティプロバイダーの登録が必要ですが、Fargate キャパシティプロバイダーの場合、すでに登録済みであるため、ECS サービスの更新のみ完了します。
ECS サービスの更新で、コンピューティング設定 ((アドバンスト))
を選択し、キャパシティープロバイダーを FARGATE
に更新します。
この更新はデプロイメントの作成が必要になる変更のため、新しいデプロイの強制
にチェックボックスを入れて更新を行います。
もしチェックが外れていると、以下のようなエラーが発生します。
When switching from launch type to capacity provider strategy on an existing service, or making a change to a capacity provider strategy on a service that is already using one, you must force a new deployment.
更新が完了すると、デプロイメントが作成され FARGATE プラットフォームの ECS タスクが新規作成されます。非常にシンプルに移管ができていますね。
まとめ
以上、「Amazon ECS サービスでキャパシティプロバイダー戦略の更新がサポートされました。」でした。
プラットフォーム移管の機会がなかなかないですが、実際遭遇した時を想定すると非常に便利な機能に思えます。
クラウド事業本部コンサルティング部のたかくに(@takakuni_)でした!