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?

Amazon ECS Service Connect が Envoy アクセスログをサポート

Last updated at Posted at 2025-11-04

はじめに

2025 年 10 月 30 日、AWS はAmazon Elastic Container Service(ECS)Service Connect 向けの新機能を発表しました。
Envoy Access Logs のサポートにより、Service Connect を利用するマイクロサービス間の通信について、リクエストレベルでの詳細なトラフィック可視化が可能になります。
この機能は全ての ECS Service Connect 対応リージョンで即座に利用可能となっています。
本記事では、新機能の詳細、従来との違い、使い方、コストと制約事項についてまとめています。

新機能の概要

今回発表された新機能により、ECS Service Connect で Envoy Access Logs を取得できるようになりました。

主な特徴

主な特徴としては以下の 3 つです。

  • リクエストレベルの可視性
  • 既存ログパイプラインとの統合
  • 全プロトコルサポート

リクエストレベルの可視性

個々のリクエストに対する詳細なメタデータ(HTTP メソッド、パス、レスポンスコード、レイテンシなど)を記録できます。

既存ログパイプラインとの統合

標準出力(STDOUT)に出力され、既存の ECS ログパイプライン(awslogs、awsfirelens など)を通じて CloudWatch Logs に送信されます。

全プロトコルサポート

HTTP、HTTP2、gRPC、TCP の全てのアプリケーションプロトコルに対応しています。

ログフォーマット

Access Logs は 2 つのフォーマットから選択できます。

  • JSON 形式
  • TEXT 形式

何が変わったのか

今回発表された新機能により、ECS Service Connect の可観測性が大きく向上しました。
従来の課題と新機能による変化を見ていきましょう。

従来の課題

主な課題としては以下の 3 つがありました。

  • リクエストレベルの詳細情報が取得できない
  • カスタムロギングの実装が必要
  • セキュリティ監査証跡の不足

リクエストレベルの詳細情報が取得できない

Service Connect ではメトリクス(リクエスト数、エラー率、レイテンシの平均値など)は取得できましたが、個々のリクエストの詳細情報は分かりませんでした。
マイクロサービス間の通信で問題が発生した際、推測に頼る部分が多く原因特定に時間がかかっていました。

カスタムロギングの実装が必要

リクエストレベルのトラフィック情報を取得するには、アプリケーションコードにカスタムロギングを実装する必要がありました。

セキュリティ監査証跡の不足

コンプライアンス要件(SOC2、HIPAA、PCI DSS など)で求められる詳細な通信ログが取得できませんでした。
このため、セキュリティインシデント発生時の調査や定期的な監査対応に多大な労力が必要でした。

新機能による変化

新機能により、従来の課題がすべて解決されました。

リクエストレベルの詳細な可視性

各リクエストについて、HTTP メソッド、パス、レスポンスコード、フラグ、タイミング情報などの詳細なメタデータが記録されます。
これにより、「どのリクエストが遅いのか」「どのエンドポイントでエラーが発生しているのか」を即座に特定できます。

コード変更不要の自動ロギング

Envoy プロキシが自動的にログを記録するため、アプリケーションコードの変更は一切不要です。
Service Connect の設定を更新するだけで、全サービスで統一されたフォーマットのアクセスログが自動的に出力されます。

セキュリティとコンプライアンスの強化

API トークン、セッション ID、その他の機密情報がクエリパラメータに含まれていても、デフォルトで除外されログに記録されないため機密情報の漏洩リスクが軽減されます。
また、リクエスト単位での詳細な監査証跡が自動的に記録されるためコンプライアンス要件への対応が容易になります。

使い方

新機能の使い方を設定の有効化から、実際のログ確認までを説明します。

動作確認用サンプル

新機能を実際に試すためにシンプルなタスク定義を用意します。

タスク定義
{
  "family": "backend-service",
  "networkMode": "awsvpc",
  "requiresCompatibilities": ["FARGATE"],
  "cpu": "256",
  "memory": "512",
  "executionRoleArn": "arn:aws:iam::<account-id>:role/ecsTaskExecutionRole",
  "containerDefinitions": [
    {
      "name": "app",
      "image": "nginx:latest",
      "essential": true,
      "portMappings": [
        {
          "containerPort": 80,
          "protocol": "tcp",
          "name": "http",
          "appProtocol": "http"
        }
      ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/backend-app",
          "awslogs-region": "ap-northeast-1",
          "awslogs-stream-prefix": "app"
        }
      }
    }
  ]
}

Access Logs の有効化

サービスの作成

image.png

Service Connect の設定

  • モード:クライアントとサーバー
  • 名前空間:myapp.namespace
  • Service Connect および検出名の設定
    • ポートエイリアス:http
    • 検出名:backend-catalog
    • DNS:backend
    • ポート:80

Access Logs の設定

image.png
image.png

動作確認

リクエスト発行

同じクラスター・同じ名前空間(myapp.namespace)内の別タスクから実行

curl http://backend/
curl http://backend?token=abc123

ログ確認

JSON 形式でクエリパラメータを有効化した場合、以下のようなログが出力されます。

想定結果
{
    "bytes_sent": 615,
    "authority": "backend",
    "upstream_service_time": "0",
    "forwarded_for": null,
    "request_id": "6acbf089-2906-4f27-85c6-fd46acc344fd",
    "bytes_received": 0,
    "protocol": "HTTP/1.1",
    "user_agent": "curl/8.14.1",
    "duration": 0,
    "start_time": "2025-11-04T06:49:07.518Z",
    "method": "GET",
    "path": "/?token=abc123",
    "response_code": 200
}

コストと制限事項

新機能を利用する前に知っておくべきコストと制限事項について説明します。

料金体系

Access Logs を有効化すると、CloudWatch Logs のコストが発生します。

CloudWatch Logs

  • 取り込み: $0.76 / GB
  • 保存: $0.033 / GB / 月
  • クエリ実行: $0.0076 / GB スキャン

コスト例

東京リージョンにおける環境規模ごとの月額概算は以下のようになります。

環境規模 リクエスト数 / 日 ログ量 / 日 保持期間 月額概算
小規模 100,000 50 MB 7 日 $ 0.5 ~ 1
中規模 1,000,000 500 MB 30 日 $ 7 ~ 10
大規模 10,000,000 5 GB 30 日 $ 80 ~ 100

コスト最適化のポイント

  • 保持期間を適切に設定(本番環境 30 日、開発環境 7 日など)
  • まずは非本番環境でログ量を測定
  • 必要に応じて保持期間を調整

制限事項

機能面の制限

  • Access logs と application logs は両方 /dev/stdout に出力されます
  • Fargate の場合、プラットフォームバージョン 1.4.0 以上が必要
  • クエリパラメータはデフォルトで access logs から除外

運用上の注意点

  • リクエスト数に比例してログ量が増加
  • Service Connect 設定の変更にはサービスの再デプロイが必要

まとめ

今回発表された ECS Service Connect の Envoy Access Logs サポートは、マイクロサービスアーキテクチャにおける可観測性を大きく向上させる実用的な機能です。
アプリケーションコードの変更なしに、Envoy プロキシが自動的に各リクエストの詳細なメタデータを記録するため導入の敷居が非常に低くなっています。
小規模環境であれば月額 $ 0.5 ~ 1 程度から始められるため、まずは非本番環境で実際に試してみることをお勧めします。

参考リンク

https://aws.amazon.com/jp/about-aws/whats-new/2025/10/amazon-ecs-service-connect-envoy-access-logs/
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect-envoy-access-logs.html

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?