Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: CloudFront response headers policies #21620

Merged
merged 24 commits into from
Nov 4, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
c4fcc86
Added support for aws_cloudfront_response_headers_policy
Sep 18, 2021
619019d
update go modules
Nov 3, 2021
96aac39
Modified AccTests to meeting linters and var standards
AdamTylerLynch Sep 30, 2021
c7ec2f6
Run 'go mod tidy'.
ewbankkit Nov 3, 2021
bf8a0ba
Add CHANGELOG entry.
ewbankkit Nov 3, 2021
9929c96
Add 'FindResponseHeadersPolicyByID'.
ewbankkit Nov 3, 2021
176ce1f
Fix tfproviderdocs error.
ewbankkit Nov 3, 2021
6332ca5
Fix terrafmt errors.
ewbankkit Nov 3, 2021
7b71cb7
Fix misspellings.
ewbankkit Nov 3, 2021
277b1c5
Fix markdown-lint errors.
ewbankkit Nov 3, 2021
f2d3ff0
Fix acceptance test terrafmt errors.
ewbankkit Nov 3, 2021
0c87d7d
Fix terrafmt errors.
ewbankkit Nov 3, 2021
b3bc845
Fix acceptance test terrafmt errors.
ewbankkit Nov 3, 2021
4957e15
d/aws_cloudfront_response_headers_policy: Tidy up acceptance tests.
ewbankkit Nov 3, 2021
260df14
r/aws_cloudfront_response_headers_policy: Standardize flex.
ewbankkit Nov 3, 2021
81b9674
r/aws_cloudfront_response_headers_policy: Finish up standard flex.
ewbankkit Nov 4, 2021
c81bf3f
Use AWS Go SDK '_Values()': #14601.
ewbankkit Nov 4, 2021
3d8a421
At least one of 'cors_config', 'custom_headers_config' or 'security_h…
ewbankkit Nov 4, 2021
935aabc
r/aws_cloudfront_response_headers_policy: Don't forget 'access_contro…
ewbankkit Nov 4, 2021
536af58
Test updating 'name'.
ewbankkit Nov 4, 2021
333fe2b
Add 'TestAccAWSCloudFrontResponseHeadersPolicy_CustomHeadersConfig'.
ewbankkit Nov 4, 2021
a24e09d
Add 'TestAccAWSCloudFrontResponseHeadersPolicy_SecurityHeadersConfig'.
ewbankkit Nov 4, 2021
cf5f27d
r/aws_cloudfront_response_headers_policy: Deal with empty container o…
ewbankkit Nov 4, 2021
4abcb42
Fix terrafmt acceptance test errors.
ewbankkit Nov 4, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .changelog/21620.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
```release-note:new-resource
aws_cloudfront_response_headers_policy
```

```release-note:new-data-source
aws_cloudfront_response_headers_policy
```

```release-note:enhancement
resource/aws_cloudfront_distribution: Add `response_headers_policy_id` argument to `ordered_cache_behavior` configuration block
```

