0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ALB で URL とホストヘッダーの書き換え機能処理が可能に ついでに ECS MCP サーバーを使って環境をデプロイしてみた

Last updated at Posted at 2026-01-03

何ができるようになったのか?

ALB において URL とホストヘッダーの書き換え機能が追加されました。

過去に apache のコンテナを挟んで URL 書き換え処理を行なっていた経験がありましたので、これらで運用していた人にとっては嬉しいアップデートかと思います。

詳細

  • 正規表現(Regex)によるルーティング条件のマッチング:ホストヘッダー、パス、HTTP ヘッダーに対して正規表現でマッチング可能
  • URL パスの書き換え(Transform):バックエンドへルーティングする前に URL パスを変換
  • ホストヘッダーの書き換え:リクエストのホストヘッダーを変換

Before / After 比較

Before(従来)- サードパーティプロキシが必要

After(新機能)- ALBでネイティブに書き換え

これまでの課題と新機能のメリット

観点 Before(従来) After(新機能)
アーキテクチャ NGINX等のプロキシが別途必要 ALB単体で完結
運用負荷 追加コンポーネントの保守が必要 メンテナンス不要
コスト プロキシ用インフラのコスト発生 追加コストなし
レイテンシー プロキシ経由で増加 直接ルーティングで低減
障害ポイント 増加 削減

やってみる

ここでは、default/user.html にアクセスすると、v1/user.html へアクセスできることを確認していきます。

環境の準備

まず、環境が必要です。せっかくなので ECS MCP サーバーを使って簡易的な環境をデプロイしておきます。

今回 .mcp.json の設定では書き込み操作が必要となりますので、ALLOW_WRITEALLOW_SENSITIVE_DATAtrue にしておく必要があります。

.mcp.json
{
  "mcpServers": {
    "awslabs.ecs-mcp-server": {
      "command": "uvx",
      "args": ["--from", "awslabs-ecs-mcp-server", "ecs-mcp-server"],
      "env": {
        "AWS_PROFILE": "default",
        "AWS_REGION": "us-west-2",
        "FASTMCP_LOG_LEVEL": "ERROR",
        "FASTMCP_LOG_FILE": "/path/to/ecs-mcp-server.log",
        "ALLOW_WRITE": "true",
        "ALLOW_SENSITIVE_DATA": "true"
      }
    }
  }
}

この、ECS MCP サーバー は ECS Express Mode で動作するツールがあるようです。
ECS Express Mode は従来の ECS でウェブアプリを公開しようとすると、VPC、サブネット、セキュリティグループ、ALB、ターゲットグループ、ECS クラスター、サービス、タスク定義…と、設定すべきものがかなり多かったものをコンテナイメージだけ指定すれば、あとは AWS がよしなにやってくれるというアプローチのようです。
個人的には、実際のプロダクション運用では本番環境は通常、Terraform や CDK、CloudFormation などの IaC でインフラを管理することとなると思います。
そのため、PoC 検証や今回のようにサクッと環境を準備したいとときに活用できそうです。

ECS MCP サーバーは次のようなツール群を使ってデプロイされるようです。

ECS MCP サーバーを使ってデプロイされるリソースは次のイメージです。

ここで個人的に良いと思ったのは、AWS 管理のカスタムドメイン が作成(自身の Route 53 には作成されない)され、自身でドメインを持っていない、準備しない場合でも簡単に HTTPS でアクセスできることが嬉しいポイントかと感じました。なお、証明書は 自身の ACM 上に作成されます。

(補足1)
internet-facing ALB(パブリック)としてデプロイしていますが、プライベートサブネットを指定すると、自動的に internal ALB(プライベート)としてデプロイすことも可能なようです。

(補足2)
デプロイ方式は、カナリアデプロイになるようです。

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

パブリックサブネットが指定された場合、パブリック IP アドレスを持つインターネット向けロードバランサーを作成します。プライベートサブネットが指定された場合、プライベート IP アドレスを持つ内部ロードバランサーを作成します。

デフォルトは Canary – Express Mode サービスはカナリアデプロイを使用します

では一旦 ECS MCP サーバーを使ってデプロイまで完了したら、アプリケーション URL(カスタムドメイン)を確認、アクセスし表示を確認しておきます。
スクリーンショット 2026-01-03 16.59.11.png

https://<アプリケーション URL>/v1/user.html へアクセス。
スクリーンショット 2026-01-03 17.08.24.png

ALB リスナーでの URL パスの書き換え(Transform)

ALB の HTTPS:443 リスナーを開き、トランスフォームの項目で、default から v1 に置換する設定を入れます。
スクリーンショット 2026-01-03 17.44.05.png

ちなみにですが、同じ ALB の HTTPS:443 リスナーの画面を見るとわかりますが、ホストヘッダールールにアプリケーション URL(カスタムドメイン)を条件値としてトラフィックをルーティングする設定がデフォルトで構成されていました。
スクリーンショット 2026-01-03 18.27.25.png

https://<アプリケーション URL>/default/user.html へアクセスし、表示されるか確認します。
スクリーンショット 2026-01-03 17.08.24.png

コンテナのログを確認すると、https://<アプリケーション URL>/v1/user.html へリクエストが来ていることが確認できると思います。
スクリーンショット 2026-01-03 17.48.05.png

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?