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
相关产品推荐
相关产品推荐

