मैं एसडब्ल्यू कंसोल में एक स्थिर वेबसाइट होने के लिए प्रोग्राम को एक बाल्टी में प्रोग्राम अपलोड करने के लिए PHP के लिए एडब्ल्यूएस एसडीके का उपयोग करने की कोशिश कर रहा हूं।अमेज़ॅन में एस 3 क्लाइंट के लिए उचित एंडपॉइंट सेट करें एडब्ल्यूएस PHP एसडीके
बाल्टी को foo.ourdomain.com नाम दिया गया है और इसे ई-वेस्ट में होस्ट किया गया है। मैं कोशिश करते हैं और परीक्षण करने के लिए अगर मैं एक फ़ाइल अपलोड कर सकते हैं निम्नलिखित कोड का उपयोग कर रहा:
:PHP Fatal error: Uncaught Aws\S3\Exception\PermanentRedirectException: AWS Error Code: PermanentRedirect, Status Code: 301, AWS Request ID: -, AWS Error Type: client, AWS Error Message: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint: "foo.ourdomain.com.s3.amazonaws.com"., User-Agent: aws-sdk-php2/2.4.8 Guzzle/3.7.4 curl/7.22.0 PHP/5.3.10-1ubuntu3.8
$client = \Aws\S3\S3Client::factory(array('key' => bla, 'secret' => bla));
$client->upload('foo.ourdomain.com', 'test.txt', 'hello world', 'public-read');
यह काफी है कि यह उदाहरण में है तथापि, मैं निम्न अपवाद प्राप्त
इस बिंदु पर मैं आश्चर्यचकित था क्योंकि एस 3 एसडीके के लिए मैनुअल में इसका कोई उल्लेख नहीं है। लेकिन ठीक है, मैं एक विधि setEndpoint पाया जाता है और करने के लिए कोड समायोजित:
$client = \Aws\S3\S3Client::factory(array('key' => bla, 'secret' => bla));
$client->setEndpoint('foo.ourdomain.com.s3.amazonaws.com');
$client->upload('foo.ourdomain.com', 'test.txt', 'hello world', 'public-read');
मैं मान लिया है कि काम है, लेकिन मैं ठीक उसी त्रुटि मिल रही है। मैंने दोबारा जांच की है और अपवाद में उल्लिखित एंडपॉइंट बाइट-फॉर-बाइट उस दूसरे से मेल खाता है जिसे मैं दूसरी पंक्ति में स्थापित कर रहा हूं।
मैंने foo.ourdomain.com.s3-website-eu-west-1.amazonaws.com का उपयोग एंडपॉइंट के रूप में करने का भी प्रयास किया है (यह होस्ट हमारे सीएनएन कंसोल निर्देशों के अनुसार इंगित करता है)। या तो काम नहीं किया।
मुझे कुछ याद आना चाहिए, लेकिन मुझे इसे कहीं भी नहीं मिल रहा है। शायद 'स्थैतिक वेबसाइट' पर सेट बाल्टी अलग-अलग तरीके से व्यवहार करती हैं जो वर्तमान में एसडीके द्वारा समर्थित नहीं है? यदि ऐसा है, तो मुझे दस्तावेज़ों में और प्रबंधन कंसोल में इसका उल्लेख नहीं मिल रहा है।
ठीक है, एसडीके वैश्विक क्षेत्र/एंडपॉइंट पर डिफ़ॉल्ट है। यदि आपने किसी विशिष्ट क्षेत्र में बाल्टी बनाई है, तो आपको उस क्षेत्र का उपयोग करने के लिए S3Client को भेजने की आवश्यकता है। –
अजीब हालांकि त्रुटि में टिप्पणी यह तय करने के लिए बिल्कुल विशिष्ट है कि यह कैसे ठीक करें, लेकिन यह भी गलत है :) – Nanne