user27008283
user27008283

Reputation: 35

lambda function name problem after terraform import

I'm trying to import an existing AWS Lambda function into my Terraform state, but I'm encountering an unexpected behavior with the function name. When I list my Lambda functions using the AWS CLI, I see the correct function name: Copyaws lambda list-functions

{
    "Functions": [
        {
            "FunctionName": "my-lambda-function",
            "FunctionArn": "arn:aws:lambda:eu-west-3:123456789012:function:my-lambda-function",
            ...
        }
    ]
}

However, when I import this function into Terraform using:

terraform import aws_lambda_function.my_lambda_function arn:aws:lambda:eu-west-3:123456789012:function:my-lambda-function

And then check the state with terraform show, I see that the function_name is set to the full ARN instead of just "my-lambda-function":

resource "aws_lambda_function" "my_lambda_function" {
    function_name = "arn:aws:lambda:eu-west-3:123456789012:function:my-lambda-function"
    ...
}

This causes issues because Terraform now thinks the function name should be the full ARN, which doesn't match the actual resource in AWS. My Terraform configuration file defines the function name correctly:

resource "aws_lambda_function" "my_lambda_function" {
  function_name = "my-lambda-function"
  ...
}

How can I resolve this discrepancy and get Terraform to recognize the correct short name of the Lambda function after import?

i removed the resource from the state file and imported again but the same problem persist

Upvotes: 0

Views: 183

Answers (1)

0xn0b174
0xn0b174

Reputation: 1022

during the import process terraform sometimes misinterprets the resource ID provided (in this case, the ARN) and assigns it directly to the function_name attribute, which should only be the short name of the lambda function.

remove the lambda from terraform state:

terraform state rm aws_lambda_function.my_lambda_function

manually import your lambda function:

terraform import aws_lambda_function.my_lambda_function my-lambda-function

run terraform show:

terraform show

then you can plan and apply

Upvotes: 1

Related Questions