Amazon Web Services ブログ
Amazon ECS-optimized Amazon Linux AMI のサポート期間終了について
この記事は Amazon ECS-optimized Amazon Linux AMI End-of-Life を翻訳したものです。
2021 年 4 月 16 日更新 – Amazon ECS-optimized Amazon Linux AMI は 2021 年 4 月 15 日に標準サポートを終了し、メンテナンスサポート期間に入りました。
2015 年のローンチ以来、Amazon ECS-optimized Amazon Linux AMI は多くのお客様がコンテナ化された Linux ベースのアプリケーションを Amazon Elastic Compute Cloud (EC2) 上に構築する手助けをしてきました。この AMI を利用することにより、お客様は最新バージョンの Amazon Linux OS に依存した Amazon ECS コンテナエージェント、Docker デーモン、および Docker ランタイムがバンドルされた環境でコンテナ化されたアプリケーションを実行できます。2018 年 10 月に、セキュリティ、安定性、生産性の強化をもたらすために Amazon Linux 2 AMI を導入しました。これにより Amazon ECS をご利用のお客様は Amazon Linux 2 OS の安定性とセキュリティの利点を追加の手間をかけることなく利用できるようになりました。
2020 年 12 月 31 日に Amazon Linux AMI の標準サポートを終了し、新たにメンテナンスサポート期間に入りました。このメンテナンスサポート期間中は、
- Amazon Linux AMI はパッケージリストを縮小し、重要なセキュリティアップデートのみを受け取ります。
- EC2 プラットフォームの新機能や AWS の新機能への対応は保証されなくなります。
その結果、2021 年 4 月 15 日に Amazon ECS-optimized Amazon Linux AMI は標準サポート期間を終了し、メンテナンスサポート期間に入ります。メンテナンスサポート期間では Amazon ECS は縮小したパッケージリストに対して、重大かつ重要なセキュリティアップデートのみを提供します。この期間中 Amazon ECS は新しい EC2 インスタンスタイプのサポート、新しいサービスと機能、および Amazon ECS-optimized Amazon Linux AMI への新しいパッケージの追加を行わなくなります。その代わりに、この AMI では縮小されたパッケージに適用される重要なセキュリティフィックスのみが更新されます。メンテナンスサポート期間は 2023 年 6 月 30 日に終了します。
現時点で Amazon ECS で Amazon ECS-optimized Amazon Linux AMI をご利用中のお客様は Amazon ECS-optimized Amazon Linux 2 AMI に移行する必要があります。この 2 つの AMI には同じバージョンの Amazon ECS コンテナエージェントと Docker デーモンがパッケージされているため、2 つの AMI の違いは基盤となる OS のバージョンのみとなります。ほとんどの場合、Amazon ECS-optimized Amazon Linux AMI を利用しているインスタンスで実行しているアプリケーションを Amazon ECS-optimized Amazon Linux 2 AMI を利用しているインスタンスに簡単にデプロイができるはずです。
EC2 Auto Scaling グループを利用して Amazon ECS クラスター内のアクティブなコンテナインスタンスを新しくリリースされた AMI から起動したインスタンスにリフレッシュする方法についてはこのブログ記事を参照してください。EC2 Auto Scaling グループを利用していないお客様の場合、プロセスは同じですが手動で実行する必要があります。これを安全に行うためには、ECS クラスターに AL2 のコンテナインスタンスを追加し、AL1 コンテナインスタンスのステータスを DRAINING に設定することで AL1 コンテナインスタンスから徐々にトラフィックを移行する方法をお勧めします。この方法はコンテナインスタンス上で実行中の Amazon ECS タスクを Graceful に終了し、クラスター内の利用可能なキャパシティに自動で再配置します。AL1 のコンテナインスタンス上で実行中のすべてのタスクが終了したら、AL1 のコンテナインスタンスを終了できます。新しいコンテナインスタンスでアプリケーションが正常に動作することを確認できたら、クラスター内の他のコンテナインスタンスでもこのプロセスを繰り返します。
ほとんどのお客様はこの移行中に問題に直面することはありませんが、Amazon ECS-optimized Amazon Linux と Amazon ECS Optimized Amazon Linux 2 の AMI の間には以下の違いがありますのでご注意ください。
- Amazon Linux 2 ではサービスの管理に ‘systemd’ を利用していますが、Amazon Linux は ‘init.d’ を利用しています。Systemd はサービスの依存関係やサービスの開始順序についてより堅牢なモデルを持っています。したがって Amazon ECS-optimized Amazon Linux 2 においては、Docker と Amazon ECS サービスのどちらとも起動や再起動の前にユーザーデータのスクリプトが実行されていることに依存しています。つまり、ユーザーデータ内で
systemctl restart docker
やsystemctl restart ecs
を実行することはできません。- 回避策としては
--no-block
フラグを利用することが考えられます。例)systemctl start ecs --no-block
- また、Amazon Linux 2 のユーザーデータスクリプトは Amazon ECS または Docker サービスの開始を待ってから終了しようとしないことを意味します。この条件が満たされることはないためです。
- Amazon ECS サービスはユーザーデータの実行の後に開始されるため、ユーザーデータのスクリプトもコンテナインスタンスが Amazon ECS クラスターに参加するのを待ってから終了することはできません。ユーザーデータのスクリプトが終了するまで、コンテナインスタンスは決してクラスターに参加しません。
- 回避策としては
- Amazon ECS-optimized Amazon Linux 2 AMI で動作する Docker は
overlay2
ストレージドライバーを利用し、Amazon ECS-optimized Amazon Linux AMI は非推奨のdevicemapper
ドライバーを利用しています。Amazon Linux から Amazon Linux 2 へ移行すると、ほとんどのワークロードで I/O パフォーマンスが向上します。
Amazon Linux AMI のサポートに関する技術的な詳細はこちらをご覧ください。今後もこの投稿を更新する予定です。お客様からのフィードバックをお待ちしております。
翻訳はソリューションアーキテクト加治が担当しました。原文はこちらです。