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

Terraform引用S3文件创建Lambda Layer时遇数据源不支持错误求助

Terraform引用S3文件创建Lambda Layer时遇数据源不支持错误求助

嘿,我一眼就揪出问题所在啦!你碰到的报错根源是Terraform AWS Provider的数据源名称大小写不匹配——你写的是aws_S3_object,但官方正确的数据源名称是全小写的aws_s3_object(注意把大写的S3改成小写s3)。Terraform对资源/数据源的名称大小写是严格敏感的,所以Provider根本识别不了你写的那个错误名称。

修正后的核心代码

先把数据源部分改成正确的名称:

data "aws_s3_object" "layer_object" {
  bucket = "agent-buildup-806471337920"
  key    = "python.zip"
}

然后在aws_lambda_layer_version引用数据源的地方,也要同步改成小写的名称:

resource "aws_lambda_layer_version" "my_layer" {
  filename            = "python.zip"
  layer_name          = "Requests-2.31.0"
  description         = "Requests module for python 3.8 compatibilty"
  compatible_runtimes = ["python3.8"]
  s3_bucket           = data.aws_s3_object.layer_object.bucket
  s3_key              = data.aws_s3_object.layer_object.key
}

额外优化小建议

其实如果你的场景只是引用S3中已经存在的zip包创建Lambda Layer,完全没必要用aws_s3_object数据源——因为你已经明确知道bucket和key的具体名称了,直接把它们硬编码或者用变量传入就行,这样代码更简洁,还能省去不必要的数据源依赖。比如可以改成这样:

resource "aws_lambda_layer_version" "my_layer" {
  filename            = "python.zip"
  layer_name          = "Requests-2.31.0"
  description         = "Requests module for python 3.8 compatibilty"
  compatible_runtimes = ["python3.8"]
  s3_bucket           = "agent-buildup-806471337920"
  s3_key              = "python.zip"
}

改完之后,重新执行terraform init和terraform apply应该就能正常运行啦!

备注:内容来源于stack exchange,提问作者Lakshay Kashyap

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 07:54:38