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

Terraform更新AWS控制台创建的Lambda函数报参数错误咨询

问题结论

不能通过Terraform的data数据源块实现现有Lambda函数的更新。

报错原因

data "aws_lambda_function"是只读数据源,唯一作用是查询、拉取AWS上已存在Lambda的配置信息,本身不具备创建、修改、删除资源的能力,因此不支持filename、source_code_hash、role这类用于写入配置的参数,你在data块里配置这些参数自然会触发"参数不受支持"的报错。

正确更新现有Lambda的操作步骤

要更新此前在控制台创建的Lambda函数,你需要使用resource "aws_lambda_function"资源块接管该资源的管理,操作流程如下:

  • 编写和现有Lambda配置匹配的资源块,代码打包逻辑可以保留原来的archive_file配置,参考示例:
data "archive_file" "stop_ec2" {
  type        = "zip"
  source_file = "src_dir/stop_ec2.py"
  output_path = "dest_dir/stop_ec2_upload.zip"
}

resource "aws_lambda_function" "existing" {
  function_name    = "MyPocLambda"
  role             = aws_iam_role.iam_for_lambda.arn
  filename         = "dest_dir/stop_ec2_upload.zip"
  source_code_hash = data.archive_file.stop_ec2.output_base64sha256
  # 以下参数请和你当前Lambda的实际配置保持一致,避免非必要变更
  handler          = "stop_ec2.lambda_handler"
  runtime          = "python3.9"
  timeout          = 3
}
  • 执行导入命令,把控制台创建的现有Lambda同步到Terraform本地状态中:
terraform import aws_lambda_function.existing MyPocLambda
  • 执行terraform plan查看变更计划,确认输出的变更项只有你预期的代码更新、没有误改其他配置后,再执行terraform apply即可完成Lambda的更新。

后续这个Lambda的所有配置、代码调整,都可以直接修改对应resource块的参数执行apply完成,不需要再到控制台手动操作。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:48:20