Terraform 0.11

aws_cloudfront_distribution




terraform

aws_cloudfront_distribution

एक Amazon CloudFront वेब वितरण बनाता है।

CloudFront वितरण के बारे में जानकारी के लिए, Amazon CloudFront डेवलपर गाइड देखें । CloudFront वेब वितरण बनाने के बारे में विशेष जानकारी के लिए, Amazon CloudFront API संदर्भ में POST वितरण पृष्ठ देखें।

उदाहरण उपयोग

नीचे दिया गया उदाहरण S3 मूल के साथ CloudFront वितरण बनाता है।

resource "aws_s3_bucket" "b" {
  bucket = "mybucket"
  acl    = "private"

  tags {
    Name = "My bucket"
  }
}

locals {
  s3_origin_id = "myS3Origin"
}

resource "aws_cloudfront_distribution" "s3_distribution" {
  origin {
    domain_name = "${aws_s3_bucket.b.bucket_regional_domain_name}"
    origin_id   = "${local.s3_origin_id}"

    s3_origin_config {
      origin_access_identity = "origin-access-identity/cloudfront/ABCDEFG1234567"
    }
  }

  enabled             = true
  is_ipv6_enabled     = true
  comment             = "Some comment"
  default_root_object = "index.html"

  logging_config {
    include_cookies = false
    bucket          = "mylogs.s3.amazonaws.com"
    prefix          = "myprefix"
  }

  aliases = ["mysite.example.com", "yoursite.example.com"]

  default_cache_behavior {
    allowed_methods  = ["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"]
    cached_methods   = ["GET", "HEAD"]
    target_origin_id = "${local.s3_origin_id}"

    forwarded_values {
      query_string = false

      cookies {
        forward = "none"
      }
    }

    viewer_protocol_policy = "allow-all"
    min_ttl                = 0
    default_ttl            = 3600
    max_ttl                = 86400
  }

  # Cache behavior with precedence 0
  ordered_cache_behavior {
    path_pattern     = "/content/immutable/*"
    allowed_methods  = ["GET", "HEAD", "OPTIONS"]
    cached_methods   = ["GET", "HEAD", "OPTIONS"]
    target_origin_id = "${local.s3_origin_id}"

    forwarded_values {
      query_string = false
      headers = ["Origin"]
      cookies {
        forward = "none"
      }
    }

    min_ttl                = 0
    default_ttl            = 86400
    max_ttl                = 31536000
    compress               = true
    viewer_protocol_policy = "redirect-to-https"
  }

  # Cache behavior with precedence 1
  ordered_cache_behavior {
    path_pattern     = "/content/*"
    allowed_methods  = ["GET", "HEAD", "OPTIONS"]
    cached_methods   = ["GET", "HEAD"]
    target_origin_id = "${local.s3_origin_id}"

    forwarded_values {
      query_string = false
      cookies {
        forward = "none"
      }
    }

    min_ttl                = 0
    default_ttl            = 3600
    max_ttl                = 86400
    compress               = true
    viewer_protocol_policy = "redirect-to-https"
  }

  price_class = "PriceClass_200"

  restrictions {
    geo_restriction {
      restriction_type = "whitelist"
      locations        = ["US", "CA", "GB", "DE"]
    }
  }

  tags {
    Environment = "production"
  }

  viewer_certificate {
    cloudfront_default_certificate = true
  }
}

तर्क संदर्भ

क्लाउडफ्रंट वितरण तर्क लेआउट एक जटिल संरचना है जो कई उप-संसाधनों से बना है - ये संसाधन नीचे दिए गए हैं।

