[ruby-on-rails] एडब्ल्यूएस एस 3: जिस बाल्टी को आप एक्सेस करने का प्रयास कर रहे हैं उसे निर्दिष्ट एंडपॉइंट का उपयोग करके संबोधित किया जाना चाहिए



Answers

कंसोल में अपना बाल्टी स्थान देखें, फिर इसका उपयोग करने के लिए किस एंडपॉइंट का संदर्भ लें: http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region

Question

मैं एडब्ल्यूएस-एसडीके-कोर रूबी जेम के साथ अपलोड की गई छवि फ़ाइलों को हटाने की कोशिश कर रहा हूं।

मेरे पास निम्न कोड है:

require 'aws-sdk-core'

def pull_picture(picture)
    Aws.config = {
        :access_key_id => ENV["AWS_ACCESS_KEY_ID"],
        :secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"],
        :region => 'us-west-2'
    }

    s3 = Aws::S3::Client.new

    test = s3.get_object(
        :bucket => ENV["AWS_S3_BUCKET"],
        :key => picture.image_url.split('/')[-2],   
    )
end

हालांकि, मुझे निम्न त्रुटि मिल रही है:

जिस बाल्टी को आप एक्सेस करने का प्रयास कर रहे हैं उसे निर्दिष्ट एंडपॉइंट का उपयोग करके संबोधित किया जाना चाहिए। कृपया इस अंतिम बिंदु पर सभी भावी अनुरोध भेजें।

मुझे पता है कि क्षेत्र सही है क्योंकि अगर मैं इसे us-east-1 बदलता हूं, तो निम्न त्रुटि दिखाई देती है:

निर्दिष्ट कुंजी मौजूद नहीं है।

मुझसे यहां क्या गलत हो रहा है?




कई एस 3 एपीआई पैकेजों के लिए (मुझे हाल ही में यह समस्या एनपीएम एस 3 पैकेज थी ) आप उन मुद्दों में भाग ले सकते हैं जहां क्षेत्र को यूएस मानक माना जाता है, और नाम से लुकअप के लिए आपको क्षेत्र को स्पष्ट रूप से परिभाषित करने की आवश्यकता होगी यदि आप बाल्टी होस्ट करना चुनते हैं उस क्षेत्र के बाहर।




S3Client के निर्माण के दौरान आप किसी विशेष क्षेत्र में एंडपॉइंट मैपिंग निर्दिष्ट कर सकते हैं। यदि s3.amazonaws.com डिफ़ॉल्ट है तो बाल्टी को us-east-1 में बनाया जाएगा जो उत्तरी वर्जीनिया है।

एडब्ल्यूएस दस्तावेज़ों में एस 3 एंडपॉइंट्स और क्षेत्रों पर अधिक जानकारी: http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region

इसलिए, S3Client बनाते समय एंडपॉइंट / क्षेत्र के बारे में हमेशा सुनिश्चित करें और उसी क्षेत्र में उसी क्लाइंट का उपयोग करके S3 resouces का उपयोग करें।

यदि बाल्टी एडब्ल्यूएस एस 3 कंसोल से बनाई गई है, तो उस बाल्टी के लिए कंसोल से क्षेत्र को चेक करें, फिर उपरोक्त लिंक में उल्लिखित एंडपॉइंट विवरण का उपयोग करके उस क्षेत्र में एक एस 3 क्लाइंट बनाएं।




Related