我正在尝试将现有的 AWS Lambda 函数导入到我的 Terraform 状态中,但我遇到了函数名称的意外行为。 当我使用 AWS CLI 列出 Lambda 函数时,我看到正确的函数名称: 复制 lambda 列表函数
{
"Functions": [
{
"FunctionName": "my-lambda-function",
"FunctionArn": "arn:aws:lambda:eu-west-3:123456789012:function:my-lambda-function",
...
}
]
}
但是,当我使用以下方法将此函数导入 Terraform 时:
terraform import aws_lambda_function.my_lambda_function arn:aws:lambda:eu-west-3:123456789012:function:my-lambda-function
然后使用 terraform show 检查状态,我看到 function_name 设置为完整的 ARN,而不仅仅是“my-lambda-function”:
resource "aws_lambda_function" "my_lambda_function" {
function_name = "arn:aws:lambda:eu-west-3:123456789012:function:my-lambda-function"
...
}
这会导致问题,因为 Terraform 现在认为函数名称应该是完整的 ARN,这与 AWS 中的实际资源不匹配。 我的 Terraform 配置文件正确定义了函数名称:
resource "aws_lambda_function" "my_lambda_function" {
function_name = "my-lambda-function"
...
}
如何解决此差异并让 Terraform 在导入后识别 Lambda 函数的正确短名称?
我从状态文件中删除了资源并再次导入,但同样的问题仍然存在
从 terraform 状态中删除 lambda:
terraform state rm aws_lambda_function.my_lambda_function
手动导入 lambda 函数:
terraform import aws_lambda_function.my_lambda_function my-lambda-function
运行 terraform show:
terraform show
然后你就可以计划并申请了