शीर्ष स्तर के तर्क

  • aliases (वैकल्पिक) - इस वितरण के लिए अतिरिक्त CNAME (वैकल्पिक डोमेन नाम), यदि कोई हो,।

  • cache_behavior (वैकल्पिक) - पदावनत , इसके बजाय ordered_cache_behavior उपयोग करें।

  • ordered_cache_behavior (वैकल्पिक) - इस वितरण के लिए कैश व्यवहार संसाधन की एक आदेशित सूची। ऊपर से नीचे की सूची

    • पूर्वता के क्रम में। सबसे ऊपरी कैश व्यवहार में पूर्वता 0 होगी।
  • comment (वैकल्पिक) - कोई भी टिप्पणी जिसे आप वितरण के बारे में शामिल करना चाहते हैं।

  • custom_error_response (वैकल्पिक) - एक या अधिक कस्टम त्रुटि प्रतिक्रिया तत्व (अनुमति दी गई गुणक)।

  • default_cache_behavior (आवश्यक) - इस वितरण के लिए डिफ़ॉल्ट कैश व्यवहार (अधिकतम एक)।

  • default_root_object (वैकल्पिक) - वह वस्तु जिसे आप CloudFront चाहते हैं (उदाहरण के लिए, index.html) जब कोई अंतिम उपयोगकर्ता रूट URL का अनुरोध करता है।

  • enabled (आवश्यक) - क्या वितरण सामग्री के लिए अंतिम उपयोगकर्ता अनुरोध स्वीकार करने में सक्षम है।

  • is_ipv6_enabled (वैकल्पिक) - क्या वितरण के लिए IPv6 सक्षम है या नहीं।

  • http_version (वैकल्पिक) - वितरण पर समर्थन के लिए अधिकतम HTTP संस्करण। अनुमत मान http1.1 और http2 । डिफ़ॉल्ट http2

  • logging_config (वैकल्पिक) - लॉगिंग कॉन्फ़िगरेशन जो नियंत्रित करता है कि लॉग आपके वितरण (अधिकतम एक) को कैसे लिखा जाता है।

  • origin (आवश्यक) - इस वितरण के लिए एक या एक से अधिक origins (अनुमति दी गई गुणक)।

  • price_class (वैकल्पिक) - इस वितरण के लिए मूल्य वर्ग। PriceClass_All , PriceClass_200 , PriceClass_100

  • restrictions (आवश्यक) - इस वितरण के लिए प्रतिबंध कॉन्फ़िगरेशन (अधिकतम एक)।

  • tags - (वैकल्पिक) संसाधन को असाइन करने के लिए टैग की मैपिंग।

  • viewer_certificate (आवश्यक) - इस वितरण के लिए एसएसएल विन्यास (अधिकतम एक)।

  • web_acl_id (वैकल्पिक) - यदि आप CloudFront अनुरोधों को फ़िल्टर करने के लिए AWS WAF का उपयोग कर रहे हैं, तो AWS WAF वेब ACL की आईडी जो वितरण से संबद्ध है।

  • retain_on_delete (वैकल्पिक) - टेराफॉर्म के माध्यम से संसाधन को नष्ट करते समय इसे हटाने के बजाय वितरण को अक्षम करता है। यदि यह सेट किया गया है, तो वितरण को बाद में मैन्युअल रूप से हटाने की आवश्यकता है। डिफ़ॉल्ट: false

