amazon-web-services - Terraform:如果目标是 aws_sfn_state_machine,则 aws_api_gateway_integration 的 uri 参数是什么

标签 amazon-web-services aws-api-gateway terraform aws-step-functions

我要create a step function API using API gateway使用 Terraforms api_gateway_integrationsfn_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/

相关文章:

amazon-web-services - 在多个 AWS EC2 实例上安装 zookeeper

amazon-web-services - 在 terraform 中调用远程 lambda 函数

amazon-web-services - 如何为API请求添加Cognito授权?这样 Lambda 就可以访问它

amazon-web-services - AWS CDK 如何根据 OpenApi 规范创建由 Lambda 支持的 API 网关?

javascript - aws - CloudFront createInvalidation() 方法参数在使用 promises 时出错

csv - API 网关 + Lambda 下载 CSV 文件

amazon-web-services - cloudformation 未在 api 网关中附加请求的路径参数

amazon-web-services - Terraform RDS 数据库凭据

python - pytest localstack测试报错You必须指定区域

Terraform 动态/条件资源创建