2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon ECS Express Mode で自動作成された AWS リソースを AWS CloudFormation で管理する

Last updated at Posted at 2025-12-03

本記事は、AWS Containers Advent Calendar 2025 の 3 日目 (12/3) のエントリーです。

Amazon ECS Express Mode とは?

2025 年 11 月 21 日に発表された Amazon ECS の新機能です。

最小で以下の 3 つのパラメーターを設定するだけで、Amazon ECS でコンテナアプリケーションを動かすためのネットワークや負荷分散、オートスケーリングなどのインフラストラクチャのセットアップを自動的に行ってくれます。

  • コンテナイメージ
  • ECS タスク実行 IAM ロール
  • ECS インフラストラクチャ IAM ロール

何が嬉しいのか

Amazon ECS でコンテナアプリケーションを動かす場合、他の AWS サービスをビルディングブロックとして組み合わせて利用するケースがほとんどです。

例えば、ブラウザからアクセスされる Web アプリケーションを Amazon ECS で実行したいと考えた場合、「負荷分散のためのロードバランシングの設定」、「疎通許可を行うためのセキュリティグループの設定」、「負荷状況の変化に対応するためのオートスケーリングの設定」など、組み合わせる AWS サービスの選定やパラメーターの設計などを行う必要が出てきます。

Amazon ECS Express Mode を利用して ECS (Express) サービスを作成することで、上記のようなインフラストラクチャの組み合わせや多数のパラメーター設計を行うことなく、AWS ベストプラクティスに沿った環境を自動的に構築することが可能になります。

Amazon ECS Express Mode の実行モデル

Amazon ECS Express Mode はロードバランサーやオートスケーリングといった AWS リソースをユーザーに変わって自動作成しますが、それらの AWS リソースはユーザーの AWS アカウント内に作成されます。これらの自動作成された AWS リソースは、通常の AWS リソースと同様にマネジメントコンソールや API、CloudFormation などの IaC ツールを利用して Amazon ECS Express Mode を介することなく変更が可能です。また、このような Amazon ECS Express Mode の外で行われた変更について、ECS が無理やり元に戻そうとすることもありません。
(Kubernetes における Reconciliation Loop のような振る舞いはしない、と考えればイメージが掴みやすいかもしれません)

ただし、Amazon ECS Express Mode の外で直接変更を加えた後に ECS (Express) サービスの更新を行う場合、直接加えた変更によるリソース競合や ECS (Express) サービスで発生する問題については、ユーザーの責任でこれらを解消する必要があります。そのため、Amazon ECS Express Mode の外で AWS リソースを直接変更する場合は、ECS (Express) サービスとの競合に十分ご注意ください。

You're responsible for understanding how modifications using direct APIs interact with Express Mode's configuration and for resolving any resulting conflicts or service issues.

自動作成された AWS リソースを AWS CloudFormation で管理する

前述のような注意点を理解した上で、Amazon ECS Express Mode が自動作成した AWS リソースを変更したい要件が出てきたとしましょう。

Amazon ECS Express Mode では、自動作成される AWS リソースは AWS API で作成・変更されています。そのため、これらの自動作成された AWS リソースを IaC ツールの管理下に置きたいと考えた場合、まずは自動作成された AWS リソース群をインポートする必要が出てきます。本記事では、AWS CloudFormation でこれらの自動作成リソースを管理する場合を考えてみます。

自動作成された AWS リソースの一覧取得

Amazon ECS Express Mode で自動作成された AWS リソースは ECS API で一覧を取得できます。

まずは、DescribeExpressGatewayService API で ECS サービスリビジョンを取得します。

$ aws ecs describe-express-gateway-service --service-arn "$EXPRESS_SERVICE_ARN"
{
   "service": { 
      "activeConfigurations": [
          {
              "serviceRevisionArn": "string",
              ...
(省略)

ECS サービスリビジョンの ARN が取得できたら、DescribeServiceRevisions API を実行します。ECS (Express) サービスのサービスリビジョンを指定した場合、ecsManagedResources フィールドがレスポンスに含まれています。

$ aws ecs describe-service-revisions --service-revision-arns "$SERVICE_REVISION_ARN"
{
    "serviceRevisions": [
        {
            "ecsManagedResources": {
              ...

ecsManagedResources フィールドには、各リソースの ARN が含まれています。例えば、オートスケーリングに関しては Application Auto Scaling の ScalingPolicy や ScalableTarget の ARN が含まれます。

{
   "ecsManagedResources": { 
      "autoScaling": { 
         "applicationAutoScalingPolicies": [ 
            { 
               "arn": "string",
               "metric": "string",
               "policyType": "string",
               "status": "string",
               "statusReason": "string",
               "targetValue": number,
               "updatedAt": number
            }
         ],
         "scalableTarget": { 
            "arn": "string",
            "maxCapacity": number,
            "minCapacity": number,
            "status": "string",
            "statusReason": "string",
            "updatedAt": number
         }
      },
   ...

これで自動作成された AWS リソースの一覧と、それらの ARN が取得できました。あとは AWS CloudFormation にインポートするためのテンプレートの作成や一意の識別子を作成していきます。ここまでくれば残りは通常の手順と同じであるため、インポートの具体的な手順については以下の AWS ドキュメントをご参照ください。

注意点

Amazon ECS Express Mode では、コスト最適化のために複数の ECS (Express) サービスで ALB が共有される場合があります。そのため、ecsManagedResources フィールドに含まれているリソースが、該当の ECS (Express) サービスで作成されたものではなく、共有されたリソースである可能性があります。

  • Load balancer sharing - Up to 25 Express Mode services in the same VPC can share an Application Load Balancer. Express Mode will provision additional Application Load Balancers as necessary depending on the amount of Express Mode services you have provisioned. And as you reduce the amount of Express Mode services in your VPC, Express Mode will also deprovision unused Application Load Balancers.This sharing reduces the effective cost per application as you deploy more Express Mode services.

そのため、2 番目以降の ECS (Express) サービスに対して本記事で説明している方法を適用する場合、「ecsManagedResources フィールドに含まれる AWS リソースが共有されているものかどうか」を確認するようにしてください。

また、Amazon ECS Express Mode は AWS リソースの作成・変更を AWS API で実行しています。すでに AWS CloudFormation にインポートしている状態で ECS (Express) サービスを更新した場合、CloudFormation スタック上ではドリフト状態になります。ECS (Express) サービスと AWS CloudFormation の双方でリソース更新を行う場合は、現在の AWS リソースの状態を注意深く把握しながら作業を進めてください。

あくまで個人の意見ですが、Amazon ECS Express Mode の外で AWS リソースを直接変更したい要件が出てきたら、以降は ECS (Express) モードを介してではなく、Amazon ECS Express Mode の外で AWS リソース群を管理した方がシンプルに運用が可能だと考えています。
(将来のアップデートにより、この辺りの体験が変わる可能性はあります)

おわりに

本記事では、Amazon ECS で迅速にアプリケーションを実行するための機能である Amazon ECS Express Mode と、Amazon ECS Express Mode が自動作成する AWS リソース群を AWS CloudFormation で管理する方法について説明しました。Amazon ECS Express Mode に対するご意見やご要望は、ぜひ コンテナロードマップ にお寄せいただけますと幸いです :raised_hands:

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?