कैश व्यवहार तर्क

  • allowed_methods (आवश्यक) - नियंत्रण जो HTTP तरीकों CloudFront प्रक्रियाओं और आगे अपने अमेज़न S3 बाल्टी या अपने कस्टम मूल के लिए।

  • cached_methods (आवश्यक) - यह नियंत्रित करता है कि क्या CloudFront निर्दिष्ट HTTP विधियों का उपयोग करके अनुरोधों की प्रतिक्रिया को कैश करता है।

  • compress (वैकल्पिक) - क्या आप चाहते हैं कि CloudFront वेब-अनुरोधों के लिए सामग्री को स्वचालित रूप से संपीड़ित करे जिसमें Accept-Encoding: gzip अनुरोध शीर्षलेख में Accept-Encoding: gzip (डिफ़ॉल्ट: false ) शामिल हो।

  • default_ttl (वैकल्पिक) - समय की डिफ़ॉल्ट राशि (सेकंड में) कि CloudFront से पहले कोई ऑब्जेक्ट CloudFront कैश में है, Cache-Control max-age या समय Expires की अनुपस्थिति में एक अन्य अनुरोध। 1 दिन के लिए चूक।

  • field_level_encryption_id एन्क्रिप्शन_ field_level_encryption_id (वैकल्पिक) - फ़ील्ड स्तर एन्क्रिप्शन कॉन्फ़िगरेशन ID

  • forwarded_values (आवश्यक) - फ़ॉरवर्डेड वैल्यू कॉन्फ़िगरेशन निर्दिष्ट करता है कि क्लाउडफ्रंट क्वेरी स्ट्रिंग्स, कुकीज़ और हेडर (अधिकतम एक) को कैसे संभालता है।

  • lambda_function_association (वैकल्पिक) - एक कॉन्फ़िगरेशन ब्लॉक जो विशिष्ट कार्यों के साथ एक lambda_function_association फ़ंक्शन को ट्रिगर करता है। नीचे परिभाषित, अधिकतम 4।

  • max_ttl (वैकल्पिक) - समय की अधिकतम राशि (सेकंड में) है कि कोई ऑब्जेक्ट CloudFront कैश में है इससे पहले CloudFront को आपके मूल के लिए एक अन्य अनुरोध यह निर्धारित करने के लिए कि क्या ऑब्जेक्ट अद्यतन किया गया है। केवल Cache-Control max-age , Cache-Control s-maxage , और समय Expires हेडर की उपस्थिति में प्रभावी है। ३६५ दिनों की चूक।

  • min_ttl (वैकल्पिक) - जिस समय आप ऑब्जेक्ट को अपडेट किया गया है, यह देखने के लिए CloudFront से पहले ही ऑब्जेक्ट्स को CloudFront कैश में रहने के लिए न्यूनतम समय चाहिए। 0 सेकंड के लिए चूक।

  • path_pattern (आवश्यक) - पैटर्न (उदाहरण के लिए, images/*.jpg) जो यह निर्दिष्ट करता है कि आप इस कैश व्यवहार को path_pattern लिए लागू करना चाहते हैं।

  • smooth_streaming (वैकल्पिक) - इंगित करता है कि क्या आप इस कैश व्यवहार के साथ जुड़े मूल का उपयोग करके Microsoft चिकना स्ट्रीमिंग प्रारूप में मीडिया फ़ाइलों को वितरित करना चाहते हैं।

  • target_origin_id (आवश्यक) - उस मूल के लिए ID का मान जिसे आप अनुरोध के लिए CloudFront से रूट अनुरोध करना चाहते हैं जब पथ अनुरोध या तो कैश व्यवहार के लिए या डिफ़ॉल्ट कैश व्यवहार के लिए मेल खाता है।

  • trusted_signers (वैकल्पिक) - AWS खाते, यदि कोई हो, जिसे आप निजी सामग्री के लिए हस्ताक्षरित URL बनाने की अनुमति देना चाहते हैं।

  • viewer_protocol_policy (आवश्यक) - इस तत्व का उपयोग उस प्रोटोकॉल को निर्दिष्ट करने के लिए करें जिसका उपयोग उपयोगकर्ता किसी लक्ष्य PathPattern में पथ के पैटर्न से मेल खाने पर TargetOriginId द्वारा निर्दिष्ट मूल में फ़ाइलों तक पहुँचने के लिए कर सकते हैं। allow-all , https-only , या redirect-to-https

अग्रेषित मान तर्क
  • cookies (आवश्यक) - अग्रेषित मूल्य कुकीज़ जो निर्दिष्ट करती है कि CloudFront कुकीज़ (अधिकतम एक) को कैसे संभालती है।

  • headers (वैकल्पिक) - headers निर्दिष्ट करता है, यदि कोई हो, तो आप चाहते हैं कि क्लाउडफ़ास्ट इस कैश व्यवहार के लिए अलग-अलग हो। निर्दिष्ट करें * सभी हेडर को शामिल करने के लिए।

  • query_string (आवश्यक) - इंगित करता है कि क्या आप CloudFront को मूल स्ट्रिंग को अग्रेषित करना चाहते हैं जो इस कैश व्यवहार से संबद्ध है।

  • query_string_cache_keys (वैकल्पिक) - जब query_string लिए true मान के साथ निर्दिष्ट किया query_string , तो सभी क्वेरी स्ट्रिंग अग्रेषित कर दिए जाते हैं, हालांकि इस तर्क में सूचीबद्ध केवल क्वेरी स्ट्रिंग कुंजी कैश की जाती हैं। जब query_string लिए true मान के साथ छोड़ा जाता है, तो सभी क्वेरी स्ट्रिंग कुंजियाँ कैश की जाती हैं।

लाम्बा फंक्शन एसोसिएशन

लैम्ब्डा @ एज आपको पूर्वनिर्धारित घटना के साथ एडब्ल्यूएस लैम्बडा फंक्शन को संबद्ध करने की अनुमति देता है। आप प्रति ईवेंट प्रकार एक एकल फ़ंक्शन को जोड़ सकते हैं। अधिक जानकारी के लिए देखें लैम्बडा @ एज क्या है

  • event_type (आवश्यक) - इस फ़ंक्शन को ट्रिगर करने के लिए विशिष्ट घटना। मान्य मूल्य: viewer-request , origin-request , viewer-response , origin-response

  • lambda_arn (आवश्यक) - लैम्ब्डा फ़ंक्शन का एआरएन।

कुकीज़ तर्क
  • forward (आवश्यक) - निर्दिष्ट करता है कि क्या आप चाहते हैं कि CloudFront कुकी को उस मूल पर अग्रेषित करें जो इस कैश व्यवहार से संबद्ध है। आप all को निर्दिष्ट कर सकते हैं, none या whitelist । यदि whitelist , आपको बाद में whitelisted_names शामिल होना चाहिए

  • whitelisted_names (वैकल्पिक) - यदि आपने whitelist को forward करने के लिए निर्दिष्ट किया forward , तो श्वेतसूची में कुकीज़ जिन्हें आप CloudFront को अपनी उत्पत्ति के लिए अग्रेषित करना चाहते हैं।

कस्टम त्रुटि प्रतिक्रिया तर्क

  • error_caching_min_ttl (वैकल्पिक) - जिस समय आप ऑब्जेक्ट को अद्यतन किया गया है, यह देखने के लिए CloudFront कैश से पहले HTTP त्रुटि कोड CloudFront कैश में रहने के लिए न्यूनतम राशि चाहते हैं।

  • error_code (आवश्यक) - 4xx या 5xx HTTP स्थिति कोड जिसे आप अनुकूलित करना चाहते हैं।

  • response_code (वैकल्पिक) - HTTP स्थिति कोड जिसे आप चाहते हैं कि क्लाउडफ्रंट कस्टम त्रुटि पृष्ठ के साथ दर्शक को लौटाए।

  • response_page_path (वैकल्पिक) - कस्टम त्रुटि पृष्ठ का पथ (उदाहरण के लिए, /custom_404.html )।

डिफ़ॉल्ट कैश व्यवहार तर्क

ordered_cache_behavior लिए तर्क समान हैं जैसे कि ordered_cache_behavior लिए, path_pattern तर्क को छोड़कर आवश्यक नहीं है।

लॉगिंग विन्यास तर्क

  • bucket (आवश्यक) - अमेज़ॅन एस 3 बाल्टी प्रवेश लॉग्स को स्टोर करने के लिए, उदाहरण के लिए, myawslogbucket.s3.amazonaws.com

  • include_cookies (वैकल्पिक) - निर्दिष्ट करता है कि क्या आप चाहते हैं कि क्लाउडफ़ोर्स एक्सेस लॉग्स में कुकीज़ शामिल करें (डिफ़ॉल्ट: false )।

  • prefix (वैकल्पिक) - एक वैकल्पिक स्ट्रिंग जो आप चाहते हैं कि CloudFront इस वितरण के लिए पहुँच लॉग फ़ाइल नाम के लिए उपसर्ग करे, उदाहरण के लिए, myprefix/

उत्पत्ति तर्क

  • custom_origin_config - CloudFront कस्टम मूल कॉन्फ़िगरेशन जानकारी। यदि कोई S3 मूल आवश्यक है, s3_origin_config इसके बजाय s3_origin_config उपयोग करें।

  • domain_name (आवश्यक) - S3 बाल्टी का DNS डोमेन नाम, या आपके कस्टम मूल की वेब साइट।

  • custom_header (वैकल्पिक) - name और value मापदंडों के साथ एक या अधिक उप-संसाधन जो हेडर डेटा निर्दिष्ट करते हैं जो मूल (भेजे गए गुणकों) को भेजे जाएंगे।

  • origin_id (आवश्यक) - मूल के लिए एक विशिष्ट पहचानकर्ता।

  • origin_path (वैकल्पिक) - एक वैकल्पिक तत्व जो CloudFront का कारण बनता है ताकि आपके Amazon S3 बाल्टी या आपके कस्टम मूल में निर्देशिका से आपकी सामग्री का अनुरोध किया जा सके।

  • s3_origin_config - CloudFront S3 मूल कॉन्फ़िगरेशन जानकारी। यदि कोई कस्टम मूल आवश्यक है, custom_origin_config इसके बजाय custom_origin_config उपयोग करें।

कस्टम उत्पत्ति विन्यास तर्क
  • http_port (आवश्यक) - HTTP पोर्ट पर कस्टम मूल सुनता है।

  • https_port (आवश्यक) - HTTPS पोर्ट की मूल उत्पत्ति को सुनता है।

  • origin_protocol_policy (आवश्यक) - आपके मूल पर लागू करने के लिए मूल प्रोटोकॉल नीति। http-only , https-only या match-viewer

  • origin_ssl_protocols (आवश्यक) - SSL / TLS प्रोटोकॉल जो आप चाहते हैं कि HTTPS पर अपनी उत्पत्ति के साथ संचार करते समय CloudFront का उपयोग करें। SSLv3 , TLSv1 , TLSv1.1 , और TLSv1.2 से एक या अधिक की सूची।

  • origin_keepalive_timeout - (वैकल्पिक) सेकंड में कस्टम KeepAlive समयबाह्य। डिफ़ॉल्ट रूप से, AWS 60 सीमा लागू करता है। लेकिन आप increase अनुरोध कर सकते हैं।

  • origin_read_timeout - (वैकल्पिक) कस्टम रीड टाइमआउट, सेकंड में। डिफ़ॉल्ट रूप से, AWS 60 सीमा लागू करता है। लेकिन आप increase अनुरोध कर सकते हैं।

S3 उत्पत्ति विन्यास तर्क

प्रतिबंध तर्क

restrictions उप-संसाधन एक और एकल उप-संसाधन लेता है जिसका नाम geo_restriction (उपयोग के लिए उदाहरण देखें) है।

geo_restriction तर्क हैं:

  • locations (वैकल्पिक) - ISO 3166-1-अल्फा -2 कोड जिसके लिए आप चाहते हैं कि CloudFront या तो आपकी सामग्री ( whitelist ) वितरित करे या आपकी सामग्री ( blacklist ) वितरित न करे।

  • restriction_type (आवश्यक) - वह विधि जो आप देश द्वारा अपनी सामग्री के वितरण को प्रतिबंधित करने के लिए उपयोग करना चाहते हैं: none , whitelist या blacklist

दर्शक प्रमाणपत्र तर्क

  • acm_certificate_arn - AWS प्रमाणपत्र प्रबंधक प्रमाणपत्र का ARN जिसे आप इस वितरण के साथ उपयोग करना चाहते हैं। इसे निर्दिष्ट करें, cloudfront_default_certificate , या iam_certificate_id । ACM प्रमाणपत्र US-EAST-1 में होना चाहिए।

  • cloudfront_default_certificate - यदि आप चाहते हैं कि दर्शक आपकी वस्तुओं का अनुरोध करने के लिए HTTPS का उपयोग करें और आप अपने वितरण के लिए CloudFront डोमेन नाम का उपयोग कर रहे हैं। इसे निर्दिष्ट करें, acm_certificate_arn , या iam_certificate_id

  • iam_certificate_id - यदि आप कस्टम डोमेन का उपयोग कर रहे हैं तो इस वितरण के लिए कस्टम दर्शक प्रमाणपत्र का IAM प्रमाणपत्र पहचानकर्ता। इसे निर्दिष्ट करें, acm_certificate_arn , या cloudfront_default_certificate

  • minimum_protocol_version - SSL प्रोटोकॉल का न्यूनतम संस्करण जिसे आप HTTPS कनेक्शन के लिए CloudFront उपयोग करना चाहते हैं। SSLv3 , TLSv1 , TLSv1_2016 , TLSv1.1_2016 या TLSv1.2_2018 । डिफ़ॉल्ट: TLSv1 नोट : यदि आप एक कस्टम प्रमाण पत्र ( acm_certificate_arn या iam_certificate_id साथ निर्दिष्ट) का उपयोग कर रहे हैं, और sni-only ssl_support_method , TLSv1 या बाद में निर्दिष्ट किया जाना चाहिए। यदि आपने ssl_support_method में vip निर्दिष्ट किया है, तो केवल SSLv3 या TLSv1 को निर्दिष्ट किया जा सकता है। यदि आपके पास cloudfront_default_certificate निर्दिष्ट है, तो TLSv1 को निर्दिष्ट किया जाना चाहिए।

  • ssl_support_method : निर्दिष्ट करता है कि आप HTTPS अनुरोधों को पूरा करने के लिए CloudFront कैसे चाहते हैं। vip या sni-only । यदि आप acm_certificate_arn या iam_certificate_id निर्दिष्ट करते हैं। ध्यान दें: vip समर्पित क्लाउड पते का उपयोग करने के लिए CloudFront का कारण बनता है और अतिरिक्त शुल्क वसूल सकता है।

गुण का संदर्भ

उपरोक्त सभी तर्कों के अलावा, निम्नलिखित विशेषताएँ निर्यात की जाती हैं:

  • id - वितरण के लिए पहचानकर्ता। उदाहरण के लिए: EDFDVBD632BHDS5

  • वितरण के लिए ARN - ARN (अमेज़न संसाधन नाम)। उदाहरण के लिए: arn: aws: cloudfront :: 123456789012: वितरण / EDFDVBD632BHDS5, जहां 123456789012 आपका AWS खाता आईडी है।

  • caller_reference - वितरण कॉन्फ़िगरेशन में भविष्य के अपडेट की अनुमति देने के लिए CloudFront द्वारा उपयोग किया जाने वाला आंतरिक मान।

  • status - वितरण की वर्तमान स्थिति। यदि वितरण की जानकारी पूरे Amazon CloudFront सिस्टम में पूरी तरह से प्रचारित है, तो Deployed है।

  • active_trusted_signers - मुख्य जोड़ी IDs जो CloudFront प्रत्येक विश्वसनीय हस्ताक्षरकर्ता के लिए जागरूक है, यदि वितरण हस्ताक्षरित URL के साथ निजी सामग्री की सेवा के लिए सेट है।

  • domain_name - वितरण के लिए डोमेन नाम। उदाहरण के लिए: d604721fxaaqy9.cloudfront.net

  • last_modified_time - वितरण की तारीख और समय अंतिम बार संशोधित किया गया था।

  • in_progress_validation_batches - अमान्य बैचों की संख्या वर्तमान में प्रगति पर है।

  • etag - वितरण की जानकारी का वर्तमान संस्करण। उदाहरण के लिए: E2QWRUHAPOMQZL

  • hosted_zone_id - CloudFront मार्ग 53 ज़ोन ID जिसे किसी अन्य संसाधन रिकॉर्ड सेट को रूट करने के लिए उपयोग किया जा सकता है। यह विशेषता केवल जोन आईडी Z2FDTNDATAQYW2 लिए एक उपनाम है।

आयात

क्लाउडफ्रंट डिस्ट्रिब्यूशन को id , जैसे का उपयोग करके आयात किया जा सकता है

$ terraform import aws_cloudfront_distribution.distribution E74FTE3EXAMPLE