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
1314func 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
0 commit comments