簡體   English   中英

terraform aws apigateway path_part

[英]terraform aws apigateway path_part

我在下面的場景中嘗試了一個 POC,使用的是 terraform api_gateway。

path= /demo/user(GET) -> 調用 lamda function(你好)。
path= /demo/user/{id)(put) -> 調用 lamda function(測試)。
所以在這里我創建了以下資源

resource "aws_api_gateway_rest_api" "MyDemoAPI" {
  name        = "MyDemoAPI"
  description = "This is my API for demonstration purposes"
}

resource "aws_api_gateway_resource" "MyDemoResource" {
  rest_api_id = aws_api_gateway_rest_api.MyDemoAPI.id
  parent_id   = aws_api_gateway_rest_api.MyDemoAPI.root_resource_id
  path_part   = "demo"
}
resource "aws_api_gateway_integration" "MyDemoIntegration" {
  rest_api_id          = aws_api_gateway_rest_api.MyDemoAPI.id
  resource_id          = aws_api_gateway_resource.MyDemoResource.id
  http_method          = aws_api_gateway_method.MyDemoMethod.http_method
  type                 = "AWS_PROXY"
  uri                  = "<lambda function arn>/invocation"
}

在 terraform 中應用它正在 /demo 下創建資源
但是在這里我該如何實現路徑?
path= /demo/user(GET) -> 調用 lamda function(你好)。
path= /demo/user/{id)(PUT) -> 調用 lamda function(測試)。

任何評論將不勝感激。

對於 /demo/user (GET),您需要在“demo”下創建資源“user”並為“user”資源添加集成。 對於 /demo/user/{id} (PUT),您需要在“user”下創建另一個資源“userId”,並為“userId”資源添加集成。

必須使用相應的 Lambda 函數為它們添加 Http 方法和 Lambda 集成。

更新后的代碼如下所示。

# root resource
resource "aws_api_gateway_rest_api" "MyDemoAPI" {
  name        = "MyDemoAPI"
  description = "This is my API for demonstration purposes"
}

# demo resource (corresponding to path /demo)
resource "aws_api_gateway_resource" "MyDemoResource" {
  rest_api_id = aws_api_gateway_rest_api.MyDemoAPI.id
  parent_id   = aws_api_gateway_rest_api.MyDemoAPI.root_resource_id
  path_part   = "demo"
}

# user resource (corresponding to path /demo/user)
resource "aws_api_gateway_resource" "MyDemoUserResource" {
  rest_api_id = aws_api_gateway_rest_api.MyDemoAPI.id
  parent_id   = aws_api_gateway_resource.MyDemoResource.id
  path_part   = "user"
}

# adding GET method for path /demo/user
resource "aws_api_gateway_method" "MyDemoUserGetMethod" {
  rest_api_id   = aws_api_gateway_rest_api.MyDemoAPI.id
  resource_id   = aws_api_gateway_resource.MyDemoUserResource.id
  http_method   = "GET"
  authorization = "NONE"
}

# userId resource (corresponding to path /demo/user/{id})
resource "aws_api_gateway_resource" "MyDemoUserIdResource" {
  rest_api_id = aws_api_gateway_rest_api.MyDemoAPI.id
  parent_id   = aws_api_gateway_resource.MyDemoUserResource.id
  path_part   = "{id}"
}

# adding PUT method for path /demo/user/{id}
resource "aws_api_gateway_method" "MyDemoUserIdPutMethod" {
  rest_api_id   = aws_api_gateway_rest_api.MyDemoAPI.id
  resource_id   = aws_api_gateway_resource.MyDemoUserIdResource.id
  http_method   = "PUT"
  authorization = "NONE"
}

# adding Lambda integration for GET at /demo/user
resource "aws_api_gateway_integration" "MyDemoUserIntegration" {
  rest_api_id          = aws_api_gateway_rest_api.MyDemoAPI.id
  resource_id          = aws_api_gateway_resource.MyDemoUserResource.id
  http_method          = aws_api_gateway_method.MyDemoUserGetMethod.http_method
  type                 = "AWS_PROXY"
  uri                  = "<lambda function arn>/invocation"
}

# adding Lambda integration for PUT at /demo/user/{id}
resource "aws_api_gateway_integration" "MyDemoUserIdIntegration" {
  rest_api_id          = aws_api_gateway_rest_api.MyDemoAPI.id
  resource_id          = aws_api_gateway_resource.MyDemoUserIdResource.id
  http_method          = aws_api_gateway_method.MyDemoUserIdPutMethod.http_method
  type                 = "AWS_PROXY"
  uri                  = "<lambda function arn>/invocation"
}

參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM