はじめに
CloudFormationで、ECS Fargate を作成するときにはまったのでメモ。
やりたいこと
- CloudFormationで、ECS Fargate を作成したい
- ECSクラスター
- ECSサービス
- ECSタスク定義
発生したエラー
タスクで以下のエラーが発生し、CloudFormationの実行が完了しない。
Fargateタスクの STOPPED
を繰り返している状況。
ResourceInitializationError: failed to validate logger args: create stream has been retried 1 times: failed to create Cloudwatch log stream: ResourceNotFoundException: The specified log group does not exist. : exit status 1
原因
CloudWatchLogs
に、ECSタスク定義の awslogs-group
で指定しているロググループが存在しないため。
実行したテンプレート(一部抜粋)
ECSTaskDefinition: Type: "AWS::ECS::TaskDefinition" Properties: ContainerDefinitions: - Image: !Sub "${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/backend:latest" LogConfiguration: LogDriver: "awslogs" Options: awslogs-group: !Sub "/ecs/${hoge}-backend"
対策
CloudFormationのテンプレートに、 CloudWatchLogs
のロググループ作成のテンプレートを追加する。
ECSLogGroup: Type: 'AWS::Logs::LogGroup' Properties: LogGroupName: !Sub '/ecs/logs/${GroupName}-ecs-group'