我的团队使用Terraform部署必要的基础架构。 当前,我们的堆栈由以下组成:AutoScalingGroup(在Load-Balancer前面)和指向该LB的Route53 DNS记录;
我们想扩展堆栈,以包括指向LB的Cloudfront发行版,并使Route53 DNS记录指向CDN。
我希望能够:
当前配置如下:
resource "aws_lb" "alb" {
name = "${var.alb-name}"
...
}
resource "aws_cloudfront_distribution" "cdn" {
count = "${var.use_cloudfront != "false" ? 1 : 0}"
...
}
resource "aws_route53_record" "www" {
count = "${var.domain-name != "" ? 1 : 0}"
depends_on = ["aws_lb.alb", "aws_cloudfront_distribution.cdn"]
zone_id = "${data.aws_route53_zone.primary.zone_id}"
name = "${var.domain-name}"
type = "A"
alias = {
// we use concat because 'count' makes the response of the resource a list.
// link to similar issue: https://stackoverflow.com/questions/45654774/terraform-conditional-resource
name = "${var.use_cloudfront == "true" ? element(concat(aws_cloudfront_distribution.cdn.*.domain_name, list("")), 0) : aws_lb.alb.dns_name}"
zone_id = "${var.use_cloudfront == "true" ? element(concat(aws_cloudfront_distribution.cdn.*.hosted_zone_id, list("")), 0) : aws_lb.alb.zone_id}"
evaluate_target_health = true
}
}
当前行为如下:
我知道Route53记录上的depends_on = ["aws_lb.alb", "aws_cloudfront_distribution.cdn"]
可能不是创建所需行为的最佳选择。但是,我不确定如何使用terraform达到所需的行为。
我想知道是否有人对实现所需的行为有任何建议。让我知道所提供的信息是否不足。谢谢您的帮助,不胜感激!