Я сейчас перехожу с Amazon S3 в Google Storage, и я не могу заставить мои учетные данные работать. Вот пример кода, который я собрал для проверки моих учетных данных:
$client = new S3Client([ 'credentials' => [ 'key' => 'GOOGxxxxxxxxxxxxxxx', 'secret' => 'ZfcOTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', ], 'region' => 'US', 'version' => 'latest', 'endpoint' => 'https://storage.googleapis.com', ]); try { $result = $client->putObject(array( 'Bucket' => 'devtest', 'Key' => 'test', 'Body' => 'Hello world' )); echo $result['ObjectURL']; } catch (\Aws\S3\Exception\S3Exception $e) { // The AWS error code (eg, ) echo $e->getAwsErrorCode() . "\n"; // The bucket couldn't be created echo $e->getMessage() . "\n"; }
Вот что я верну:
Ошибка InvalidSecurity, выполняющая «PutObject» на странице « https://storage.googleapis.com/devtest/test »; Ошибка AWS HTTP: ответ об ошибке клиента [url] https://storage.googleapis.com/devtest/test [код состояния] 403 [причина фразы] Запрещено InvalidSecurity (клиент): предоставленные учетные данные безопасности недопустимы. – InvalidSecurity Предоставленные учетные данные безопасности недействительны. Неверный заголовок авторизации
Я попытался использовать 100 различных комбинаций этой проблемы и ничего не могу найти. У меня включена совместимость, по крайней мере, я думаю, что я делаю, так как не думаю, что могу получить ключ / секрет без его включения в первую очередь. И у меня включен API хранения Google.
Любая помощь будет принята с благодарностью.
Изменить: вот заголовок проверки подлинности в случае, если это помогает:
AWS4-HMAC-SHA256 Credential = GOOGGUxxxxxxxxxxx / 20150611 / US / s3 / aws4_request, SignedHeaders = host; x-amz-content-sha256; x-amz-date, Signature = 9c7de4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Я заметил, что он остается «aws4_request», даже когда я указываю «подпись» => «v2». Не уверен, если это имеет значение.
Я взглянул на код S3Client, и он не использует ключ конфигурации «подпись», насколько я могу судить. Единственное, что я нашел, это «signature_version», который при установке на v2 получает эту ошибку:
Не удалось разрешить подпись для v2 / s3 / US. Допустимые версии сигнатур включают v4 и анонимные.
Я использую Laravel 5.1 с пакетом композиторов aws / aws-sdk-php версии 3.0.3
Есть идеи?