ECS Express Mode で作成したサービスにカスタムドメインを設定してみた #AWSreInvent

ECS Express Mode で作成したサービスにカスタムドメインを設定してみた #AWSreInvent

2026.01.02

こんにちは!クラウド事業本部コンサルティング部のたかくに(@takakuni_)です。

昨年末、ECS に非常にシンプルな API で、 ECS サービスおよび周辺リソースをデプロイ可能な ECS Express Mode がリリースされました。

https://dev.classmethod.jp/articles/ecs-express-mode/

「コンテナイメージの URI」、「タスク実行ロール」、「インフラストラクチャロール」のたった 3 つでアプリケーションがデプロイできるのは非常にシンプルな機能です。

2026-01-01-17-21-55@2x.png

この、ECS Express Mode ですが、デプロイすると xxx.ecs.リージョン名.on.aws から始まるエンドポイントが発行され、アクセス可能になるといった代物です。

2026-01-01-17-26-28@2x.png

Express にデプロイできたのはいいのですが、本番利用を考えると、カスタムドメインにしたいケースもあるのではないでしょうか。

調べてみると、「Express Mode 外での更新の例」としてカスタムドメイン対応させる手順が公開されていたため、今回はこちらを試してみたいと思います。

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/express-service-advanced-customization.html#express-service-customization-examples

Express Mode API の挙動を理解しよう

カスタムドメインに入る前に、Express Mode API の挙動を理解しましょう。

ECS Express Mode では、別途 Express Mode API が用意されており、この API を通じて作成/削除/閲覧/更新処理を行います。

Express Mode API

また、ECS Express Mode で作成されたリソースは、標準で提供される API を利用して、自身の AWS アカウント上に見える状態で作成されるため、ECS Service の最小タスク数 を Application Auto Scaling の RegisterScalableTarget API で上書きするようなことができます。

ここで注意なのが、Express Mode API 側では、

  1. (Config Rule のような) 自動で差分を検知し修復する様な動きはない
  2. 1 と似ていますが、明示的に UpdateExpressGatewayService の引数として指定しない限り、標準 API で加えた変更を修正しない
  3. 2 の Express Mode API 側で明示的に引数として指定した場合においても、競合するかどうかを検証しないため、標準 API で加えた変更が Express Mode にどの様に影響するかは利用者の責任となる

点です。そのため、Express Mode 管理外で、色々カスタマイズはできるのですが、Express Mode API で更新かけるタイミングで設定値がバッティングしないよう、お気をつけください。

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/express-service-advanced-customization.html#express-service-shared-responsibility

先ほど例に挙げた「ECS Service の最小タスク数」は UpdateExpressGatewayService で言う、minTaskCount に当たる部分です。もし、 UpdateExpressGatewayService を実行した時に、明示的に指定した場合は、上書きされる可能性があるため注意です。といったことの様です。

やってみた

戻りまして、カスタムドメインの対応です。ACM の証明書発行が済んでいる、ドメインは Route 53 で管理されている前提で進めていきます。

ecs-express0102.takakuni.blog」という、カスタムドメインを Express Mode によって作成された ALB に紐づけたいケースを想定します。

リソースの確認

まずは、ALB の状態を確認します。

基本的には、以下のドキュメントを参照すれば、諸々書いてあるのですが、全ての設定値が書いてあるわけではないため注意です。

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/express-service-work.html

リスナーは HTTPS (443) リスナーのみ設定されていました。

2026-01-02-17-32-24@2x.png

リスナールールは 2 つ設定されており、デフォルトで払い出された xxx.ecs.リージョン名.on.aws のホストヘッダーの有無で ECS なのか、固定レスポンス(デフォルトアクション)なのか振り分けていますね。

2026-01-02-17-40-07@2x.png

証明書も設定されています。xxx.ecs.リージョン名.on.aws のエンドポイントに対して、発行されていますね。

2026-01-02-17-41-31@2x.png

ACM からも発行された証明書が確認できています。

2026-01-02-17-44-07@2x.png

状況が把握できましたね。

リスナールールの編集

では、リスナールールを編集していきましょう。

OR 条件値を追加 から、

2026-01-02-17-55-01@2x.png

今回設定したいカスタムドメイン (ecs-express0102.takakuni.blog) を追加します。

デフォルトエンドポイントからのアクセスが不要であれば、この部分で外すのも良さそうです。

2026-01-02-17-57-02@2x.png

うまく変わっていますね。

2026-01-02-17-58-25@2x.png

証明書の追加

続いて証明書の追加です。証明書の追加から

2026-01-02-17-59-18@2x.png

利用したい証明書を追加します。

2026-01-02-17-59-59@2x.png

証明書が追加できました。

2026-01-02-18-00-05@2x.png

レコード追加

最後に DNS レコードの追加です。カスタムドメインに対して、ALB のエイリアスを指定します。

2026-01-02-18-04-11@2x.png

アクセス確認

カスタムドメイン経由で Express Mode の ECS へアクセスできていますね。証明書もバッチリ効いています。

2026-01-02-18-08-19@2x.png

リスナールール側で OR 条件で、旧ドメインへのアクセスも許可しているため、デフォルトエンドポイント経由のアクセスも問題なさそうです。

2026-01-02-18-06-11@2x.png

まとめ

以上、「ECS Express Mode で作成したサービスにカスタムドメインを設定してみた」でした。

再掲になりますが、以下で手順は用意されているものの、どんなイメージなのか確かめるのは大事ですね。

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/express-service-advanced-customization.html#express-service-customization-examples

Express Mode 作成時にカスタムドメイン欄が出てくると嬉しいですね。クラウド事業本部コンサルティング部のたかくに(@takakuni_)でした!

この記事をシェアする

FacebookHatena blogX

関連記事