Terraform导入AWS Lambda后函数名显示为ARN的问题解决
解决Terraform导入AWS Lambda后函数名显示为ARN的问题
问题复现
将现有Lambda函数导入Terraform状态后,通过terraform show查看发现function_name被设置为完整ARN,而非AWS实际的短名称my-lambda-function,这与本地配置文件中定义的function_name = "my-lambda-function"产生差异,重复移除并重新导入资源也无法解决该问题。
解决方案
1. 升级Terraform AWS Provider
部分旧版本的AWS Provider存在导入Lambda时将ARN写入function_name的bug,先检查并升级到最新稳定版:
在Terraform配置文件中更新provider版本:
terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 5.0" # 替换为当前最新稳定版 } } }
执行以下命令完成升级后重新尝试导入:
terraform init -upgrade
2. 手动修正Terraform状态文件
如果升级后问题依旧,可以直接修改状态文件(操作前务必备份):
- 先备份状态文件:
terraform state pull > terraform.tfstate.backup - 打开
terraform.tfstate文件,找到对应aws_lambda_function.my_lambda_function的资源块,将function_name字段的值从完整ARN改为短名称"my-lambda-function" - 推送修改后的状态:
terraform state push terraform.tfstate - 执行
terraform plan验证,此时函数名的差异应该消失。
3. 使用短函数名而非ARN导入
尝试直接用短函数名进行导入,确保Terraform配置的AWS区域与Lambda所在区域(eu-west-3)一致:
terraform import aws_lambda_function.my_lambda_function my-lambda-function
内容的提问来源于stack exchange,提问作者user27008283
相关产品推荐
相关产品推荐

