紙一重の積み重ね

アラフォーのエンジニアがなれる最高の自分を目指して、学んだことをこつこつ情報発信するブログです。

【CloudFormation】Fargate作成が完了しないときの対処法( The specified log group does not exist エラー)

はじめに

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'

参考情報

inamuu.com