Skip to content
This repository was archived by the owner on Jan 21, 2025. It is now read-only.

Commit 0e23432

Browse files
Merge pull request #8 from rackspace-infrastructure-automation/mc_1112
Fix origin access identity
2 parents 8be14ef + 208dce0 commit 0e23432

File tree

4 files changed

+91
-11
lines changed

4 files changed

+91
-11
lines changed

main.tf

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@ locals {
1616
}
1717

1818
bucket_logging_config = "${var.bucket_logging ? "enabled" : "disabled"}"
19+
20+
active_trusted_signers = "${coalescelist(aws_cloudfront_distribution.cf_distribution_no_s3_origin_config.*.active_trusted_signers, aws_cloudfront_distribution.cf_distribution.*.active_trusted_signers, list(""))}"
1921
}
2022

2123
resource "aws_cloudfront_distribution" "cf_distribution" {
24+
count = "${var.origin_access_identity_provided ? 1 : 0}"
2225
aliases = ["${var.aliases}"]
2326

2427
default_cache_behavior {
@@ -90,3 +93,73 @@ resource "aws_cloudfront_distribution" "cf_distribution" {
9093

9194
web_acl_id = "${var.web_acl_id}"
9295
}
96+
97+
resource "aws_cloudfront_distribution" "cf_distribution_no_s3_origin_config" {
98+
count = "${var.origin_access_identity_provided ? 0 : 1}"
99+
aliases = ["${var.aliases}"]
100+
101+
default_cache_behavior {
102+
allowed_methods = "${var.allowed_methods}"
103+
cached_methods = "${var.cached_methods}"
104+
compress = "${var.compress}"
105+
default_ttl = "${var.default_ttl}"
106+
107+
forwarded_values {
108+
cookies {
109+
forward = "${var.forward}"
110+
whitelisted_names = "${var.whitelisted_names}"
111+
}
112+
113+
headers = "${var.headers}"
114+
query_string = "${var.query_string}"
115+
query_string_cache_keys = "${var.query_string_cache_keys}"
116+
}
117+
118+
lambda_function_association = "${var.lambdas}"
119+
120+
max_ttl = "${var.max_ttl}"
121+
min_ttl = "${var.min_ttl}"
122+
smooth_streaming = "${var.smooth_streaming}"
123+
target_origin_id = "${var.target_origin_id}"
124+
trusted_signers = "${var.trusted_signers}"
125+
viewer_protocol_policy = "${var.viewer_protocol_policy}"
126+
}
127+
128+
comment = "${var.comment}"
129+
default_root_object = "${var.default_root_object}"
130+
enabled = "${var.enabled}"
131+
http_version = "${var.http_version}"
132+
is_ipv6_enabled = "${var.is_ipv6_enabled}"
133+
134+
logging_config = ["${local.bucket_logging[local.bucket_logging_config]}"]
135+
136+
custom_error_response = ["${var.custom_error_response}"]
137+
138+
origin {
139+
domain_name = "${var.domain_name}"
140+
custom_header = "${var.custom_header}"
141+
origin_id = "${var.origin_id}"
142+
origin_path = "${var.origin_path}"
143+
}
144+
145+
price_class = "${var.price_class}"
146+
147+
restrictions {
148+
geo_restriction {
149+
locations = "${var.locations}"
150+
restriction_type = "${var.restriction_type}"
151+
}
152+
}
153+
154+
tags = "${merge(var.tags, local.tags)}"
155+
156+
viewer_certificate {
157+
acm_certificate_arn = "${var.acm_certificate_arn}"
158+
cloudfront_default_certificate = "${var.cloudfront_default_certificate}"
159+
iam_certificate_id = "${var.iam_certificate_id}"
160+
minimum_protocol_version = "${var.minimum_protocol_version}"
161+
ssl_support_method = "${var.ssl_support_method}"
162+
}
163+
164+
web_acl_id = "${var.web_acl_id}"
165+
}

outputs.tf

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,49 @@
11
output "id" {
22
description = "The identifier for the distribution."
3-
value = "${aws_cloudfront_distribution.cf_distribution.id}"
3+
value = "${element(coalescelist(aws_cloudfront_distribution.cf_distribution.*.id, aws_cloudfront_distribution.cf_distribution_no_s3_origin_config.*.id, list("")), 0)}"
44
}
55

66
output "arn" {
77
description = "The ARN (Amazon Resource Name) for the distribution."
8-
value = "${aws_cloudfront_distribution.cf_distribution.arn}"
8+
value = "${element(coalescelist(aws_cloudfront_distribution.cf_distribution.*.arn, aws_cloudfront_distribution.cf_distribution_no_s3_origin_config.*.arn, list("")), 0)}"
99
}
1010

1111
output "caller_reference" {
1212
description = "Internal value used by CloudFront to allow future updates to the distribution configuration."
13-
value = "${aws_cloudfront_distribution.cf_distribution.caller_reference}"
13+
value = "${element(coalescelist(aws_cloudfront_distribution.cf_distribution.*.caller_reference, aws_cloudfront_distribution.cf_distribution_no_s3_origin_config.*.caller_reference, list("")), 0)}"
1414
}
1515

1616
output "status" {
1717
description = "The current status of the distribution."
18-
value = "${aws_cloudfront_distribution.cf_distribution.status}"
18+
value = "${element(coalescelist(aws_cloudfront_distribution.cf_distribution.*.status, aws_cloudfront_distribution.cf_distribution_no_s3_origin_config.*.status, list("")), 0)}"
1919
}
2020

2121
output "active_trusted_signers" {
2222
description = "The key pair IDs that CloudFront is aware of for each trusted signer, if the distribution is set up to serve private content with signed URLs."
23-
value = "${aws_cloudfront_distribution.cf_distribution.active_trusted_signers}"
23+
value = "${local.active_trusted_signers[0]}"
2424
}
2525

2626
output "domain_name" {
2727
description = "The domain name corresponding to the distribution."
28-
value = "${aws_cloudfront_distribution.cf_distribution.domain_name}"
28+
value = "${element(coalescelist(aws_cloudfront_distribution.cf_distribution.*.domain_name, aws_cloudfront_distribution.cf_distribution_no_s3_origin_config.*.domain_name, list("")), 0)}"
2929
}
3030

3131
output "last_modified_time" {
3232
description = "The date and time the distribution was last modified."
33-
value = "${aws_cloudfront_distribution.cf_distribution.last_modified_time}"
33+
value = "${element(coalescelist(aws_cloudfront_distribution.cf_distribution.*.last_modified_time, aws_cloudfront_distribution.cf_distribution_no_s3_origin_config.*.last_modified_time), 0)}"
3434
}
3535

3636
output "in_progress_validation_batches" {
3737
description = "The number of invalidation batches currently in progress."
38-
value = "${aws_cloudfront_distribution.cf_distribution.in_progress_validation_batches}"
38+
value = "${element(coalescelist(aws_cloudfront_distribution.cf_distribution.*.in_progress_validation_batches, aws_cloudfront_distribution.cf_distribution_no_s3_origin_config.*.in_progress_validation_batches, list("")), 0)}"
3939
}
4040

4141
output "etag" {
4242
description = "The current version of the distribution's information."
43-
value = "${aws_cloudfront_distribution.cf_distribution.etag}"
43+
value = "${element(coalescelist(aws_cloudfront_distribution.cf_distribution.*.etag, aws_cloudfront_distribution.cf_distribution_no_s3_origin_config.*.etag, list("")), 0)}"
4444
}
4545

4646
output "hosted_zone_id" {
4747
description = "The CloudFront Route 53 zone ID that can be used to route an Alias Resource Record Set to."
48-
value = "${aws_cloudfront_distribution.cf_distribution.hosted_zone_id}"
48+
value = "${element(coalescelist(aws_cloudfront_distribution.cf_distribution.*.hosted_zone_id, aws_cloudfront_distribution.cf_distribution_no_s3_origin_config.*.hosted_zone_id, list("")), 0)}"
4949
}

tests/test1/main.tf

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ module "cloudfront_s3_origin" {
5757
aliases = ["testdomain.${random_string.cloudfront_rstring.result}.example.com"]
5858

5959
# Origin access id
60-
origin_access_identity = "${aws_cloudfront_origin_access_identity.origin_access_identity.cloudfront_access_identity_path}"
60+
origin_access_identity = "${aws_cloudfront_origin_access_identity.origin_access_identity.cloudfront_access_identity_path}"
61+
origin_access_identity_provided = true
6162

6263
# default cache behavior
6364
allowed_methods = ["GET", "HEAD"]

variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,12 @@ variable "origin_access_identity" {
226226
default = ""
227227
}
228228

229+
variable "origin_access_identity_provided" {
230+
description = "origin_access_identity has been provided"
231+
type = "string"
232+
default = false
233+
}
234+
229235
# Restrictions
230236
variable "locations" {
231237
description = "The two-letter, uppercase country code for a country that you want to include in your blacklist or whitelist."

0 commit comments

Comments
 (0)