You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨区域复用IAM角色部署GTM服务器端后ECS日志组未创建问题

问题描述

我按照AWS官方指南部署了GTM服务器端架构,在eu-central-1区域部署时一切正常,ECS服务日志能正常查看,对应的Terraform任务定义代码如下:

resource "aws_ecs_task_definition" "PrimaryServerSideContainer" {
  family                   = "PrimaryServerSideContainer"
  network_mode             = "awsvpc"
  requires_compatibilities = ["FARGATE"]
  cpu                      = 2048
  memory                   = 4096
  execution_role_arn       = "arn:aws:iam::133:role/gtm_container_exec_role"
  task_role_arn            = "arn:aws:iam::133:role/gtm_container_role"
  runtime_platform {
    operating_system_family = "LINUX"
    cpu_architecture        = "X86_64"
  }
  container_definitions = <<TASK_DEFINITION
  [
  {
    "name": "primary",
    "image": "gcr.io/cloud-tagging-10302018/gtm-cloud-image",
    "environment": [
      {
        "name": "PORT",
        "value": "80"
      },
      {
        "name": "PREVIEW_SERVER_URL",
        "value": "${var.PREVIEW_SERVER_URL}"
      },
      {
        "name": "CONTAINER_CONFIG",
        "value": "${var.CONTAINER_CONFIG}"
      }
    ],
    "cpu": 2048,
    "memory": 4096,
    "essential": true,
    "logConfiguration": {
          "logDriver": "awslogs",
          "options": {
            "awslogs-group": "gtm-primary",
            "awslogs-create-group": "true",
            "awslogs-region": "eu-central-1",
            "awslogs-stream-prefix": "ecs"
          }
        },
    "portMappings" : [
        {
          "containerPort" : 80,
          "hostPort"      : 80
        }
      ]
  }
]
TASK_DEFINITION
}

但在eu-west-2区域复用现有IAM角色部署相同架构时,GTM运行正常,但日志组gtm-primary没有被创建。我已经修改了日志配置里的区域参数:

"logConfiguration": {
          "logDriver": "awslogs",
          "options": {
            "awslogs-group": "gtm-primary",
            "awslogs-create-group": "true",
            "awslogs-region": "eu-west-2",
            "awslogs-stream-prefix": "ecs"
          }
        },

当前使用的IAM角色详情:

  • gtm_container_exec_role:附加了AmazonECSTaskExecutionRolePolicy和CloudWatchLogsFullAccess权限
  • gtm_container_role:信任策略如下:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "ecs-tasks.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

目前能看到Container Insights的性能日志/aws/ecs/containerinsights/gtm/performance,但就是看不到ECS服务的日志。为什么同一个架构换个区域就出问题了?

排查方向与解决步骤

1. 检查IAM角色的区域限制

虽然IAM是全局服务,但要确认gtm_container_exec_role的信任策略是否存在区域限制条件。如果信任策略里加了Condition限定了eu-central-1区域,需要把eu-west-2也加入允许范围。

另外,确认CloudWatchLogsFullAccess权限策略没有针对eu-west-2的资源做拒绝配置(默认该策略是全局允许的,但如果有自定义修改需要排查)。

2. 手动验证日志组创建权限

直接在eu-west-2区域手动创建gtm-primary日志组,然后重启ECS任务,观察是否能生成日志流:

  • 如果手动创建后日志正常输出,说明任务本身有日志输出能力,之前自动创建日志组的环节失败,大概率是网络或权限问题导致任务无法调用CloudWatch Logs的创建接口
  • 如果手动创建后仍无日志,检查任务的日志配置是否正确应用,或者容器本身是否有日志输出

3. 检查ECS任务的网络连通性

因为使用awsvpc网络模式,需确认任务所在子网能访问CloudWatch Logs服务:

  • 若为私有子网,必须配置NAT网关确保任务能访问公网;或创建CloudWatch Logs的VPC端点,并配置安全组允许ECS任务的流量访问端点
  • 可以通过在任务内执行curl logs.eu-west-2.amazonaws.com测试网络连通性(需进入容器终端操作)

4. 核对ECS任务定义的实际配置

去eu-west-2的ECS控制台查看当前生效的任务定义,确认日志配置中的awslogs-region确实是eu-west-2,避免Terraform部署时出现配置未更新的情况。

也可以用AWS CLI查看任务的详细配置:

aws ecs describe-tasks --cluster <你的集群名称> --tasks <任务ID> --region eu-west-2

在返回结果中找到containers[].logConfiguration部分,核对参数是否正确。

5. 查看ECS任务的启动日志

在ECS控制台找到对应任务,查看任务的启动日志(若任务曾启动失败),里面会包含日志驱动初始化失败的具体原因,比如权限不足、网络不通等信息。


内容的提问来源于stack exchange,提问作者x89

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 08:57:50