मैंने अब दो दिनों के लिए वेब पर खोज की है, और संभवत: अधिकांश ऑनलाइन दस्तावेज़ परिदृश्यों और वर्कअराउंड के माध्यम से देखा है, लेकिन अभी तक मेरे लिए कुछ भी काम नहीं किया है।
मैं PHP V2.8.7 के लिए AWS SDK पर हूँ, जो PHP 5.3 पर चल रहा है।
मैं निम्नलिखित कोड के साथ अपने S3 बाल्टी से कनेक्ट करने का प्रयास कर रहा हूं:
// Create a `Aws` object using a configuration file
$aws = Aws::factory('config.php');
// Get the client from the service locator by namespace
$s3Client = $aws->get('s3');
$bucket = "xxx";
$keyname = "xxx";
try {
$result = $s3Client->putObject(array(
'Bucket' => $bucket,
'Key' => $keyname,
'Body' => 'Hello World!'
));
$file_error = false;
} catch (Exception $e) {
$file_error = true;
echo $e->getMessage();
die();
}
//
मेरी config.php फ़ाइल इस प्रकार है:
<?php
return array(
// Bootstrap the configuration file with AWS specific features
'includes' => array('_aws'),
'services' => array(
// All AWS clients extend from 'default_settings'. Here we are
// overriding 'default_settings' with our default credentials and
// providing a default region setting.
'default_settings' => array(
'params' => array(
'credentials' => array(
'key' => 'key',
'secret' => 'secret'
)
)
)
)
);
यह निम्नलिखित त्रुटि उत्पन्न कर रहा है:
हमारे द्वारा की गई अनुरोध हस्ताक्षर आपके द्वारा प्रदत्त हस्ताक्षर से मेल नहीं खाती है। अपनी कुंजी और हस्ताक्षर विधि की जाँच करें।
मैंने पहले से ही अपनी पहुंच कुंजी और गुप्त को कम से कम 20 बार जांचा है, नए लोगों को उत्पन्न किया, जानकारी में पास करने के लिए विभिन्न तरीकों का इस्तेमाल किया (यानी प्रोफ़ाइल और कोड में क्रेडेंशियल्स सहित), लेकिन फिलहाल कुछ भी काम नहीं कर रहा है।
secret
ऊपर) लेता है , और इसका उपयोग आपकी पहुंच कुंजी, वर्तमान टाइमस्टैम्प, और अन्य कारकों के एक समूह के आधार पर एक हस्ताक्षर की गणना करने के लिए करता है। Docs.aws.amazon.com/general/latest/gr/… देखें । यह एक लंबी बात है, लेकिन यह देखते हुए कि वे टाइमस्टैम्प को शामिल करते हैं, शायद आपके स्थानीय पर्यावरण का समय बंद है?