Skip to content

Commit d5d267b

Browse files
authored
Merge pull request #12651 from DrFaust92/r/api_gateway_method_settings_ttl
r/api_gateway_method_settings: allow zero ttl
2 parents ab52636 + c7597e6 commit d5d267b

2 files changed

Lines changed: 26 additions & 5 deletions

File tree

aws/resource_aws_api_gateway_method_settings.go

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/aws/aws-sdk-go/aws"
99
"github.com/aws/aws-sdk-go/service/apigateway"
1010
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
11+
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
1112
)
1213

1314
func resourceAwsApiGatewayMethodSettings() *schema.Resource {
@@ -52,6 +53,11 @@ func resourceAwsApiGatewayMethodSettings() *schema.Resource {
5253
Type: schema.TypeString,
5354
Optional: true,
5455
Computed: true,
56+
ValidateFunc: validation.StringInSlice([]string{
57+
"OFF",
58+
"ERROR",
59+
"INFO",
60+
}, false),
5561
},
5662
"data_trace_enabled": {
5763
Type: schema.TypeBool,
@@ -91,6 +97,11 @@ func resourceAwsApiGatewayMethodSettings() *schema.Resource {
9197
"unauthorized_cache_control_header_strategy": {
9298
Type: schema.TypeString,
9399
Optional: true,
100+
ValidateFunc: validation.StringInSlice([]string{
101+
apigateway.UnauthorizedCacheControlHeaderStrategyFailWith403,
102+
apigateway.UnauthorizedCacheControlHeaderStrategySucceedWithResponseHeader,
103+
apigateway.UnauthorizedCacheControlHeaderStrategySucceedWithoutResponseHeader,
104+
}, false),
94105
Computed: true,
95106
},
96107
},
@@ -145,7 +156,7 @@ func resourceAwsApiGatewayMethodSettingsRead(d *schema.ResourceData, meta interf
145156
}
146157

147158
if err := d.Set("settings", flattenAwsApiGatewayMethodSettings(settings)); err != nil {
148-
return fmt.Errorf("error setting settings: %s", err)
159+
return fmt.Errorf("error setting settings: %w", err)
149160
}
150161

151162
return nil
@@ -201,13 +212,15 @@ func resourceAwsApiGatewayMethodSettingsUpdate(d *schema.ResourceData, meta inte
201212
Value: aws.String(fmt.Sprintf("%t", d.Get("settings.0.caching_enabled").(bool))),
202213
})
203214
}
204-
if d.HasChange("settings.0.cache_ttl_in_seconds") {
215+
216+
if v, ok := d.GetOkExists("settings.0.cache_ttl_in_seconds"); ok {
205217
ops = append(ops, &apigateway.PatchOperation{
206218
Op: aws.String(apigateway.OpReplace),
207219
Path: aws.String(prefix + "caching/ttlInSeconds"),
208-
Value: aws.String(fmt.Sprintf("%d", d.Get("settings.0.cache_ttl_in_seconds").(int))),
220+
Value: aws.String(fmt.Sprintf("%d", v.(int))),
209221
})
210222
}
223+
211224
if d.HasChange("settings.0.cache_data_encrypted") {
212225
ops = append(ops, &apigateway.PatchOperation{
213226
Op: aws.String(apigateway.OpReplace),
@@ -240,7 +253,7 @@ func resourceAwsApiGatewayMethodSettingsUpdate(d *schema.ResourceData, meta inte
240253
log.Printf("[DEBUG] Updating API Gateway Stage: %s", input)
241254
_, err := conn.UpdateStage(&input)
242255
if err != nil {
243-
return fmt.Errorf("Updating API Gateway Stage failed: %s", err)
256+
return fmt.Errorf("updating API Gateway Stage failed: %w", err)
244257
}
245258

246259
d.SetId(restApiId + "-" + stageName + "-" + methodPath)
@@ -265,7 +278,7 @@ func resourceAwsApiGatewayMethodSettingsDelete(d *schema.ResourceData, meta inte
265278
log.Printf("[DEBUG] Updating API Gateway Stage: %s", input)
266279
_, err := conn.UpdateStage(&input)
267280
if err != nil {
268-
return fmt.Errorf("Updating API Gateway Stage failed: %s", err)
281+
return fmt.Errorf("updating API Gateway Stage failed: %w", err)
269282
}
270283

271284
return nil

aws/resource_aws_api_gateway_method_settings_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,14 @@ func TestAccAWSAPIGatewayMethodSettings_Settings_CacheTtlInSeconds(t *testing.T)
8686
Providers: testAccProviders,
8787
CheckDestroy: testAccCheckAWSAPIGatewayMethodSettingsDestroy,
8888
Steps: []resource.TestStep{
89+
{
90+
Config: testAccAWSAPIGatewayMethodSettingsConfigSettingsCacheTtlInSeconds(rName, 0),
91+
Check: resource.ComposeTestCheckFunc(
92+
testAccCheckAWSAPIGatewayMethodSettingsExists(resourceName, &stage1),
93+
resource.TestCheckResourceAttr(resourceName, "settings.#", "1"),
94+
resource.TestCheckResourceAttr(resourceName, "settings.0.cache_ttl_in_seconds", "0"),
95+
),
96+
},
8997
{
9098
Config: testAccAWSAPIGatewayMethodSettingsConfigSettingsCacheTtlInSeconds(rName, 1),
9199
Check: resource.ComposeTestCheckFunc(

0 commit comments

Comments
 (0)