Search code examples
aws-lambdaterraformaws-lambda-layers

Is there a way, inside a terraform script, to retrieve the latest version of a layer?


I have lambdas that reference a layer, this layer is maintained by someone else and when a new version is released I have to update my terraform code to put the latest version in the arn (here 19).

Is there a way, in the terraform script, to get the latest version and use it?

module "lambda_function" {
  source = "terraform-aws-modules/lambda/aws"

  function_name = "my-lambda1"
  description   = "My awesome lambda function"
  handler       = "index.lambda_handler"
  runtime       = "python3.8"

  source_path = "../src/lambda-function1"

  tags = {
    Name = "my-lambda1"
  }
  
  layers = [
    "arn:aws:lambda:eu-central-1:587522145896:layer:my-layer-name:19"
  ]
}

Thanks.

ps : this means the layer's terraform script is not in mine, it's an other script that I don't have access to.


Solution

  • You can use the aws_lambda_layer_version data source to discover the latest version.

    For example:

    module "lambda_function" {
      source = "terraform-aws-modules/lambda/aws"
    
      function_name = "my-lambda1"
      description   = "My awesome lambda function"
      handler       = "index.lambda_handler"
      runtime       = "python3.8"
    
      source_path = "../src/lambda-function1"
    
      tags = {
        Name = "my-lambda1"
      }
      
      layers = [
        data.aws_lambda_layer_version.layer_version.arn
      ]
    }
    
    data "aws_lambda_layer_version" "layer_version" {
      layer_name = "my-layer-name"
    }