CodeDeploy 蓝色/绿色 ECS Fargate 错误:无效的 arn 语法

问题描述 投票:0回答:1

我使用 terraform 创建了 ECS fargate、codebuild、codedeploy 和 codepipeline 但是当管道运行时,它在 CodeDeploy 上失败并显示以下日志

CodeDeploy 日志

CodeDeploy 输入

这是我的工件文件

appspec.yml

version: 0.0
Resources:
  - TargetService:
      Type: AWS::ECS::Service
      Properties:
        TaskDefinition: "<TASK_DEFINITION>"
        LoadBalancerInfo:
          ContainerName: "name-container"
          ContainerPort: "3000"
        PlatformVersion: "LATEST"

taskdef.json

{
    "networkMode": "awsvpc",
    "requiresCompatibilities": [
      "FARGATE"
    ],
    "family": "name-task-def",
    "executionRoleArn": "arn:aws:iam::ACC_ID:role/name-execution-role",
    "taskRoleArn": "arn:aws:iam::ACC_ID:role/name-task-role",
    "memory": "1024",
    "cpu": "512",
    "containerDefinitions": [
      {
        "image": "ACC_ID.dkr.ecr.eu-central-1.amazonaws.com/name-ecr-repo:latest",
        "name": "name-container",
        "mountPoints": [],
        "logConfiguration": {
          "options": {
            "awslogs-group": "/aws/ecs/task-name",
            "awslogs-region": "eu-central-1",
            "awslogs-stream-prefix": "rails"
          },
          "logDriver": "awslogs"
        },
        "cpu": 0,
        "portMappings": [
          {
            "protocol": "tcp",
            "containerPort": 3000,
            "hostPort": 3000
          }
        ],
        "environment": [],
        "environmentFiles": [
            {
              "value": "name-s3-store-envs/fe-app/.env",
              "type": "s3"
            }
        ],
        "essential": true
      }
    ]
}

main.tf

resource "aws_ecs_service" "ecs_service" {
  ...

  deployment_controller {
    type = CODE_DEPLOY
  }
}

resource "aws_codedeploy_app" "codedeploy_app" {
  name             = "${var.codedeploy_app.name}-codedeploy-app"
  compute_platform = "ECS"
}

resource "aws_codedeploy_deployment_group" "codedeploy_deployment_group" {
  app_name               = aws_codedeploy_app.codedeploy_app.name
  deployment_group_name  = "${var.deploy_name}-deploy-grp"
  service_role_arn       = aws_iam_role.code_deploy_role.arn
  deployment_config_name = "CodeDeployDefault.ECSAllAtOnce"
  autoscaling_groups     = var.codedeploy_deployment_groups[0].autoscaling_groups

  deployment_style {
    deployment_type   = "BLUE_GREEN"
    deployment_option = "WITH_TRAFFIC_CONTROL"
  }

  auto_rollback_configuration {
    enabled = var.codedeploy_deployment_groups[0].auto_rollback_configuration
    events  = ["DEPLOYMENT_FAILURE"]
  }

  load_balancer_info {
    target_group_pair_info {
      prod_traffic_route {
        listener_arns = [aws_lb_listener.listen_443.arn]
      }
      target_group {
        name = aws_lb_target_group.target_group_blue.name
      }
      target_group {
        name = aws_lb_target_group.target_group_green.name
      }
    }
  }
}

resource "aws_codepipeline" "codepipeline" {
  name          = "${var.codepipeline_app.name}-codepipeline"
  pipeline_type = "V2"
  role_arn      = aws_iam_role.code_pipeline_role.arn

  artifact_store {
    location = module.s3_artifact.s3_bucket_id
    type     = "S3"

  ...

  stage {
    name = "Deploy"
    action {
      name            = "Deploy-BlueGreen"
      category        = "Deploy"
      owner           = "AWS"
      provider        = "CodeDeployToECS"
      input_artifacts = ["build"]
      version          = "1"
      run_order        = "1"
      configuration = {
        ApplicationName                = aws_codedeploy_app.codedeploy_app.name
        DeploymentGroupName            = "${var.deploy_name}-deploy-grp"
        AppSpecTemplateArtifact        = "build"
        AppSpecTemplatePath            = var.codepipeline_app.app_spec_path
        TaskDefinitionTemplateArtifact = "build"
        TaskDefinitionTemplatePath     = var.codepipeline_app.task_def_path
      }
    }
  }

最奇怪的是没有部署,只有上面的日志

部署

部署grp

有人可以帮我解决这个问题吗?我已经与这个错误斗争了几个小时

我尝试更改、更新、验证配置,但没有任何效果

amazon-web-services amazon-ecs aws-code-deploy
1个回答
0
投票

我已经知道哪里错了 结果,它必须是 S3 的 ARN,而不是 S3 的名称

        "environmentFiles": [
            {
              "value": "arn:aws:s3:::name-s3-store-envs/fe-app/.env",
              "type": "s3"
            }
        ],
© www.soinside.com 2019 - 2024. All rights reserved.