Как передать параметры пути URL или строку запроса в Api Gateway + Lambda с помощью Terraform? - PullRequest
0 голосов
/ 26 июня 2019

Я использовал Terraform для создания структуры в AWS. Все было хорошо, но теперь я застрял, потому что мне нужно реализовать API с API Gateway + Lambda. Я действительно много искал, но документы не помогают. В учебнике HashCorp показаны только простые URL-адреса.

Итак, как я могу передать строки запроса или параметры пути в моих URL в API Gateway + Lambda? У меня также есть сомнения относительно того, стоит ли мне использовать Proxy_Lambda или просто Lambda.

Это код шлюза API:

  resource "aws_api_gateway_rest_api" "accountant_api" {
  name        = "dev-test"
  description = "test"
}

resource "aws_api_gateway_resource" "proxy" {
  rest_api_id = "${aws_api_gateway_rest_api.accountant_api.id}"
  parent_id   = "${aws_api_gateway_rest_api.accountant_api.root_resource_id}"
  path_part   = "emailAccountant"
}


resource "aws_api_gateway_method" "proxy" {
  rest_api_id   = "${aws_api_gateway_rest_api.accountant_api.id}"
  resource_id   = "${aws_api_gateway_resource.proxy.id}"
  http_method   = "GET"
  authorization = "NONE"


}

resource "aws_api_gateway_integration" "lambda" {
  rest_api_id = "${aws_api_gateway_rest_api.accountant_api.id}"
  resource_id = "${aws_api_gateway_method.proxy.resource_id}"
  http_method = "${aws_api_gateway_method.proxy.http_method}"

  integration_http_method = "POST"
  type                    = "AWS"
  uri                     = "${aws_lambda_function.lambda_get_email_sent.invoke_arn}"
}

resource "aws_api_gateway_deployment" "example" {
  depends_on = [
    "aws_api_gateway_integration.lambda"
  ]

  rest_api_id = "${aws_api_gateway_rest_api.accountant_api.id}"
  stage_name  = "dev"
}

Лямбда-разрешение:

resource "aws_lambda_permission" "apigw" {
  statement_id  = "AllowAPIGatewayInvoke"
  action        = "lambda:InvokeFunction"
  function_name = "${aws_lambda_function.lambda_get_email_sent.arn}"
  principal     = "apigateway.amazonaws.com"

  # The /*/* portion grants access from any method on any resource
  # within the API Gateway "REST API".
  source_arn = "${aws_api_gateway_deployment.example.execution_arn}/*/*"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...