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

Terraform 12对接LocalStack执行apply操作长时间卡住问题求助

问题原因
  • 端口配置不兼容:你使用的latest版本LocalStack已经废弃了各服务独立端口的设计,改为所有服务统一监听4566端口,你配置里写的4569(DynamoDB)、4574(Lambda)都是v0.14之前版本的旧端口,最新镜像不会监听这些端口,导致Terraform的创建请求无响应,一直处于等待状态。
  • 区域配置不一致:LocalStack环境变量里设置的DEFAULT_REGION=ap-southeast-2,但Terraform AWS provider里指定的region = "us-east-1",区域不匹配会导致资源校验失败,进一步加重卡住问题。
  • 可选异常:如果你的Docker环境没有提前创建localstack-tutorial网络,LocalStack启动时会报错,也会导致服务不可用。
解决办法

方案一(推荐:适配新版LocalStack)

  1. 修改docker-compose.yml配置:
version: '3.8'
services:
  localstack:
    image: localstack/localstack:latest
    ports:
      - 8080:8080 # webui
      - 4566:4566 # 统一服务端口
    environment:
      - DATA_DIR=/tmp/localstack/data
      - DEBUG=1
      - DEFAULT_REGION=ap-southeast-2
      - DOCKER_HOST=unix:///var/run/docker.sock
      - LAMBDA_EXECUTOR=docker-reuse
      - SERVICES=lambda,dynamodb
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
  1. 修改Terraform配置:
provider "aws" {
  access_key                  = "mock_access_key"
  region                      = "ap-southeast-2" # 和LocalStack的默认区域保持一致
  s3_force_path_style         = true
  secret_key                  = "mock_secret_key"
  skip_credentials_validation = true
  skip_metadata_api_check     = true
  skip_requesting_account_id  = true

  endpoints {
    dynamodb = "http://localhost:4566" # 改用统一端口
    lambda   = "http://localhost:4566" # 改用统一端口
  }
}

resource "aws_dynamodb_table" "table_1" {
  name           = "table_1"
  read_capacity  = "20"
  write_capacity = "20"
  hash_key       = "id"

  attribute {
    name = "id"
    type = "S"
  }

  # 可选:添加超时配置避免无限等待
  timeouts {
    create = "1m"
  }
}
  1. 执行验证步骤:
  • 先停止并删除旧的LocalStack容器:docker-compose down -v
  • 启动新的LocalStack容器:docker-compose up -d
  • 等待10秒后验证服务正常:curl http://localhost:4566/health,确认返回中dynamodb的状态为running
  • 清除Terraform旧状态:terraform destroy --auto-approve
  • 重新执行应用:terraform apply --auto-approve

方案二(兼容旧端口配置)

如果你不想修改端口配置,直接把LocalStack镜像降级到支持独立端口的旧版本即可:
把docker-compose里的镜像改为localstack/localstack:0.12.18,重启容器后重新执行Terraform操作即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:36:03