Есть ли способ внутри сценария терраформирования получить последнюю версию слоя?

#aws-lambda #terraform #aws-lambda-layers

Вопрос:

У меня есть лямбды, которые ссылаются на слой, этот слой поддерживается кем-то другим, и когда выходит новая версия, я должен обновить свой код терраформирования, чтобы поместить последнюю версию в arn (здесь 19).

Есть ли способ в сценарии terraform получить последнюю версию и использовать ее?

 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"
  ]
}
 

Спасибо.

ps : это означает, что сценарий терраформирования слоя не в моем, это другой сценарий, к которому у меня нет доступа.

Ответ №1:

Вы можете использовать aws_lambda_layer_version источник данных, чтобы узнать последнюю версию.

Например:

 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"
}


 

Комментарии:

1. кстати, я посмотрел документ, но в нем не говорится о идентификаторе учетной записи, что делать, если я хочу использовать лямбду, которая находится в другой учетной записи? невозможно использовать источник данных?