Amazon web services 如何使用Terraform进行CloudFront源站故障切换?

Amazon web services 如何使用Terraform进行CloudFront源站故障切换?,amazon-web-services,terraform,amazon-cloudfront,Amazon Web Services,Terraform,Amazon Cloudfront,我已在管理控制台中成功设置CloudFront源故障切换。我想知道如何使用Terraform做同样的事情 这是一个非常简单的设置,两个原点,一个原点组,一个主原点和一个次原点。Terraform在文档中提供了这方面的详细说明 如果您从下面这样一个简单的CloudFront资源开始 resource "aws_cloudfront_distribution" "s3_distribution" { origin { domain_name = "${aws_s3_bucket.

我已在管理控制台中成功设置CloudFront源故障切换。我想知道如何使用Terraform做同样的事情

这是一个非常简单的设置,两个原点,一个原点组,一个主原点和一个次原点。

Terraform在文档中提供了这方面的详细说明

如果您从下面这样一个简单的CloudFront资源开始

resource "aws_cloudfront_distribution" "s3_distribution" {    
  origin {
    domain_name = "${aws_s3_bucket.primary.bucket_regional_domain_name}"
    origin_id   = "primaryS3"

    s3_origin_config {
      origin_access_identity = "${aws_cloudfront_origin_access_identity.default.cloudfront_access_identity_path}"
    }
  }

  default_cache_behavior {
    # Note: Origin set to the single origin.
    target_origin_id = "primaryS3" 
  }
}
然后,添加源故障切换配置相当容易

  • 添加次原点
  • 将其与主要成员分组(成员顺序很重要)
  • 将默认原点设置为组
  • 以下是一个示例(来自文档):

    resource "aws_cloudfront_distribution" "s3_distribution" {
      origin_group {
        origin_id = "groupS3"
    
        failover_criteria {
          status_codes = [403, 404, 500, 502]
        }
    
        member {
          origin_id = "primaryS3"
        }
    
        member {
          origin_id = "failoverS3"
        }
      }
    
      # Primary Origin
      origin {
        domain_name = "${aws_s3_bucket.primary.bucket_regional_domain_name}"
        origin_id   = "primaryS3"
    
        s3_origin_config {
          origin_access_identity = "${aws_cloudfront_origin_access_identity.default.cloudfront_access_identity_path}"
        }
      }
    
      # Secondary Origin
      origin {
        domain_name = "${aws_s3_bucket.failover.bucket_regional_domain_name}"
        origin_id   = "failoverS3"
    
        s3_origin_config {
          origin_access_identity = "${aws_cloudfront_origin_access_identity.default.cloudfront_access_identity_path}"
        }
      }
    
      default_cache_behavior {
        # Important, use the failover group instead of the primary origin.
        target_origin_id = "groupS3" 
      }
    }