我有一个需要CloudFront S3的应用程序。我想创建一个CloudFront模块,并使其他应用程序可重复使用。
我的问题是,我有一个需要两个起源的应用程序(s3_origin_config和一个custom_origin_config)和其他需要S3_origin_config的应用程序。
问题是:我如何拥有一个可以处理需要两个起源的应用程序的模块,而另一个只需要一个来源。
在我的代码的示例下:
resource "aws_cloudfront_distribution" "s3_distribution" {
origin {
domain_name = "${var.domain_name}"
origin_id = "${var.app_name}-${var.environment}"
origin_path = "/${var.environment}/${var.setup}/public"
s3_origin_config {
origin_access_identity = ${aws_cloudfront_origin_access_identity.origin_access_identity.cloudfront_access_identity_path}"
}
}
#HERE, I would like something like if $second_origin, then:
#I know there is no if in terraform, just to have an example ;)
origin {
domain_name = "${var.second_origin_domain_name}"
origin_id = "Custom-${var.second_origin_domain_name}"
custom_origin_config {
http_port = "80"
https_port = "443"
origin_protocol_policy = "https-only"
origin_ssl_protocols = ["TLSv1", "TLSv1.1", "TLSv1.2"]
}
custom_header {
name = "${var.second_origin_header_name}"
value = "${var.second_origin_header_key}"
}
}...
谢谢!
您需要创建两个具有不同原点要求的云闪资源。使用count
,您可以启用一个资源并同时禁用另一个资源。这将使您可以使用相同的模块来满足不同的来源要求。
这是简单的示例。
resource "aws_cloudfront_distribution" "cf_app1" {
count = "${var.something ? 1 : 0}"
}
resource "aws_cloudfront_distribution" "cf_app2" {
count = "${var.something ? 0 : 1}"
}