#
ドキュメント

Document

自分のための備忘録です。

ECSとCloudWatch

ログ

ログはロググループログストリームに分かれおり、ロググループが大分類を表してログストリームを包含する。

  • ロググループ
  • ログストリーム

ロググループ

ロググループは、タスク定義の**ContainerDefinitions**で指定する。
CloudFormationロググループを以下のように指定する。

LogConfiguration:
    LogDriver: awslogs
    Options:
        awslogs-group: "/ecs/example"
        awslogs-region: ap-northeast-1
        awslogs-stream-prefix: ecs  # これはログストリームのプレフィックス

実行中のタスクもログストリームにログが出力される。
つまり実行中のサービスのログもログストリームに出力される。

ログストリーム

ロググループの中に作成される。

  • 命名規則:{{awslogs-stream-prefix}}/コンテナ名/コンテナランタイム ID

コンテナランタイムIDタスク(ID)と同じハッシュ値。
つまりタスクが複数のコンテナを持つ場合のコンテナランタイムIDはすべて同じ。

  • ログをCloudWatchに自動出力している場合、ロググループを削除するとタスク実行時にエラーになる

CloudWatchとECS

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/using_awslogs.html

prefix-name/container-name/ecs-task-id

AWS::ECS::TaskDefinition.Properties.ContainerDefinitions.LogConfigurationで定義する。

ContainerDefinitionがMyAppContainerの場合。

LogConfiguration:
    LogDriver: awslogs
    Options:
        awslogs-group: "/ecs/sample"
        awslogs-region: ap-northeast-1
        awslogs-stream-prefix: ecs # prefix-name

ロググループ /ecs/sample/のタスク実行ログは、 /ecs/MyAppContainer/タスクIdになる。