provider/aws: Re-implement api gateway parameter handling (#7794)

* provider/aws: Re-implement api gateway parameter handling

this PR cleans up some left overs from PR #4295, namely the parameter handling.

now that GH-2143 is finally closed this PR does away with the ugly
`request_parameters_in_json` and `response_parameters_in_json` hack.

* Add deprecation message and conflictsWith settings

following @radeksimko s advice, keeping the old code around with a deprecation
warning.

this should be cleaned up in a few releases

* provider/aws: fix missing append operation

* provider/aws: mark old parameters clearly as deprecated

* provider/aws work around #8104

following @radeksimko s lead

* provider/aws fix cnp error
This commit is contained in:
Raphael Randschau 2016-08-11 12:49:59 +02:00 committed by Radek Simko
parent d7285d1b14
commit 66a14cb3b7
13 changed files with 201 additions and 78 deletions

View File

@ -75,9 +75,18 @@ func resourceAwsApiGatewayIntegration() *schema.Resource {
Elem: schema.TypeString, Elem: schema.TypeString,
}, },
"request_parameters": &schema.Schema{
Type: schema.TypeMap,
Elem: schema.TypeString,
Optional: true,
ConflictsWith: []string{"request_parameters_in_json"},
},
"request_parameters_in_json": &schema.Schema{ "request_parameters_in_json": &schema.Schema{
Type: schema.TypeString, Type: schema.TypeString,
Optional: true, Optional: true,
ConflictsWith: []string{"request_parameters"},
Deprecated: "Use field request_parameters instead",
}, },
"passthrough_behavior": &schema.Schema{ "passthrough_behavior": &schema.Schema{
@ -107,6 +116,12 @@ func resourceAwsApiGatewayIntegrationCreate(d *schema.ResourceData, meta interfa
} }
parameters := make(map[string]string) parameters := make(map[string]string)
if kv, ok := d.GetOk("request_parameters"); ok {
for k, v := range kv.(map[string]interface{}) {
parameters[k] = v.(string)
}
}
if v, ok := d.GetOk("request_parameters_in_json"); ok { if v, ok := d.GetOk("request_parameters_in_json"); ok {
if err := json.Unmarshal([]byte(v.(string)), &parameters); err != nil { if err := json.Unmarshal([]byte(v.(string)), &parameters); err != nil {
return fmt.Errorf("Error unmarshaling request_parameters_in_json: %s", err) return fmt.Errorf("Error unmarshaling request_parameters_in_json: %s", err)
@ -130,7 +145,6 @@ func resourceAwsApiGatewayIntegrationCreate(d *schema.ResourceData, meta interfa
Type: aws.String(d.Get("type").(string)), Type: aws.String(d.Get("type").(string)),
IntegrationHttpMethod: integrationHttpMethod, IntegrationHttpMethod: integrationHttpMethod,
Uri: uri, Uri: uri,
// TODO reimplement once [GH-2143](https://github.com/hashicorp/terraform/issues/2143) has been implemented
RequestParameters: aws.StringMap(parameters), RequestParameters: aws.StringMap(parameters),
RequestTemplates: aws.StringMap(templates), RequestTemplates: aws.StringMap(templates),
Credentials: credentials, Credentials: credentials,
@ -175,6 +189,7 @@ func resourceAwsApiGatewayIntegrationRead(d *schema.ResourceData, meta interface
d.Set("credentials", integration.Credentials) d.Set("credentials", integration.Credentials)
d.Set("type", integration.Type) d.Set("type", integration.Type)
d.Set("uri", integration.Uri) d.Set("uri", integration.Uri)
d.Set("request_parameters", aws.StringValueMap(integration.RequestParameters))
d.Set("request_parameters_in_json", aws.StringValueMap(integration.RequestParameters)) d.Set("request_parameters_in_json", aws.StringValueMap(integration.RequestParameters))
d.Set("passthrough_behavior", integration.PassthroughBehavior) d.Set("passthrough_behavior", integration.PassthroughBehavior)

View File

@ -56,9 +56,18 @@ func resourceAwsApiGatewayIntegrationResponse() *schema.Resource {
Elem: schema.TypeString, Elem: schema.TypeString,
}, },
"response_parameters": &schema.Schema{
Type: schema.TypeMap,
Elem: schema.TypeString,
Optional: true,
ConflictsWith: []string{"response_parameters_in_json"},
},
"response_parameters_in_json": &schema.Schema{ "response_parameters_in_json": &schema.Schema{
Type: schema.TypeString, Type: schema.TypeString,
Optional: true, Optional: true,
ConflictsWith: []string{"response_parameters"},
Deprecated: "Use field response_parameters instead",
}, },
}, },
} }
@ -73,6 +82,11 @@ func resourceAwsApiGatewayIntegrationResponseCreate(d *schema.ResourceData, meta
} }
parameters := make(map[string]string) parameters := make(map[string]string)
if kv, ok := d.GetOk("response_parameters"); ok {
for k, v := range kv.(map[string]interface{}) {
parameters[k] = v.(string)
}
}
if v, ok := d.GetOk("response_parameters_in_json"); ok { if v, ok := d.GetOk("response_parameters_in_json"); ok {
if err := json.Unmarshal([]byte(v.(string)), &parameters); err != nil { if err := json.Unmarshal([]byte(v.(string)), &parameters); err != nil {
return fmt.Errorf("Error unmarshaling response_parameters_in_json: %s", err) return fmt.Errorf("Error unmarshaling response_parameters_in_json: %s", err)
@ -85,7 +99,6 @@ func resourceAwsApiGatewayIntegrationResponseCreate(d *schema.ResourceData, meta
RestApiId: aws.String(d.Get("rest_api_id").(string)), RestApiId: aws.String(d.Get("rest_api_id").(string)),
StatusCode: aws.String(d.Get("status_code").(string)), StatusCode: aws.String(d.Get("status_code").(string)),
ResponseTemplates: aws.StringMap(templates), ResponseTemplates: aws.StringMap(templates),
// TODO reimplement once [GH-2143](https://github.com/hashicorp/terraform/issues/2143) has been implemented
ResponseParameters: aws.StringMap(parameters), ResponseParameters: aws.StringMap(parameters),
} }
if v, ok := d.GetOk("selection_pattern"); ok { if v, ok := d.GetOk("selection_pattern"); ok {
@ -125,6 +138,7 @@ func resourceAwsApiGatewayIntegrationResponseRead(d *schema.ResourceData, meta i
d.SetId(fmt.Sprintf("agir-%s-%s-%s-%s", d.Get("rest_api_id").(string), d.Get("resource_id").(string), d.Get("http_method").(string), d.Get("status_code").(string))) d.SetId(fmt.Sprintf("agir-%s-%s-%s-%s", d.Get("rest_api_id").(string), d.Get("resource_id").(string), d.Get("http_method").(string), d.Get("status_code").(string)))
d.Set("response_templates", integrationResponse.ResponseTemplates) d.Set("response_templates", integrationResponse.ResponseTemplates)
d.Set("selection_pattern", integrationResponse.SelectionPattern) d.Set("selection_pattern", integrationResponse.SelectionPattern)
d.Set("response_parameters", aws.StringValueMap(integrationResponse.ResponseParameters))
d.Set("response_parameters_in_json", aws.StringValueMap(integrationResponse.ResponseParameters)) d.Set("response_parameters_in_json", aws.StringValueMap(integrationResponse.ResponseParameters))
return nil return nil
} }

View File

@ -185,11 +185,9 @@ resource "aws_api_gateway_method_response" "error" {
"application/json" = "Error" "application/json" = "Error"
} }
response_parameters_in_json = <<PARAMS response_parameters = {
{ "method.response.header.Content-Type" = true
"method.response.header.Content-Type": true
} }
PARAMS
} }
resource "aws_api_gateway_integration" "test" { resource "aws_api_gateway_integration" "test" {
@ -217,11 +215,9 @@ resource "aws_api_gateway_integration_response" "test" {
"application/xml" = "#set($inputRoot = $input.path('$'))\n{ }" "application/xml" = "#set($inputRoot = $input.path('$'))\n{ }"
} }
response_parameters_in_json = <<PARAMS response_parameters = {
{ "method.response.header.Content-Type" = "integration.response.body.type"
"method.response.header.Content-Type": "integration.response.body.type"
} }
PARAMS
} }
` `
@ -257,11 +253,9 @@ resource "aws_api_gateway_method_response" "error" {
"application/json" = "Error" "application/json" = "Error"
} }
response_parameters_in_json = <<PARAMS response_parameters = {
{ "method.response.header.Content-Type" = true
"method.response.header.Content-Type": true
} }
PARAMS
} }
resource "aws_api_gateway_integration" "test" { resource "aws_api_gateway_integration" "test" {

View File

@ -188,11 +188,9 @@ resource "aws_api_gateway_integration" "test" {
"application/xml" = "#set($inputRoot = $input.path('$'))\n{ }" "application/xml" = "#set($inputRoot = $input.path('$'))\n{ }"
} }
request_parameters_in_json = <<PARAMS request_parameters = {
{ "integration.request.header.X-Authorization" = "'static'"
"integration.request.header.X-Authorization": "'static'"
} }
PARAMS
type = "HTTP" type = "HTTP"
uri = "https://www.google.de" uri = "https://www.google.de"
@ -228,11 +226,9 @@ resource "aws_api_gateway_integration" "test" {
resource_id = "${aws_api_gateway_resource.test.id}" resource_id = "${aws_api_gateway_resource.test.id}"
http_method = "${aws_api_gateway_method.test.http_method}" http_method = "${aws_api_gateway_method.test.http_method}"
request_parameters_in_json = <<PARAMS request_parameters = {
{ "integration.request.header.X-Authorization" = "'updated'"
"integration.request.header.X-Authorization": "'updated'"
} }
PARAMS
type = "MOCK" type = "MOCK"
passthrough_behavior = "NEVER" passthrough_behavior = "NEVER"

View File

@ -4,6 +4,7 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"log" "log"
"strconv"
"time" "time"
"github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws"
@ -57,9 +58,18 @@ func resourceAwsApiGatewayMethod() *schema.Resource {
Elem: schema.TypeString, Elem: schema.TypeString,
}, },
"request_parameters": &schema.Schema{
Type: schema.TypeMap,
Elem: schema.TypeBool,
Optional: true,
ConflictsWith: []string{"request_parameters_in_json"},
},
"request_parameters_in_json": &schema.Schema{ "request_parameters_in_json": &schema.Schema{
Type: schema.TypeString, Type: schema.TypeString,
Optional: true, Optional: true,
ConflictsWith: []string{"request_parameters"},
Deprecated: "Use field request_parameters instead",
}, },
}, },
} }
@ -74,6 +84,15 @@ func resourceAwsApiGatewayMethodCreate(d *schema.ResourceData, meta interface{})
} }
parameters := make(map[string]bool) parameters := make(map[string]bool)
if kv, ok := d.GetOk("request_parameters"); ok {
for k, v := range kv.(map[string]interface{}) {
parameters[k], ok = v.(bool)
if !ok {
value, _ := strconv.ParseBool(v.(string))
parameters[k] = value
}
}
}
if v, ok := d.GetOk("request_parameters_in_json"); ok { if v, ok := d.GetOk("request_parameters_in_json"); ok {
if err := json.Unmarshal([]byte(v.(string)), &parameters); err != nil { if err := json.Unmarshal([]byte(v.(string)), &parameters); err != nil {
return fmt.Errorf("Error unmarshaling request_parameters_in_json: %s", err) return fmt.Errorf("Error unmarshaling request_parameters_in_json: %s", err)
@ -86,7 +105,6 @@ func resourceAwsApiGatewayMethodCreate(d *schema.ResourceData, meta interface{})
ResourceId: aws.String(d.Get("resource_id").(string)), ResourceId: aws.String(d.Get("resource_id").(string)),
RestApiId: aws.String(d.Get("rest_api_id").(string)), RestApiId: aws.String(d.Get("rest_api_id").(string)),
RequestModels: aws.StringMap(models), RequestModels: aws.StringMap(models),
// TODO reimplement once [GH-2143](https://github.com/hashicorp/terraform/issues/2143) has been implemented
RequestParameters: aws.BoolMap(parameters), RequestParameters: aws.BoolMap(parameters),
ApiKeyRequired: aws.Bool(d.Get("api_key_required").(bool)), ApiKeyRequired: aws.Bool(d.Get("api_key_required").(bool)),
}) })
@ -118,6 +136,7 @@ func resourceAwsApiGatewayMethodRead(d *schema.ResourceData, meta interface{}) e
} }
log.Printf("[DEBUG] Received API Gateway Method: %s", out) log.Printf("[DEBUG] Received API Gateway Method: %s", out)
d.SetId(fmt.Sprintf("agm-%s-%s-%s", d.Get("rest_api_id").(string), d.Get("resource_id").(string), d.Get("http_method").(string))) d.SetId(fmt.Sprintf("agm-%s-%s-%s", d.Get("rest_api_id").(string), d.Get("resource_id").(string), d.Get("http_method").(string)))
d.Set("request_parameters", aws.BoolValueMap(out.RequestParameters))
d.Set("request_parameters_in_json", aws.BoolValueMap(out.RequestParameters)) d.Set("request_parameters_in_json", aws.BoolValueMap(out.RequestParameters))
return nil return nil
@ -141,7 +160,24 @@ func resourceAwsApiGatewayMethodUpdate(d *schema.ResourceData, meta interface{})
} }
if d.HasChange("request_parameters_in_json") { if d.HasChange("request_parameters_in_json") {
ops, err := expandApiGatewayMethodParametersJSONOperations(d, "request_parameters_in_json", "requestParameters") ops, err := deprecatedExpandApiGatewayMethodParametersJSONOperations(d, "request_parameters_in_json", "requestParameters")
if err != nil {
return err
}
operations = append(operations, ops...)
}
if d.HasChange("request_parameters") {
parameters := make(map[string]bool)
var ok bool
for k, v := range d.Get("request_parameters").(map[string]interface{}) {
parameters[k], ok = v.(bool)
if !ok {
value, _ := strconv.ParseBool(v.(string))
parameters[k] = value
}
}
ops, err := expandApiGatewayMethodParametersOperations(d, "request_parameters", "requestParameters")
if err != nil { if err != nil {
return err return err
} }

View File

@ -4,6 +4,7 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"log" "log"
"strconv"
"time" "time"
"github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws"
@ -51,9 +52,18 @@ func resourceAwsApiGatewayMethodResponse() *schema.Resource {
Elem: schema.TypeString, Elem: schema.TypeString,
}, },
"response_parameters": &schema.Schema{
Type: schema.TypeMap,
Elem: schema.TypeBool,
Optional: true,
ConflictsWith: []string{"response_parameters_in_json"},
},
"response_parameters_in_json": &schema.Schema{ "response_parameters_in_json": &schema.Schema{
Type: schema.TypeString, Type: schema.TypeString,
Optional: true, Optional: true,
ConflictsWith: []string{"response_parameters"},
Deprecated: "Use field response_parameters instead",
}, },
}, },
} }
@ -68,6 +78,15 @@ func resourceAwsApiGatewayMethodResponseCreate(d *schema.ResourceData, meta inte
} }
parameters := make(map[string]bool) parameters := make(map[string]bool)
if kv, ok := d.GetOk("response_parameters"); ok {
for k, v := range kv.(map[string]interface{}) {
parameters[k], ok = v.(bool)
if !ok {
value, _ := strconv.ParseBool(v.(string))
parameters[k] = value
}
}
}
if v, ok := d.GetOk("response_parameters_in_json"); ok { if v, ok := d.GetOk("response_parameters_in_json"); ok {
if err := json.Unmarshal([]byte(v.(string)), &parameters); err != nil { if err := json.Unmarshal([]byte(v.(string)), &parameters); err != nil {
return fmt.Errorf("Error unmarshaling request_parameters_in_json: %s", err) return fmt.Errorf("Error unmarshaling request_parameters_in_json: %s", err)
@ -80,7 +99,6 @@ func resourceAwsApiGatewayMethodResponseCreate(d *schema.ResourceData, meta inte
RestApiId: aws.String(d.Get("rest_api_id").(string)), RestApiId: aws.String(d.Get("rest_api_id").(string)),
StatusCode: aws.String(d.Get("status_code").(string)), StatusCode: aws.String(d.Get("status_code").(string)),
ResponseModels: aws.StringMap(models), ResponseModels: aws.StringMap(models),
// TODO reimplement once [GH-2143](https://github.com/hashicorp/terraform/issues/2143) has been implemented
ResponseParameters: aws.BoolMap(parameters), ResponseParameters: aws.BoolMap(parameters),
}) })
if err != nil { if err != nil {
@ -113,6 +131,7 @@ func resourceAwsApiGatewayMethodResponseRead(d *schema.ResourceData, meta interf
log.Printf("[DEBUG] Received API Gateway Method: %s", methodResponse) log.Printf("[DEBUG] Received API Gateway Method: %s", methodResponse)
d.Set("response_models", aws.StringValueMap(methodResponse.ResponseModels)) d.Set("response_models", aws.StringValueMap(methodResponse.ResponseModels))
d.Set("response_parameters", aws.BoolValueMap(methodResponse.ResponseParameters))
d.Set("response_parameters_in_json", aws.BoolValueMap(methodResponse.ResponseParameters)) d.Set("response_parameters_in_json", aws.BoolValueMap(methodResponse.ResponseParameters))
d.SetId(fmt.Sprintf("agmr-%s-%s-%s-%s", d.Get("rest_api_id").(string), d.Get("resource_id").(string), d.Get("http_method").(string), d.Get("status_code").(string))) d.SetId(fmt.Sprintf("agmr-%s-%s-%s-%s", d.Get("rest_api_id").(string), d.Get("resource_id").(string), d.Get("http_method").(string), d.Get("status_code").(string)))
@ -130,7 +149,15 @@ func resourceAwsApiGatewayMethodResponseUpdate(d *schema.ResourceData, meta inte
} }
if d.HasChange("response_parameters_in_json") { if d.HasChange("response_parameters_in_json") {
ops, err := expandApiGatewayMethodParametersJSONOperations(d, "response_parameters_in_json", "responseParameters") ops, err := deprecatedExpandApiGatewayMethodParametersJSONOperations(d, "response_parameters_in_json", "responseParameters")
if err != nil {
return err
}
operations = append(operations, ops...)
}
if d.HasChange("response_parameters") {
ops, err := expandApiGatewayMethodParametersOperations(d, "response_parameters", "responseParameters")
if err != nil { if err != nil {
return err return err
} }

View File

@ -184,11 +184,9 @@ resource "aws_api_gateway_method_response" "error" {
"application/json" = "Error" "application/json" = "Error"
} }
response_parameters_in_json = <<PARAMS response_parameters = {
{ "method.response.header.Content-Type" = true
"method.response.header.Content-Type": true
} }
PARAMS
} }
` `
@ -224,11 +222,8 @@ resource "aws_api_gateway_method_response" "error" {
"application/json" = "Empty" "application/json" = "Empty"
} }
response_parameters_in_json = <<PARAMS response_parameters = {
{ "method.response.header.Host" = true
"method.response.header.Host": true
} }
PARAMS
} }
` `