```release-note:enhancement
resource/aws_cloudfront_distribution: Add `response_headers_policy_id` argument to `default_cache_behavior` configuration block
```
2 changes: 2 additions & 0 deletions internal/provider/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,7 @@ func Provider() *schema.Provider {
"aws_cloudfront_function": cloudfront.DataSourceFunction(),
"aws_cloudfront_log_delivery_canonical_user_id": cloudfront.DataSourceLogDeliveryCanonicalUserID(),
"aws_cloudfront_origin_request_policy": cloudfront.DataSourceOriginRequestPolicy(),
"aws_cloudfront_response_headers_policy": cloudfront.DataSourceResponseHeadersPolicy(),

"aws_cloudhsm_v2_cluster": cloudhsmv2.DataSourceCluster(),

Expand Down Expand Up @@ -851,6 +852,7 @@ func Provider() *schema.Provider {
"aws_cloudfront_origin_request_policy": cloudfront.ResourceOriginRequestPolicy(),
"aws_cloudfront_public_key": cloudfront.ResourcePublicKey(),
"aws_cloudfront_realtime_log_config": cloudfront.ResourceRealtimeLogConfig(),
"aws_cloudfront_response_headers_policy": cloudfront.ResourceResponseHeadersPolicy(),

"aws_cloudhsm_v2_cluster": cloudhsmv2.ResourceCluster(),
"aws_cloudhsm_v2_hsm": cloudhsmv2.ResourceHSM(),
Expand Down
11 changes: 9 additions & 2 deletions internal/service/cloudfront/distribution.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (
"time"

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/service/cloudfront"
"github.com/hashicorp/aws-sdk-go-base/tfawserr"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
Expand Down Expand Up @@ -191,6 +190,10 @@ func ResourceDistribution() *schema.Resource {
Optional: true,
ValidateFunc: verify.ValidARN,
},
"response_headers_policy_id": {
Type: schema.TypeString,
Optional: true,
},
"smooth_streaming": {
Type: schema.TypeBool,
Optional: true,
Expand Down Expand Up @@ -387,6 +390,10 @@ func ResourceDistribution() *schema.Resource {
Optional: true,
ValidateFunc: verify.ValidARN,
},
"response_headers_policy_id": {
Type: schema.TypeString,
Optional: true,
},
"smooth_streaming": {
Type: schema.TypeBool,
Optional: true,
Expand Down Expand Up @@ -863,7 +870,7 @@ func resourceDistributionRead(d *schema.ResourceData, meta interface{}) error {

resp, err := conn.GetDistribution(params)
if err != nil {
if errcode, ok := err.(awserr.Error); ok && errcode.Code() == "NoSuchDistribution" {
if tfawserr.ErrMessageContains(err, cloudfront.ErrCodeNoSuchDistribution, "") {
log.Printf("[WARN] No Distribution found: %s", d.Id())
d.SetId("")
return nil
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,12 +190,13 @@ func flattenCacheBehaviors(cbs *cloudfront.CacheBehaviors) []interface{} {

func ExpandDefaultCacheBehavior(m map[string]interface{}) *cloudfront.DefaultCacheBehavior {
dcb := &cloudfront.DefaultCacheBehavior{
CachePolicyId: aws.String(m["cache_policy_id"].(string)),
Compress: aws.Bool(m["compress"].(bool)),
FieldLevelEncryptionId: aws.String(m["field_level_encryption_id"].(string)),
OriginRequestPolicyId: aws.String(m["origin_request_policy_id"].(string)),
TargetOriginId: aws.String(m["target_origin_id"].(string)),
ViewerProtocolPolicy: aws.String(m["viewer_protocol_policy"].(string)),
CachePolicyId: aws.String(m["cache_policy_id"].(string)),
Compress: aws.Bool(m["compress"].(bool)),
FieldLevelEncryptionId: aws.String(m["field_level_encryption_id"].(string)),
OriginRequestPolicyId: aws.String(m["origin_request_policy_id"].(string)),
ResponseHeadersPolicyId: aws.String(m["response_headers_policy_id"].(string)),
TargetOriginId: aws.String(m["target_origin_id"].(string)),
ViewerProtocolPolicy: aws.String(m["viewer_protocol_policy"].(string)),
}

if forwardedValuesFlat, ok := m["forwarded_values"].([]interface{}); ok && len(forwardedValuesFlat) == 1 {
Expand Down Expand Up @@ -251,13 +252,14 @@ func expandCacheBehavior(m map[string]interface{}) *cloudfront.CacheBehavior {
}

cb := &cloudfront.CacheBehavior{
CachePolicyId: aws.String(m["cache_policy_id"].(string)),
Compress: aws.Bool(m["compress"].(bool)),
FieldLevelEncryptionId: aws.String(m["field_level_encryption_id"].(string)),
ForwardedValues: forwardedValues,
OriginRequestPolicyId: aws.String(m["origin_request_policy_id"].(string)),
TargetOriginId: aws.String(m["target_origin_id"].(string)),
ViewerProtocolPolicy: aws.String(m["viewer_protocol_policy"].(string)),
CachePolicyId: aws.String(m["cache_policy_id"].(string)),
Compress: aws.Bool(m["compress"].(bool)),
FieldLevelEncryptionId: aws.String(m["field_level_encryption_id"].(string)),
ForwardedValues: forwardedValues,
OriginRequestPolicyId: aws.String(m["origin_request_policy_id"].(string)),
ResponseHeadersPolicyId: aws.String(m["response_headers_policy_id"].(string)),
TargetOriginId: aws.String(m["target_origin_id"].(string)),
ViewerProtocolPolicy: aws.String(m["viewer_protocol_policy"].(string)),
}

if m["cache_policy_id"].(string) == "" {
Expand Down Expand Up @@ -307,14 +309,15 @@ func expandCacheBehavior(m map[string]interface{}) *cloudfront.CacheBehavior {

func flattenCloudFrontDefaultCacheBehavior(dcb *cloudfront.DefaultCacheBehavior) map[string]interface{} {
m := map[string]interface{}{
"cache_policy_id": aws.StringValue(dcb.CachePolicyId),
"compress": aws.BoolValue(dcb.Compress),
"field_level_encryption_id": aws.StringValue(dcb.FieldLevelEncryptionId),
"viewer_protocol_policy": aws.StringValue(dcb.ViewerProtocolPolicy),
"target_origin_id": aws.StringValue(dcb.TargetOriginId),
"min_ttl": aws.Int64Value(dcb.MinTTL),
"origin_request_policy_id": aws.StringValue(dcb.OriginRequestPolicyId),
"realtime_log_config_arn": aws.StringValue(dcb.RealtimeLogConfigArn),
"cache_policy_id": aws.StringValue(dcb.CachePolicyId),
"compress": aws.BoolValue(dcb.Compress),
"field_level_encryption_id": aws.StringValue(dcb.FieldLevelEncryptionId),
"viewer_protocol_policy": aws.StringValue(dcb.ViewerProtocolPolicy),
"target_origin_id": aws.StringValue(dcb.TargetOriginId),
"min_ttl": aws.Int64Value(dcb.MinTTL),
"origin_request_policy_id": aws.StringValue(dcb.OriginRequestPolicyId),
"realtime_log_config_arn": aws.StringValue(dcb.RealtimeLogConfigArn),
"response_headers_policy_id": aws.StringValue(dcb.ResponseHeadersPolicyId),
}

if dcb.ForwardedValues != nil {
Expand Down Expand Up @@ -362,6 +365,7 @@ func flattenCacheBehavior(cb *cloudfront.CacheBehavior) map[string]interface{} {
m["min_ttl"] = int(aws.Int64Value(cb.MinTTL))
m["origin_request_policy_id"] = aws.StringValue(cb.OriginRequestPolicyId)
m["realtime_log_config_arn"] = aws.StringValue(cb.RealtimeLogConfigArn)
m["response_headers_policy_id"] = aws.StringValue(cb.ResponseHeadersPolicyId)

if cb.ForwardedValues != nil {
m["forwarded_values"] = []interface{}{FlattenForwardedValues(cb.ForwardedValues)}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ func defaultCacheBehaviorConf() map[string]interface{} {
"compress": true,
"field_level_encryption_id": "",
"realtime_log_config_arn": "",
"response_headers_policy_id": "",
}
}

Expand Down
Loading