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

如何通过Terraform设置Fargate实例的IMDSv2元数据跳数

Fargate IMDSv2 跳数配置(Terraform实现)

问题原因

报错根源在于Fargate默认的IMDSv2 HTTP响应跳数(http_put_response_hop_limit)为1,而你使用的InstanceProfileAWSCredentials在请求元数据服务器时,内部请求链路存在额外跳转,超出了默认跳数限制,导致无法连接凭据服务器。

Terraform 配置方案

1. 针对单个ECS任务配置

在aws_ecs_task_definition资源中添加metadata_options块,将http_put_response_hop_limit设为2:

resource "aws_ecs_task_definition" "target_task" {
  family                   = "your-task-family"
  network_mode             = "awsvpc" # Fargate 强制要求 awsvpc 网络模式
  requires_compatibilities = ["FARGATE"]
  cpu                      = "256"
  memory                   = "512"
  execution_role_arn       = aws_iam_role.ecs_execution_role.arn
  task_role_arn            = aws_iam_role.ecs_task_role.arn

  # 配置 IMDSv2 跳数限制
  metadata_options {
    http_endpoint               = "ENABLED"
    http_put_response_hop_limit = 2
    http_tokens                 = "REQUIRED" # 可选,强制使用 IMDSv2,增强安全性
  }

  container_definitions = jsonencode([
    {
      name      = "your-container"
      image     = "your-image:tag"
      essential = true
      # 容器相关配置
    }
  ])
}

2. 全局ECS集群配置(所有任务默认继承)

若需要集群内所有Fargate任务统一应用该配置,可在aws_ecs_cluster资源中设置metadata_configuration:

resource "aws_ecs_cluster" "target_cluster" {
  name = "your-cluster-name"

  configuration {
    metadata_configuration {
      http_put_response_hop_limit = 2
    }

    # 其他集群配置(如执行命令、Service Connect等)
  }
}

注意事项

  • 必须确保任务网络模式为awsvpc,这是Fargate的硬性要求,也是IMDS功能生效的前提。
  • 开启http_tokens = "REQUIRED"可强制任务使用IMDSv2,避免回退到安全性较低的IMDSv1,建议启用。
  • 配置修改后,需重新部署对应ECS任务,新配置才会生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 00:08:11