View File

@ -175,12 +175,10 @@ resource "aws_api_gateway_method" "test" {
"application/json" = "Error" "application/json" = "Error"
} }
request_parameters_in_json = <<PARAMS request_parameters = {
{ "method.request.header.Content-Type" = false,
"method.request.header.Content-Type": false, "method.request.querystring.page" = true
"method.request.querystring.page": true
} }
PARAMS
} }
` `
@ -205,10 +203,8 @@ resource "aws_api_gateway_method" "test" {
"application/json" = "Error" "application/json" = "Error"
} }
request_parameters_in_json = <<PARAMS request_parameters = {
{ "method.request.querystring.page" = false
"method.request.querystring.page": false
} }
PARAMS
} }
` `

View File

@ -1090,9 +1090,8 @@ func expandApiGatewayRequestResponseModelOperations(d *schema.ResourceData, key
return operations return operations
} }
func expandApiGatewayMethodParametersJSONOperations(d *schema.ResourceData, key string, prefix string) ([]*apigateway.PatchOperation, error) { func deprecatedExpandApiGatewayMethodParametersJSONOperations(d *schema.ResourceData, key string, prefix string) ([]*apigateway.PatchOperation, error) {
operations := make([]*apigateway.PatchOperation, 0) operations := make([]*apigateway.PatchOperation, 0)
oldParameters, newParameters := d.GetChange(key) oldParameters, newParameters := d.GetChange(key)
oldParametersMap := make(map[string]interface{}) oldParametersMap := make(map[string]interface{})
newParametersMap := make(map[string]interface{}) newParametersMap := make(map[string]interface{})
@ -1143,6 +1142,59 @@ func expandApiGatewayMethodParametersJSONOperations(d *schema.ResourceData, key
return operations, nil return operations, nil
} }
func expandApiGatewayMethodParametersOperations(d *schema.ResourceData, key string, prefix string) ([]*apigateway.PatchOperation, error) {
operations := make([]*apigateway.PatchOperation, 0)
oldParameters, newParameters := d.GetChange(key)
oldParametersMap := oldParameters.(map[string]interface{})
newParametersMap := newParameters.(map[string]interface{})
for k, _ := range oldParametersMap {
operation := apigateway.PatchOperation{
Op: aws.String("remove"),
Path: aws.String(fmt.Sprintf("/%s/%s", prefix, k)),
}
for nK, nV := range newParametersMap {
b, ok := nV.(bool)
if !ok {
value, _ := strconv.ParseBool(nV.(string))
b = value
}
if nK == k {
operation.Op = aws.String("replace")
operation.Value = aws.String(strconv.FormatBool(b))
}
}
operations = append(operations, &operation)
}
for nK, nV := range newParametersMap {
exists := false
for k, _ := range oldParametersMap {
if k == nK {
exists = true
}
}
if !exists {
b, ok := nV.(bool)
if !ok {
value, _ := strconv.ParseBool(nV.(string))
b = value
}
operation := apigateway.PatchOperation{
Op: aws.String("add"),
Path: aws.String(fmt.Sprintf("/%s/%s", prefix, nK)),
Value: aws.String(strconv.FormatBool(b)),
}
operations = append(operations, &operation)
}
}
return operations, nil
}
func expandApiGatewayStageKeyOperations(d *schema.ResourceData) []*apigateway.PatchOperation { func expandApiGatewayStageKeyOperations(d *schema.ResourceData) []*apigateway.PatchOperation {
operations := make([]*apigateway.PatchOperation, 0) operations := make([]*apigateway.PatchOperation, 0)

View File

@ -56,9 +56,6 @@ The following arguments are supported:
Not all methods are compatible with all `AWS` integrations. Not all methods are compatible with all `AWS` integrations.
e.g. Lambda function [can only be invoked](https://github.com/awslabs/aws-apigateway-importer/issues/9#issuecomment-129651005) via `POST`. e.g. Lambda function [can only be invoked](https://github.com/awslabs/aws-apigateway-importer/issues/9#issuecomment-129651005) via `POST`.
* `request_templates` - (Optional) A map of the integration's request templates. * `request_templates` - (Optional) A map of the integration's request templates.
* `request_parameters` - (Optional) Request query string parameters and headers that should be passed to the
* `passthrough_behavior` - (Optional) The integration passthrough behavior (`WHEN_NO_MATCH`, `WHEN_NO_TEMPLATES`, `NEVER`). **Required** if `request_templates` is used. * `passthrough_behavior` - (Optional) The integration passthrough behavior (`WHEN_NO_MATCH`, `WHEN_NO_TEMPLATES`, `NEVER`). **Required** if `request_templates` is used.
* `request_parameters_in_json` - (Optional) A map written as a JSON string specifying * `request_parameters_in_json` - **Deprecated**, use `request_parameters` instead.
the request query string parameters and headers that should be passed to the
backend responder.
For example: `request_parameters_in_json = "{\"integration.request.header.X-Some-Other-Header\":\"method.request.header.X-Some-Header\"}"`
would add the header `X-Some-Header` from method to the integration as the header `X-Some-Other-Header`.

View File

@ -69,6 +69,6 @@ The following arguments are supported:
If the backend is an `AWS` Lambda function, the AWS Lambda function error header is matched. If the backend is an `AWS` Lambda function, the AWS Lambda function error header is matched.
For all other `HTTP` and `AWS` backends, the HTTP status code is matched. For all other `HTTP` and `AWS` backends, the HTTP status code is matched.
* `response_templates` - (Optional) A map specifying the templates used to transform the integration response body * `response_templates` - (Optional) A map specifying the templates used to transform the integration response body
* `response_parameters_in_json` - (Optional) A map written as JSON string specifying response parameters that can be read from the backend response * `response_parameters` - (Optional) Specify the response parameters that can be read from the backend response
For example: `response_parameters_in_json = "{\"method.response.header.X-Some-Header\":\"integration.response.header.X-Some-Other-Header\"}"`, For example: `response_parameters = { "method.response.header.X-Some-Header" = "integration.response.header.X-Some-Other-Header" }`,
would add the header `X-Some-Other-Header` from the integration response to the method response as the header `X-Some-Header`. * `response_parameters_in_json` - **Deprecated**, use `response_parameters` instead.

View File

@ -44,7 +44,7 @@ The following arguments are supported:
* `request_models` - (Optional) A map of the API models used for the request's content type * `request_models` - (Optional) A map of the API models used for the request's content type
where key is the content type (e.g. `application/json`) where key is the content type (e.g. `application/json`)
and value is either `Error`, `Empty` (built-in models) or `aws_api_gateway_model`'s `name`. and value is either `Error`, `Empty` (built-in models) or `aws_api_gateway_model`'s `name`.
* `request_parameters_in_json` - (Optional) A map written as a JSON string specifying * `request_parameters` - (Optional) Specify which request query string parameters and headers that should be passed to the integration
the request query string parameters and headers that should be passed to the integration For example: `request_parameters = { "method.request.header.X-Some-Header" = true }`
For example: `request_parameters_in_json = "{\"method.request.header.X-Some-Header\":true}"`
would define that the header X-Some-Header must be provided on the request. would define that the header X-Some-Header must be provided on the request.
* `request_parameters_in_json` - **Deprecated**, use `request_parameters` instead.

View File

@ -55,6 +55,7 @@ The following arguments are supported:
* `http_method` - (Required) The HTTP Method (`GET`, `POST`, `PUT`, `DELETE`, `HEAD`, `OPTION`) * `http_method` - (Required) The HTTP Method (`GET`, `POST`, `PUT`, `DELETE`, `HEAD`, `OPTION`)
* `status_code` - (Required) The HTTP status code * `status_code` - (Required) The HTTP status code
* `response_models` - (Optional) A map of the API models used for the response's content type * `response_models` - (Optional) A map of the API models used for the response's content type
* `response_parameters_in_json` - (Optional) A map written as a JSON string representing response parameters that can be sent to the caller * `response_parameters` - (Optional) Response parameters that can be sent to the caller
For example: `response_parameters_in_json = "{\"method.response.header.X-Some-Header\":true}"` For example: `response_parameters = { "method.response.header.X-Some-Header" = true }`
would define that the header X-Some-Header can be provided on the response. would define that the header X-Some-Header can be provided on the response.
* `response_parameters_in_json` - **Deprecated**, use `response_parameters` instead.