सवाल एस 3 के साथ अमेज़ॅन क्लाउडफ्रंट। पहुंच अस्वीकृत


हम क्लाउडफ़्रंट के माध्यम से एस 3 बाल्टी को वितरित करने का प्रयास कर रहे हैं, लेकिन किसी कारण से केवल एक ही प्रतिक्रिया एक AccessDenied XML दस्तावेज़ निम्न जैसा है:

<Error>
    <Code>AccessDenied</Code>
    <Message>Access Denied</Message>
    <RequestId>89F25EB47DDA64D5</RequestId>
    <HostId>Z2xAduhEswbdBqTB/cgCggm/jVG24dPZjy1GScs9ak0w95rF4I0SnDnJrUKHHQC</HostId>
</Error>

यहां सेटिंग है जिसका हम उपयोग कर रहे हैं:

Distribution Settings Origin Settings

और यहां बाल्टी के लिए नीति है

{
    "Version": "2008-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity *********"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::x***-logos/*"
        }
    ]
}

71
2018-03-11 12:32


मूल


कैश व्यवहार सेटिंग्स - imgur.com/JBZqrRm - Jordan Adams
सुनिश्चित करें कि क्लाउडफ़्रंट एस 3 बाल्टी से पढ़ सकता है। - Nathan C
मैं इसे कैसे सक्षम या जांचूंगा? - Jordan Adams
मूल सेटिंग्स, अंतिम विकल्प। अपना स्क्रीनशॉट देखें। :) - Nathan C
मुझे लगता है कि मैंने पहले यह कोशिश की और यह काम नहीं किया लेकिन मैंने इसे फिर से बदल दिया है और यह वितरण की प्रक्रिया में है। मैं अपनी पोस्ट में बाल्टी की नीति जोड़ूंगा :) - Jordan Adams


जवाब:


यदि आप अपने क्लाउडफ्रंट वितरण की जड़ तक पहुंच रहे हैं, तो आपको एक डिफ़ॉल्ट रूट ऑब्जेक्ट सेट करने की आवश्यकता है: http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DefaultRootObject.html

क्लाउडफ्रंट कंसोल का उपयोग करके डिफ़ॉल्ट रूट ऑब्जेक्ट निर्दिष्ट करने के लिए:

  • एडब्ल्यूएस प्रबंधन कंसोल में साइन इन करें और अमेज़ॅन क्लाउडफ्रंट कंसोल खोलें https://console.aws.amazon.com/cloudfront/

  • शीर्ष फलक में वितरण की सूची में, अद्यतन करने के लिए वितरण का चयन करें।

  • में वितरण विवरण फलक, पर सामान्य टैब, क्लिक करें संपादित करें

  • में वितरण संपादित करें संवाद बॉक्स में, में डिफ़ॉल्ट रूट ऑब्जेक्ट फ़ील्ड, डिफ़ॉल्ट रूट ऑब्जेक्ट का फ़ाइल नाम दर्ज करें।

    केवल ऑब्जेक्ट नाम दर्ज करें, उदाहरण के लिए, index.html। ऑब्जेक्ट नाम से पहले / जोड़ें न जोड़ें।

  • अपने परिवर्तनों को सहेजने के लिए, क्लिक करें हाँ, संपादित करें


66
2017-10-16 23:12





मेरे पास अभी भी एक ही समस्या है और जबकि कौशा का जवाब समस्या को हल करता है index.html रूट पथ में, मेरी समस्या उप-निर्देशिकाओं के साथ भी थी क्योंकि मैंने उन लोगों के साथ संयुक्त किया था index.html "सुंदर यूआरएल" प्राप्त करने के लिए (example.com/something/ "बदसूरत" example.com/something.html के बजाय)

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

तो इस मुद्दे को ठीक करने के लिए:

  • बाल्टी के लिए स्थिर वेबसाइट होस्टिंग सक्षम करें
  • ठीक सूची (और शायद त्रुटि) दस्तावेज उचित रूप से
  • प्रतिलिपि endpoint यूआरएल - आप इसे उपर्युक्त सेटिंग्स के बगल में पा सकते हैं - इसे कुछ ऐसा दिखना चाहिए: <Bucket.name> .s3-वेबसाइट <एडब्ल्यूएस क्षेत्र> .amazonaws.com
  • उस यूआरएल का उपयोग अपने क्लाउडफ्रंट वितरण उत्पत्ति के रूप में करें। (यह सीएफ भी बना देगा डिफ़ॉल्ट रूट ऑब्जेक्ट अनावश्यक सेटिंग, लेकिन इसे वैसे भी सेट करने के लिए चोट नहीं है)

40
2018-05-11 14:01



इस टिप्पणी की तिथि के रूप में बिल्कुल सही जवाब। - Sai Ramachandran
यह मेरे लिए भी था। मेरे पास पहले से ही एक और वेबसाइट काम कर रही थी और मैंने सोचा कि मैंने एक जैसा नया कॉन्फ़िगर किया है। इसे अनदेखा करना इतना आसान है। - Günther Eberl
आपको बाल्टी को सार्वजनिक GetObject और ListObjects अनुमतियों को जोड़ने की भी आवश्यकता है। - Georges


मुझे @ सीज़ के समान समस्या थी, हालांकि समाधान मेरे मामले में काम नहीं करेगा।

जैसे ही बाल्टी के लिए स्थैतिक वेबसाइट होस्टिंग सक्षम होता है, इसका मतलब है कि उपयोगकर्ता क्लाउडफ़्रंट यूआरएल, या एस 3 यूआरएल के माध्यम से सामग्री तक पहुंच सकते हैं, जो हमेशा वांछनीय नहीं होता है। उदाहरण के लिए, मेरे मामले में, क्लाउडफ़्रंट वितरण SSL सक्षम है, और उपयोगकर्ताओं को गैर-SSL कनेक्शन पर इसका उपयोग करने में सक्षम नहीं होना चाहिए।

मैंने जो समाधान पाया वह था:

  • स्थिर वेबसाइट होस्टिंग को एस 3 बाल्टी पर अक्षम रखें
  • क्लाउडफ़्रंट वितरण मूल को S3 आईडी के रूप में रखें
  • "हां" को बाल्टी एक्सेस प्रतिबंधित करें (और आसानी से, क्लाउडफ्रंट को स्वचालित रूप से बाल्टी नीति को अपडेट करने की अनुमति दें)
  • "त्रुटि पेज" पर, कस्टम प्रतिक्रिया पृष्ठ बनाएं, और 200 9 के प्रतिक्रिया कोड के साथ वांछित प्रतिक्रिया पृष्ठ i.e. /index.html पर मानचित्र त्रुटि कोड "403: निषिद्ध"

ध्यान दें कि मेरे मामले में, मैं एक पृष्ठ जावास्क्रिप्ट एप्लिकेशन की सेवा कर रहा हूं जहां सभी पथ index.html द्वारा हल किए जाते हैं। यदि आपके पास पथ हैं जो आपकी एस 3 बाल्टी में विभिन्न ऑब्जेक्ट्स को हल करते हैं, तो यह काम नहीं करेगा।


7
2017-11-18 14:01



आपके उत्तर के लिए धन्यवाद। यह मेरे लिए काम किया। मुझे आपके जैसा ही समस्या थी। मैं नहीं चाहता था कि लोग मेरी एस 3 बाल्टी एक्सेस करें, इसलिए मुझे एस 3 उत्पत्ति तक पहुंच प्रतिबंधित करने की आवश्यकता थी, जो केवल क्लाउडफ़्रंट में ऑटो-पूर्ण द्वारा सुझाए गए मूल को भरते समय काम करता है। एक पक्ष नोट हालांकि, आपको स्थैतिक वेबसाइट होस्टिंग को अक्षम करने की आवश्यकता नहीं है। बस बाल्टी नीति को हटा दें जो सार्वजनिक पहुंच पर्याप्त है। - Torsten
यह वास्तव में सहायक था, वर्जित संदेश S3 से आता है जिसे मैंने पहले महसूस नहीं किया था, इसलिए आपको इसे कस्टम त्रुटि पृष्ठ से पकड़ना है ताकि आपका एसपीए काम करे। - Ivan


मेरे मामले में मैं अपने एस 3 बाल्टी में एक मूल पथ के साथ "पथ पैटर्न" व्यवहार के साथ कई उत्पत्ति का उपयोग कर रहा था:

खराब सेटअप:

क्लाउडफ्रंट व्यवहार: /images/* -> My-S3-origin

मेरे-S3 मूल: उत्पत्ति पथ: /images

एस 3 फाइलें: /images/my-image.jpg

अनुरोध प्राप्त करें: /images/my-image.jpg -> 403

क्या हो रहा था पूरे क्लाउडफ्रंट जीईटी अनुरोध मूल को भेजा जाता है: /image/my-image.jpg उत्पत्ति पथ द्वारा prefixed: /images, तो एस 3 में अनुरोध की तरह दिखता है /images/images/my-image.jpg जो अस्तित्व में नहीं है।

उपाय

उत्पत्ति पथ हटा दें।

इसने मुझे मूल पहुंच पहचान और बाल्टी अनुमतियों और व्यक्तिगत फ़ाइल अनुमतियों के साथ बाल्टी तक पहुंचने की अनुमति दी।


2
2017-11-08 01:10





मेरे मामले में मैंने रूट 53 को गलत तरीके से कॉन्फ़िगर किया था। मैंने अपने डोमेन पर एक उपनाम बनाया था लेकिन क्लाउडफ्रंट वितरण के बजाय इसे S3 बाल्टी पर इंगित किया था।

इसके अलावा मैंने डिफ़ॉल्ट रूट ऑब्जेक्ट को छोड़ दिया। अगर वे इसे छोड़ने के संभावित परिणामों के बारे में प्रश्न चिह्न पाठ में थोड़ी सी जानकारी जोड़ते हैं तो कंसोल वास्तव में सुधार किया जा सकता है।


0
2017-10-14 14:29