Terraform - что такое URI для вызова лямбда через псевдоним? - PullRequest
0 голосов
/ 31 августа 2018

Вопрос

Чтобы вызвать Lambda из API GW, invoke_arn можно использовать для ресурсов aws_lambda_function.

invoke_arn - ARN, который будет использоваться для вызова лямбда-функции из API-шлюза.

resource "aws_api_gateway_integration" "videos" {
  rest_api_id = "${aws_api_gateway_rest_api.24_hour_video.id}"
  resource_id = "${aws_api_gateway_method.videos_get.resource_id}"
  http_method = "${aws_api_gateway_method.videos_get.http_method}"

  integration_http_method = "GET"
  type                    = "AWS_PROXY"  # Lambda Proxy
  uri                     = "${aws_lambda_function.list_videos.invoke_arn}"
}

Что установить в uri для вызова той же лямбды через псевдоним?

resource "aws_lambda_alias" "lambda_alias_list_videos" {
  name             = "get_video_list"
  description      = "Alias to lambda_list_videos"
  function_name    = "${aws_lambda_function.list_videos.arn}"
  function_version = "$LATEST"
}

1 Ответ

0 голосов
/ 31 августа 2018

Ресурс aws_lambda_alias создает псевдоним, который указывает на конкретную версию лямбда-функции. Сам псевдоним не может быть вызван.

Вместо этого вы должны создать aws_lambda_function Источник данных, который указывает на псевдоним, и использовать его свойство invoke_arn. Вы можете использовать аргумент qualifier в aws_lambda_function, чтобы указать либо версию, либо псевдоним (для получения дополнительной информации см. Лямбда-вызов AWS ).

Ваш пример показывает, что вы уже создали псевдоним get_video_list , который указывает на версию $ LATEST . Вам необходимо создать новый источник данных, который указывает на этот псевдоним:

data "aws_lambda_function" "my_function_get_video_list" {
  function_name = "your-function-name"
  qualifier = "get_video_list"
}

Теперь вы можете получить вызов ARN для функции с псевдонимом:

${aws_lambda_function.my_function.get_video_list.invoke_arn}
...