Я вже більше двох днів шукаю в Інтернеті і, мабуть, переглядаю більшість задокументованих в Інтернеті сценаріїв та обхідних шляхів, але дотепер у мене нічого не працювало.
Я працюю на AWS SDK для PHP V2.8.7, що працює на 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/… . Це довго, але, враховуючи те, що вони включають позначку часу, можливо, час у вашому місцевому середовищі закінчився?