2015-09-28 15 views
20

एपीआई गेटवे (एपीआईजी) के सामने क्लाउडफ्रंट को कैसे जोड़ते हैं, जबकि यह क्लाउडफ्रंट (सीएफ) का उपयोग करता है, यह सीडीएन एज कैशिंग का समर्थन नहीं करता है। जब मैंने कस्टम मूल के रूप में एपीआईजी का उपयोग करने के लिए एक सीएफ वितरण कॉन्फ़िगर किया, तो मुझे अनुमति से इनकार कर दिया गया।आप एपीआई गेटवे

मैं इसे ठीक करने के लिए सीएफ कैसे कॉन्फ़िगर कर सकता हूं?

उत्तर

39

एपीआई गेटवे (एपीआईजी) क्लाउडफॉर्मेशन (सीएफ) के अपने आंतरिक उपयोग के माध्यम से एज कैशिंग का समर्थन करता है, मैं एक कामकाज के साथ आया हूं।

आप वास्तव में एपीआईजी के सामने सीएफ डिस्ट डाल सकते हैं, यह चाल केवल एचटीटीपीएस को "दर्शक प्रोटोकॉल नीति" को मजबूर करने और HOST शीर्षलेख को आगे बढ़ाने के लिए नहीं है क्योंकि एपीआईजी को एसएनआई की आवश्यकता है।

मैंने किसी भी शीर्षलेख को आगे बढ़ाने के लिए अपना सीएफ "डिफ़ॉल्ट कैश व्यवहार सेटिंग्स" सेट अप किया है, और "व्यूअर प्रोटोकॉल नीति" को "केवल HTTPS" पर मजबूर किया है और यह काम करता है। उम्मीद है कि यह दूसरों की मदद करता है।

{ 
    "Type": "AWS::CloudFront::Distribution", 
    "Properties": { 
    "DistributionConfig": { 
     "Origins": [ 
     { 
      "Id": "pushchansearch", 
      "DomainName": "myapig.execute-api.us-east-1.amazonaws.com", 
      "CustomOriginConfig": { 
      "HTTPPort": "80", 
      "HTTPSPort": "443", 
      "OriginProtocolPolicy": "match-viewer" 
      }, 
      "OriginPath": { 
      "Fn::Join": [ 
       "", 
       [ 
       "/", 
       { 
        "Ref": "aaStage" 
       } 
       ] 
      ] 
      } 
     } 
     ], 
     "Enabled": true, 
     "Comment": "Push channel search", 
     "PriceClass": "PriceClass_100", 
     "DefaultCacheBehavior": { 
     "AllowedMethods": [ 
      "GET", 
      "HEAD", 
      "OPTIONS" 
     ], 
     "CachedMethods": [ 
      "HEAD", 
      "GET" 
     ], 
     "ForwardedValues": { 
      "QueryString": true, 
      "Headers": [], 
      "Cookies": { 
      "Forward": "none" 
      } 
     }, 
     "MinTTL": "0", 
     "TargetOriginId": "pushchansearch", 
     "ViewerProtocolPolicy": "https-only" 
     }, 
     "CustomErrorResponses": [ 
     ] 
    } 
    } 
} 
+0

क्या आप इसके साथ पथ पैटर्न का उपयोग कर सकते हैं? मेरे पास दो मूल के साथ क्लाउडफ़्रंट वितरण सेटअप है: मेरी स्थिर फ़ाइलों के लिए एक एस 3 बाल्टी, और एक एपीआईजी एपीआई; लेकिन एपीआईजी के लिए मेरा पथपटल ट्रिगर नहीं करता है। मुझे लगता है कि ऐसा इसलिए है क्योंकि मैं किसी फ़ाइल नाम या प्रकार से मेल नहीं खा रहा हूं, बल्कि किसी विशेष पथ पर। –

+8

एपीआई गेटवे दृश्यों के पीछे क्लाउडफ्रंट का उपयोग करता है। यदि आप अपने एपीआई गेटवे एंडपॉइंट पर क्लाउडफ्रंट वितरण को इंगित करते हैं, तो क्लाउडफ्रंट अनुरोध को अवरुद्ध करता है क्योंकि क्लाउडफ्रंट में एंटी-लूपबैक चेक है। अर्थात। आप क्लाउडफ्रंट पर क्लाउडफ्रंट को इंगित नहीं कर सकते हैं। मुझे एडब्लूएस पुन: एडब्ल्यूएस इंजीनियर द्वारा बताया गया था: 2015 में खोज करें कि यह एंटी-लूपबैक चेक आपको एपीआई गेटवे में क्लाउडफ्रंट वितरण को इंगित करने की अनुमति देने के लिए आराम से किया जाएगा। मैंने अभी तक सत्यापित नहीं किया है अगर यह अभी तक काम करता है। – Jamey

+0

मैंने अभी परीक्षण किया है और यह अब कार्य कर रहा है, इसे क्रिया में देखने के लिए 'curl https: // api.cloudprowess.com' curl। मैं ऐसा करता हूं कि एक कस्टम डोमेन सेट करने में सक्षम होने के लिए जो AWS प्रमाणपत्र प्रबंधक द्वारा जारी किए गए SSL प्रमाणपत्र का उपयोग करता है, जो मेरे एपीआई गेटवे पर अन्यथा उपलब्ध नहीं होगा। मेरा सवाल यह है कि अगर क्लाउडफ्रंट बैंडविड्थ और अनुरोधों के लिए मुझे दो बार खर्च करने जा रहा है, या भीतर-क्लाउडफ्रंट लागत शून्य होगी, तो मैं इसे एक नए प्रश्न के रूप में पूछूंगा। –

1

एपीआई गेटवे के साथ एक 403 त्रुटि देता है:

प्राधिकरण हैडर 'क्रेडेंशियल' पैरामीटर की आवश्यकता है

यहाँ एक CloudFormation संसाधन वस्तु सभी आवश्यक विन्यास किया है। प्रमाणीकरण शीर्षलेख को 'हस्ताक्षर' पैरामीटर की आवश्यकता है। प्राधिकरण शीर्षलेख को 'साइनडहेडर' पैरामीटर की आवश्यकता होती है। प्राधिकरण शीर्षलेख को या तो 'एक्स-अमेज़-डेट' या 'दिनांक' शीर्षलेख के अस्तित्व की आवश्यकता होती है।

यह भी हो सकता है कि मूल अंत बिंदु गलत है। विचित्र रूप से, "एपीआई गेटवे सभी त्रुटियों को गैर-मौजूद पथों के साथ मानता है क्योंकि 403 त्रुटि को 404 त्रुटि नहीं मिली है।" (this support thread देखें)।

मुझे यह त्रुटि मिली और मुझे लगता है कि मैं प्रमाणीकरण शीर्षलेख को गलत तरीके से अग्रेषित कर रहा था, लेकिन मैंने मूल पथ को गलत तरीके से कॉन्फ़िगर किया था।

संबंधित मुद्दे