在 Terraform 中添加 API 映射模板

问题描述 投票:0回答:1

我想在 AWS API Gateway 的集成请求中添加标头 (Content-Type) 和映射模板。在学习本教程时,我可以通过控制台轻松添加这些参数。 https://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-kinesis.html

但是,我无法弄清楚使用 Terraform 添加它们的语法。这是迄今为止我的集成请求:

resource "aws_api_gateway_integration" "kinesis_integration" {
  rest_api_id          = aws_api_gateway_rest_api.shippeo_api_kinesis.id
  resource_id          = aws_api_gateway_resource.shippeo_api_resource_kinesis.id
  http_method          = aws_api_gateway_method.post_json_files_kinesis.http_method
  credentials          = aws_iam_role.shippeo_integration_role.arn
  type                 = "AWS"
  uri                  = "arn:aws:apigateway:eu-central-1:kinesis:action/PutRecord"
  integration_http_method     = "POST"
  depends_on = [
    aws_api_gateway_resource.shippeo_api_resource_kinesis
  ]
}

如何使用 Terraform 指定 header (Content-Type)+Mapped Frommapping templates,如下所示?

映射模板:

{
    "StreamName": "$input.params('stream-name')",
    "Data": "$util.base64Encode($input.json('$.Data'))",
    "PartitionKey": "$input.path('$.PartitionKey')"
}

在文档中,提到了selection_patternresponse_templates,但我不确定如何在我的情况下使用它。

amazon-web-services terraform aws-api-gateway terraform-provider-aws amazon-kinesis
1个回答
0
投票

你应该能够通过这个实现它:

resource "aws_api_gateway_integration" "kinesis_integration" {
  rest_api_id    = aws_api_gateway_rest_api.shippeo_api_kinesis.id
  resource_id    = aws_api_gateway_resource.shippeo_api_resource_kinesis.id
  http_method    = aws_api_gateway_method.post_json_files_kinesis.http_method
  credentials    = aws_iam_role.shippeo_integration_role.arn
  type           = "AWS"
  uri            = "arn:aws:apigateway:eu-central-1:kinesis:action/PutRecord"
  integration_http_method     = "POST"
  depends_on = [
    aws_api_gateway_resource.shippeo_api_resource_kinesis
  ]

  request_templates = {
    "application/json" = <<REQUEST_TEMPLATE
    {
        "StreamName": "$input.params('stream-name')",
        "Data": "$util.base64Encode($input.json('$.Data'))",
        "PartitionKey": "$input.path('$.PartitionKey')"
    }
  REQUEST_TEMPLATE
  }

  passthrough_behavior = "WHEN_NO_TEMPLATES"
}
© www.soinside.com 2019 - 2024. All rights reserved.