Mar*_*lte 4 amazon-web-services terraform aws-api-gateway aws-step-functions
我想使用 Terraforms api_gateway_integration和sfn_state_machine使用 API 网关创建一个步进函数 API。
我现在必须在 api_gateway_integration 处填写uri 参数。
我的 step 函数已创建,我可以引用 step 函数的 id(类似于arn:aws:states:*region*:*account*:stateMachine:*step-function-name*:stateMachine:*step-function-entry-point*)。
如果 AWS 阶跃函数是目标,谁能告诉我该方案或 uri 参数外观的示例?
resource "aws_api_gateway_integration" "endpoint_integration" {
  ...
  integration_http_method = "POST"
  type = "AWS"
  uri = <<<<< What to place here???
}
Run Code Online (Sandbox Code Playgroud)
    与Terraform 将 AWS lambda 与 API 网关集成相比,您不能“直接”从 API 网关指向特定的 AWS 状态机(使用“uri”参数)。相反,aws_api_gateway_integration-resource 指向AWS 状态机一般来说,具体的 AWS 状态机会被AWS ARN引用作为请求的一部分。您可以使用API 网关请求模板将 API 网关映射到具体的状态机,这样就可以省略 stateMachineArn请求您的 API 时。有关详细说明,请查看AWS 文档“使用 API 网关创建 Step Functions API”。
工作示例
# var.aws_region = eu-central-1
# var.sfn_orchestrater_arn = arn:aws:states:eu-central-1:*account*:stateMachine:*step-function-entry-point*
resource "aws_api_gateway_integration" "endpoint_integration" {
  http_method             = "POST"
  integration_http_method = "POST"
  type                    = "AWS"
  passthrough_behavior    = "NEVER"
  uri                     = "arn:aws:apigateway:${var.aws_region}:states:action/StartExecution"
  request_templates = {
    "application/json" = <<EOF
{
    "input": "$util.escapeJavaScript($input.json('$'))",
    "stateMachineArn": "${var.sfn_orchestrater_arn}"
}
EOF
  }
}
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1069 次  |  
        
|   最近记录:  |