我要create a step function API using API gateway使用 Terraforms api_gateway_integration和 sfn_state_machine .
我现在必须填写 uri-parameter在 api_gateway_integration。
我的 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???
}
最佳答案
与 Terraform-integrate an AWS lambda with an API gateway 相比,您不能“直接”从 API 网关指向特定的 AWS 状态机(使用“uri”-参数)。相反,aws_api_gateway_integration-resource 通常指向 AWS 状态机,即特定的 AWS状态机将被AWS ARN引用作为请求的一部分。您可以使用API gateway request template从API网关映射到特定状态机,这样您在请求您的API时就可以省略die stateMachineArn。有关详细说明,请查看AWS documentation "Creating a Step Functions API Using API Gateway" .
工作示例
# 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
}
}
关于amazon-web-services - Terraform:如果目标是 aws_sfn_state_machine,则 aws_api_gateway_integration 的 uri 参数是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54426135/