github.com/vtorhonen/terraform@v0.9.0-beta2.0.20170307220345-5d894e4ffda7/builtin/providers/aws/resource_aws_cloudfront_distribution_test.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "math/rand" 6 "os" 7 "testing" 8 "time" 9 10 "github.com/aws/aws-sdk-go/aws" 11 "github.com/aws/aws-sdk-go/service/cloudfront" 12 "github.com/hashicorp/terraform/helper/acctest" 13 "github.com/hashicorp/terraform/helper/resource" 14 "github.com/hashicorp/terraform/terraform" 15 ) 16 17 // TestAccAWSCloudFrontDistribution_S3Origin runs an 18 // aws_cloudfront_distribution acceptance test with a single S3 origin. 19 // 20 // If you are testing manually and can't wait for deletion, set the 21 // TF_TEST_CLOUDFRONT_RETAIN environment variable. 22 func TestAccAWSCloudFrontDistribution_S3Origin(t *testing.T) { 23 ri := acctest.RandInt() 24 testConfig := fmt.Sprintf(testAccAWSCloudFrontDistributionS3Config, ri, originBucket, logBucket, testAccAWSCloudFrontDistributionRetainConfig()) 25 resource.Test(t, resource.TestCase{ 26 PreCheck: func() { testAccPreCheck(t) }, 27 Providers: testAccProviders, 28 CheckDestroy: testAccCheckCloudFrontDistributionDestroy, 29 Steps: []resource.TestStep{ 30 resource.TestStep{ 31 Config: testConfig, 32 Check: resource.ComposeTestCheckFunc( 33 testAccCheckCloudFrontDistributionExistence( 34 "aws_cloudfront_distribution.s3_distribution", 35 ), 36 resource.TestCheckResourceAttr( 37 "aws_cloudfront_distribution.s3_distribution", 38 "hosted_zone_id", 39 "Z2FDTNDATAQYW2", 40 ), 41 ), 42 }, 43 }, 44 }) 45 } 46 47 func TestAccAWSCloudFrontDistribution_S3OriginWithTags(t *testing.T) { 48 ri := acctest.RandInt() 49 preConfig := fmt.Sprintf(testAccAWSCloudFrontDistributionS3ConfigWithTags, ri, originBucket, logBucket, testAccAWSCloudFrontDistributionRetainConfig()) 50 postConfig := fmt.Sprintf(testAccAWSCloudFrontDistributionS3ConfigWithTagsUpdated, ri, originBucket, logBucket, testAccAWSCloudFrontDistributionRetainConfig()) 51 52 resource.Test(t, resource.TestCase{ 53 PreCheck: func() { testAccPreCheck(t) }, 54 Providers: testAccProviders, 55 CheckDestroy: testAccCheckCloudFrontDistributionDestroy, 56 Steps: []resource.TestStep{ 57 { 58 Config: preConfig, 59 Check: resource.ComposeTestCheckFunc( 60 testAccCheckCloudFrontDistributionExistence( 61 "aws_cloudfront_distribution.s3_distribution", 62 ), 63 resource.TestCheckResourceAttr( 64 "aws_cloudfront_distribution.s3_distribution", "tags.%", "2"), 65 resource.TestCheckResourceAttr( 66 "aws_cloudfront_distribution.s3_distribution", "tags.environment", "production"), 67 resource.TestCheckResourceAttr( 68 "aws_cloudfront_distribution.s3_distribution", "tags.account", "main"), 69 ), 70 }, 71 { 72 Config: postConfig, 73 Check: resource.ComposeTestCheckFunc( 74 testAccCheckCloudFrontDistributionExistence( 75 "aws_cloudfront_distribution.s3_distribution", 76 ), 77 resource.TestCheckResourceAttr( 78 "aws_cloudfront_distribution.s3_distribution", "tags.%", "1"), 79 resource.TestCheckResourceAttr( 80 "aws_cloudfront_distribution.s3_distribution", "tags.environment", "dev"), 81 ), 82 }, 83 }, 84 }) 85 } 86 87 // TestAccAWSCloudFrontDistribution_customOriginruns an 88 // aws_cloudfront_distribution acceptance test with a single custom origin. 89 // 90 // If you are testing manually and can't wait for deletion, set the 91 // TF_TEST_CLOUDFRONT_RETAIN environment variable. 92 func TestAccAWSCloudFrontDistribution_customOrigin(t *testing.T) { 93 resource.Test(t, resource.TestCase{ 94 PreCheck: func() { testAccPreCheck(t) }, 95 Providers: testAccProviders, 96 CheckDestroy: testAccCheckCloudFrontDistributionDestroy, 97 Steps: []resource.TestStep{ 98 resource.TestStep{ 99 Config: testAccAWSCloudFrontDistributionCustomConfig, 100 Check: resource.ComposeTestCheckFunc( 101 testAccCheckCloudFrontDistributionExistence( 102 "aws_cloudfront_distribution.custom_distribution", 103 ), 104 ), 105 }, 106 }, 107 }) 108 } 109 110 // TestAccAWSCloudFrontDistribution_multiOrigin runs an 111 // aws_cloudfront_distribution acceptance test with multiple origins. 112 // 113 // If you are testing manually and can't wait for deletion, set the 114 // TF_TEST_CLOUDFRONT_RETAIN environment variable. 115 func TestAccAWSCloudFrontDistribution_multiOrigin(t *testing.T) { 116 resource.Test(t, resource.TestCase{ 117 PreCheck: func() { testAccPreCheck(t) }, 118 Providers: testAccProviders, 119 CheckDestroy: testAccCheckCloudFrontDistributionDestroy, 120 Steps: []resource.TestStep{ 121 resource.TestStep{ 122 Config: testAccAWSCloudFrontDistributionMultiOriginConfig, 123 Check: resource.ComposeTestCheckFunc( 124 testAccCheckCloudFrontDistributionExistence( 125 "aws_cloudfront_distribution.multi_origin_distribution", 126 ), 127 ), 128 }, 129 }, 130 }) 131 } 132 133 // TestAccAWSCloudFrontDistribution_noOptionalItemsConfig runs an 134 // aws_cloudfront_distribution acceptance test with no optional items set. 135 // 136 // If you are testing manually and can't wait for deletion, set the 137 // TF_TEST_CLOUDFRONT_RETAIN environment variable. 138 func TestAccAWSCloudFrontDistribution_noOptionalItemsConfig(t *testing.T) { 139 resource.Test(t, resource.TestCase{ 140 PreCheck: func() { testAccPreCheck(t) }, 141 Providers: testAccProviders, 142 CheckDestroy: testAccCheckCloudFrontDistributionDestroy, 143 Steps: []resource.TestStep{ 144 resource.TestStep{ 145 Config: testAccAWSCloudFrontDistributionNoOptionalItemsConfig, 146 Check: resource.ComposeTestCheckFunc( 147 testAccCheckCloudFrontDistributionExistence( 148 "aws_cloudfront_distribution.no_optional_items", 149 ), 150 ), 151 }, 152 }, 153 }) 154 } 155 156 // TestAccAWSCloudFrontDistribution_HTTP11Config runs an 157 // aws_cloudfront_distribution acceptance test with the HTTP version set to 158 // 1.1. 159 // 160 // If you are testing manually and can't wait for deletion, set the 161 // TF_TEST_CLOUDFRONT_RETAIN environment variable. 162 func TestAccAWSCloudFrontDistribution_HTTP11Config(t *testing.T) { 163 resource.Test(t, resource.TestCase{ 164 PreCheck: func() { testAccPreCheck(t) }, 165 Providers: testAccProviders, 166 CheckDestroy: testAccCheckCloudFrontDistributionDestroy, 167 Steps: []resource.TestStep{ 168 resource.TestStep{ 169 Config: testAccAWSCloudFrontDistributionHTTP11Config, 170 Check: resource.ComposeTestCheckFunc( 171 testAccCheckCloudFrontDistributionExistence( 172 "aws_cloudfront_distribution.http_1_1", 173 ), 174 ), 175 }, 176 }, 177 }) 178 } 179 180 func TestAccAWSCloudFrontDistribution_IsIPV6EnabledConfig(t *testing.T) { 181 resource.Test(t, resource.TestCase{ 182 PreCheck: func() { testAccPreCheck(t) }, 183 Providers: testAccProviders, 184 CheckDestroy: testAccCheckCloudFrontDistributionDestroy, 185 Steps: []resource.TestStep{ 186 resource.TestStep{ 187 Config: testAccAWSCloudFrontDistributionIsIPV6EnabledConfig, 188 Check: resource.ComposeTestCheckFunc( 189 testAccCheckCloudFrontDistributionExistence( 190 "aws_cloudfront_distribution.is_ipv6_enabled", 191 ), 192 resource.TestCheckResourceAttr( 193 "aws_cloudfront_distribution.is_ipv6_enabled", "is_ipv6_enabled", "true"), 194 ), 195 }, 196 }, 197 }) 198 } 199 200 func TestAccAWSCloudFrontDistribution_noCustomErrorResponseConfig(t *testing.T) { 201 resource.Test(t, resource.TestCase{ 202 PreCheck: func() { testAccPreCheck(t) }, 203 Providers: testAccProviders, 204 CheckDestroy: testAccCheckCloudFrontDistributionDestroy, 205 Steps: []resource.TestStep{ 206 resource.TestStep{ 207 Config: testAccAWSCloudFrontDistributionNoCustomErroResponseInfo, 208 Check: resource.ComposeTestCheckFunc( 209 testAccCheckCloudFrontDistributionExistence( 210 "aws_cloudfront_distribution.no_custom_error_responses", 211 ), 212 ), 213 }, 214 }, 215 }) 216 } 217 218 func TestResourceAWSCloudFrontDistribution_validateHTTP(t *testing.T) { 219 var value string 220 var errors []error 221 222 value = "incorrect" 223 _, errors = validateHTTP(value, "http_version") 224 if len(errors) == 0 { 225 t.Fatalf("Expected %q to trigger a validation error", value) 226 } 227 228 value = "http1.1" 229 _, errors = validateHTTP(value, "http_version") 230 if len(errors) != 0 { 231 t.Fatalf("Expected %q not to trigger a validation error", value) 232 } 233 } 234 235 func testAccCheckCloudFrontDistributionDestroy(s *terraform.State) error { 236 for k, rs := range s.RootModule().Resources { 237 if rs.Type != "aws_cloudfront_distribution" { 238 continue 239 } 240 dist, err := testAccAuxCloudFrontGetDistributionConfig(s, k) 241 if err == nil { 242 if _, ok := os.LookupEnv("TF_TEST_CLOUDFRONT_RETAIN"); ok { 243 if *dist.DistributionConfig.Enabled != false { 244 return fmt.Errorf("CloudFront distribution should be disabled") 245 } 246 return nil 247 } 248 return fmt.Errorf("CloudFront distribution did not destroy") 249 } 250 } 251 return nil 252 } 253 254 func testAccCheckCloudFrontDistributionExistence(cloudFrontResource string) resource.TestCheckFunc { 255 return func(s *terraform.State) error { 256 _, err := testAccAuxCloudFrontGetDistributionConfig(s, cloudFrontResource) 257 258 return err 259 } 260 } 261 262 func testAccAuxCloudFrontGetDistributionConfig(s *terraform.State, cloudFrontResource string) (*cloudfront.Distribution, error) { 263 cf, ok := s.RootModule().Resources[cloudFrontResource] 264 if !ok { 265 return nil, fmt.Errorf("Not found: %s", cloudFrontResource) 266 } 267 268 if cf.Primary.ID == "" { 269 return nil, fmt.Errorf("No Id is set") 270 } 271 272 cloudfrontconn := testAccProvider.Meta().(*AWSClient).cloudfrontconn 273 274 req := &cloudfront.GetDistributionInput{ 275 Id: aws.String(cf.Primary.ID), 276 } 277 278 res, err := cloudfrontconn.GetDistribution(req) 279 if err != nil { 280 return nil, fmt.Errorf("Error retrieving CloudFront distribution: %s", err) 281 } 282 283 return res.Distribution, nil 284 } 285 286 func testAccAWSCloudFrontDistributionRetainConfig() string { 287 if _, ok := os.LookupEnv("TF_TEST_CLOUDFRONT_RETAIN"); ok { 288 return "retain_on_delete = true" 289 } 290 return "" 291 } 292 293 var originBucket = fmt.Sprintf(` 294 resource "aws_s3_bucket" "s3_bucket_origin" { 295 bucket = "mybucket.${var.rand_id}" 296 acl = "public-read" 297 } 298 `) 299 300 var logBucket = fmt.Sprintf(` 301 resource "aws_s3_bucket" "s3_bucket_logs" { 302 bucket = "mylogs.${var.rand_id}" 303 acl = "public-read" 304 } 305 `) 306 307 var testAccAWSCloudFrontDistributionS3Config = ` 308 variable rand_id { 309 default = %d 310 } 311 312 # origin bucket 313 %s 314 315 # log bucket 316 %s 317 318 resource "aws_cloudfront_distribution" "s3_distribution" { 319 origin { 320 domain_name = "${aws_s3_bucket.s3_bucket_origin.id}.s3.amazonaws.com" 321 origin_id = "myS3Origin" 322 } 323 enabled = true 324 default_root_object = "index.html" 325 logging_config { 326 include_cookies = false 327 bucket = "${aws_s3_bucket.s3_bucket_logs.id}.s3.amazonaws.com" 328 prefix = "myprefix" 329 } 330 aliases = [ "mysite.${var.rand_id}.example.com", "yoursite.${var.rand_id}.example.com" ] 331 default_cache_behavior { 332 allowed_methods = [ "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT" ] 333 cached_methods = [ "GET", "HEAD" ] 334 target_origin_id = "myS3Origin" 335 forwarded_values { 336 query_string = false 337 cookies { 338 forward = "none" 339 } 340 } 341 viewer_protocol_policy = "allow-all" 342 min_ttl = 0 343 default_ttl = 3600 344 max_ttl = 86400 345 } 346 price_class = "PriceClass_200" 347 restrictions { 348 geo_restriction { 349 restriction_type = "whitelist" 350 locations = [ "US", "CA", "GB", "DE" ] 351 } 352 } 353 viewer_certificate { 354 cloudfront_default_certificate = true 355 } 356 %s 357 } 358 ` 359 360 var testAccAWSCloudFrontDistributionS3ConfigWithTags = ` 361 variable rand_id { 362 default = %d 363 } 364 365 # origin bucket 366 %s 367 368 # log bucket 369 %s 370 371 resource "aws_cloudfront_distribution" "s3_distribution" { 372 origin { 373 domain_name = "${aws_s3_bucket.s3_bucket_origin.id}.s3.amazonaws.com" 374 origin_id = "myS3Origin" 375 } 376 enabled = true 377 default_root_object = "index.html" 378 aliases = [ "mysite.${var.rand_id}.example.com", "yoursite.${var.rand_id}.example.com" ] 379 default_cache_behavior { 380 allowed_methods = [ "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT" ] 381 cached_methods = [ "GET", "HEAD" ] 382 target_origin_id = "myS3Origin" 383 forwarded_values { 384 query_string = false 385 cookies { 386 forward = "none" 387 } 388 } 389 viewer_protocol_policy = "allow-all" 390 min_ttl = 0 391 default_ttl = 3600 392 max_ttl = 86400 393 } 394 price_class = "PriceClass_200" 395 restrictions { 396 geo_restriction { 397 restriction_type = "whitelist" 398 locations = [ "US", "CA", "GB", "DE" ] 399 } 400 } 401 viewer_certificate { 402 cloudfront_default_certificate = true 403 } 404 tags { 405 environment = "production" 406 account = "main" 407 } 408 %s 409 } 410 ` 411 412 var testAccAWSCloudFrontDistributionS3ConfigWithTagsUpdated = ` 413 variable rand_id { 414 default = %d 415 } 416 417 # origin bucket 418 %s 419 420 # log bucket 421 %s 422 423 resource "aws_cloudfront_distribution" "s3_distribution" { 424 origin { 425 domain_name = "${aws_s3_bucket.s3_bucket_origin.id}.s3.amazonaws.com" 426 origin_id = "myS3Origin" 427 } 428 enabled = true 429 default_root_object = "index.html" 430 aliases = [ "mysite.${var.rand_id}.example.com", "yoursite.${var.rand_id}.example.com" ] 431 default_cache_behavior { 432 allowed_methods = [ "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT" ] 433 cached_methods = [ "GET", "HEAD" ] 434 target_origin_id = "myS3Origin" 435 forwarded_values { 436 query_string = false 437 cookies { 438 forward = "none" 439 } 440 } 441 viewer_protocol_policy = "allow-all" 442 min_ttl = 0 443 default_ttl = 3600 444 max_ttl = 86400 445 } 446 price_class = "PriceClass_200" 447 restrictions { 448 geo_restriction { 449 restriction_type = "whitelist" 450 locations = [ "US", "CA", "GB", "DE" ] 451 } 452 } 453 viewer_certificate { 454 cloudfront_default_certificate = true 455 } 456 tags { 457 environment = "dev" 458 } 459 %s 460 } 461 ` 462 463 var testAccAWSCloudFrontDistributionCustomConfig = fmt.Sprintf(` 464 variable rand_id { 465 default = %d 466 } 467 468 # log bucket 469 %s 470 471 resource "aws_cloudfront_distribution" "custom_distribution" { 472 origin { 473 domain_name = "www.example.com" 474 origin_id = "myCustomOrigin" 475 custom_origin_config { 476 http_port = 80 477 https_port = 443 478 origin_protocol_policy = "http-only" 479 origin_ssl_protocols = [ "SSLv3", "TLSv1" ] 480 } 481 } 482 enabled = true 483 comment = "Some comment" 484 default_root_object = "index.html" 485 logging_config { 486 include_cookies = false 487 bucket = "${aws_s3_bucket.s3_bucket_logs.id}.s3.amazonaws.com" 488 prefix = "myprefix" 489 } 490 aliases = [ "mysite.${var.rand_id}.example.com", "*.yoursite.${var.rand_id}.example.com" ] 491 default_cache_behavior { 492 allowed_methods = [ "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT" ] 493 cached_methods = [ "GET", "HEAD" ] 494 target_origin_id = "myCustomOrigin" 495 smooth_streaming = false 496 forwarded_values { 497 query_string = false 498 cookies { 499 forward = "all" 500 } 501 } 502 viewer_protocol_policy = "allow-all" 503 min_ttl = 0 504 default_ttl = 3600 505 max_ttl = 86400 506 } 507 price_class = "PriceClass_200" 508 restrictions { 509 geo_restriction { 510 restriction_type = "whitelist" 511 locations = [ "US", "CA", "GB", "DE" ] 512 } 513 } 514 viewer_certificate { 515 cloudfront_default_certificate = true 516 } 517 %s 518 } 519 `, rand.New(rand.NewSource(time.Now().UnixNano())).Int(), logBucket, testAccAWSCloudFrontDistributionRetainConfig()) 520 521 var testAccAWSCloudFrontDistributionMultiOriginConfig = fmt.Sprintf(` 522 variable rand_id { 523 default = %d 524 } 525 526 # origin bucket 527 %s 528 529 # log bucket 530 %s 531 532 resource "aws_cloudfront_distribution" "multi_origin_distribution" { 533 origin { 534 domain_name = "${aws_s3_bucket.s3_bucket_origin.id}.s3.amazonaws.com" 535 origin_id = "myS3Origin" 536 } 537 origin { 538 domain_name = "www.example.com" 539 origin_id = "myCustomOrigin" 540 custom_origin_config { 541 http_port = 80 542 https_port = 443 543 origin_protocol_policy = "http-only" 544 origin_ssl_protocols = [ "SSLv3", "TLSv1" ] 545 } 546 } 547 enabled = true 548 comment = "Some comment" 549 default_root_object = "index.html" 550 logging_config { 551 include_cookies = false 552 bucket = "${aws_s3_bucket.s3_bucket_logs.id}.s3.amazonaws.com" 553 prefix = "myprefix" 554 } 555 aliases = [ "mysite.${var.rand_id}.example.com", "*.yoursite.${var.rand_id}.example.com" ] 556 default_cache_behavior { 557 allowed_methods = [ "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT" ] 558 cached_methods = [ "GET", "HEAD" ] 559 target_origin_id = "myS3Origin" 560 smooth_streaming = true 561 forwarded_values { 562 query_string = false 563 cookies { 564 forward = "all" 565 } 566 } 567 min_ttl = 100 568 default_ttl = 100 569 max_ttl = 100 570 viewer_protocol_policy = "allow-all" 571 } 572 cache_behavior { 573 allowed_methods = [ "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT" ] 574 cached_methods = [ "GET", "HEAD" ] 575 target_origin_id = "myS3Origin" 576 forwarded_values { 577 query_string = true 578 cookies { 579 forward = "none" 580 } 581 } 582 min_ttl = 50 583 default_ttl = 50 584 max_ttl = 50 585 viewer_protocol_policy = "allow-all" 586 path_pattern = "images1/*.jpg" 587 } 588 cache_behavior { 589 allowed_methods = [ "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT" ] 590 cached_methods = [ "GET", "HEAD" ] 591 target_origin_id = "myCustomOrigin" 592 forwarded_values { 593 query_string = true 594 cookies { 595 forward = "none" 596 } 597 } 598 min_ttl = 50 599 default_ttl = 50 600 max_ttl = 50 601 viewer_protocol_policy = "allow-all" 602 path_pattern = "images2/*.jpg" 603 } 604 605 price_class = "PriceClass_All" 606 custom_error_response { 607 error_code = 404 608 response_page_path = "/error-pages/404.html" 609 response_code = 200 610 error_caching_min_ttl = 30 611 } 612 restrictions { 613 geo_restriction { 614 restriction_type = "none" 615 } 616 } 617 viewer_certificate { 618 cloudfront_default_certificate = true 619 } 620 %s 621 } 622 `, rand.New(rand.NewSource(time.Now().UnixNano())).Int(), originBucket, logBucket, testAccAWSCloudFrontDistributionRetainConfig()) 623 624 var testAccAWSCloudFrontDistributionNoCustomErroResponseInfo = fmt.Sprintf(` 625 variable rand_id { 626 default = %d 627 } 628 629 resource "aws_cloudfront_distribution" "no_custom_error_responses" { 630 origin { 631 domain_name = "www.example.com" 632 origin_id = "myCustomOrigin" 633 custom_origin_config { 634 http_port = 80 635 https_port = 443 636 origin_protocol_policy = "http-only" 637 origin_ssl_protocols = [ "SSLv3", "TLSv1" ] 638 } 639 } 640 enabled = true 641 comment = "Some comment" 642 default_cache_behavior { 643 allowed_methods = [ "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT" ] 644 cached_methods = [ "GET", "HEAD" ] 645 target_origin_id = "myCustomOrigin" 646 smooth_streaming = false 647 forwarded_values { 648 query_string = false 649 cookies { 650 forward = "all" 651 } 652 } 653 viewer_protocol_policy = "allow-all" 654 min_ttl = 0 655 default_ttl = 3600 656 max_ttl = 86400 657 } 658 custom_error_response { 659 error_code = 404 660 error_caching_min_ttl = 30 661 } 662 restrictions { 663 geo_restriction { 664 restriction_type = "whitelist" 665 locations = [ "US", "CA", "GB", "DE" ] 666 } 667 } 668 viewer_certificate { 669 cloudfront_default_certificate = true 670 } 671 %s 672 } 673 `, rand.New(rand.NewSource(time.Now().UnixNano())).Int(), testAccAWSCloudFrontDistributionRetainConfig()) 674 675 var testAccAWSCloudFrontDistributionNoOptionalItemsConfig = fmt.Sprintf(` 676 variable rand_id { 677 default = %d 678 } 679 680 resource "aws_cloudfront_distribution" "no_optional_items" { 681 origin { 682 domain_name = "www.example.com" 683 origin_id = "myCustomOrigin" 684 custom_origin_config { 685 http_port = 80 686 https_port = 443 687 origin_protocol_policy = "http-only" 688 origin_ssl_protocols = [ "SSLv3", "TLSv1" ] 689 } 690 } 691 enabled = true 692 comment = "Some comment" 693 default_cache_behavior { 694 allowed_methods = [ "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT" ] 695 cached_methods = [ "GET", "HEAD" ] 696 target_origin_id = "myCustomOrigin" 697 smooth_streaming = false 698 forwarded_values { 699 query_string = false 700 cookies { 701 forward = "all" 702 } 703 } 704 viewer_protocol_policy = "allow-all" 705 min_ttl = 0 706 default_ttl = 3600 707 max_ttl = 86400 708 } 709 restrictions { 710 geo_restriction { 711 restriction_type = "whitelist" 712 locations = [ "US", "CA", "GB", "DE" ] 713 } 714 } 715 viewer_certificate { 716 cloudfront_default_certificate = true 717 } 718 %s 719 } 720 `, rand.New(rand.NewSource(time.Now().UnixNano())).Int(), testAccAWSCloudFrontDistributionRetainConfig()) 721 722 var testAccAWSCloudFrontDistributionHTTP11Config = fmt.Sprintf(` 723 variable rand_id { 724 default = %d 725 } 726 727 resource "aws_cloudfront_distribution" "http_1_1" { 728 origin { 729 domain_name = "www.example.com" 730 origin_id = "myCustomOrigin" 731 custom_origin_config { 732 http_port = 80 733 https_port = 443 734 origin_protocol_policy = "http-only" 735 origin_ssl_protocols = [ "SSLv3", "TLSv1" ] 736 } 737 } 738 enabled = true 739 comment = "Some comment" 740 default_cache_behavior { 741 allowed_methods = [ "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT" ] 742 cached_methods = [ "GET", "HEAD" ] 743 target_origin_id = "myCustomOrigin" 744 smooth_streaming = false 745 forwarded_values { 746 query_string = false 747 cookies { 748 forward = "all" 749 } 750 } 751 viewer_protocol_policy = "allow-all" 752 min_ttl = 0 753 default_ttl = 3600 754 max_ttl = 86400 755 } 756 http_version = "http1.1" 757 restrictions { 758 geo_restriction { 759 restriction_type = "whitelist" 760 locations = [ "US", "CA", "GB", "DE" ] 761 } 762 } 763 viewer_certificate { 764 cloudfront_default_certificate = true 765 } 766 %s 767 } 768 `, rand.New(rand.NewSource(time.Now().UnixNano())).Int(), testAccAWSCloudFrontDistributionRetainConfig()) 769 770 var testAccAWSCloudFrontDistributionIsIPV6EnabledConfig = fmt.Sprintf(` 771 variable rand_id { 772 default = %d 773 } 774 775 resource "aws_cloudfront_distribution" "is_ipv6_enabled" { 776 origin { 777 domain_name = "www.example.com" 778 origin_id = "myCustomOrigin" 779 custom_origin_config { 780 http_port = 80 781 https_port = 443 782 origin_protocol_policy = "http-only" 783 origin_ssl_protocols = [ "SSLv3", "TLSv1" ] 784 } 785 } 786 enabled = true 787 is_ipv6_enabled = true 788 comment = "Some comment" 789 default_cache_behavior { 790 allowed_methods = [ "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT" ] 791 cached_methods = [ "GET", "HEAD" ] 792 target_origin_id = "myCustomOrigin" 793 smooth_streaming = false 794 forwarded_values { 795 query_string = false 796 cookies { 797 forward = "all" 798 } 799 } 800 viewer_protocol_policy = "allow-all" 801 min_ttl = 0 802 default_ttl = 3600 803 max_ttl = 86400 804 } 805 http_version = "http1.1" 806 restrictions { 807 geo_restriction { 808 restriction_type = "whitelist" 809 locations = [ "US", "CA", "GB", "DE" ] 810 } 811 } 812 viewer_certificate { 813 cloudfront_default_certificate = true 814 } 815 %s 816 } 817 `, rand.New(rand.NewSource(time.Now().UnixNano())).Int(), testAccAWSCloudFrontDistributionRetainConfig())