У меня проблема с подключением моего приложения laravel к S3-совместимому хранилищу. Он поддерживается IONOS ( Ссылка на документацию ). Поскольку мне нужен другой базовый URL, я установил пакет exula / laravel -storage-rados-s3 , который позволяет мне это настроить. У меня есть эта конфигурация в файловой системе. php (Где значения по умолчанию установлены в функции env, они используются):
'ionos_s3' => [
'driver' => 'ceph',
'base_url' => env('IONOS_URL'),
'port' => env('S3_PORT', 443),
'scheme' => env('S3_SCHEME', 'https'),
'tls_verify' => env('S3_TLS_VERIFY', true),
'timeout' => env('S3_TIMEOUT', 10),
'credentials' => [
'key' => env('IONOS_ACCESS_KEY_ID'),
'secret' => env('IONOS_SECRET_ACCESS_KEY'),
],
'region' => '',
'bucket' => env('IONOS_BUCKET'),
'signature_version' => 'v4',
'version' => 'latest',
// Set the S3 class to use objects.dreamhost.com/bucket
// instead of bucket.objects.dreamhost.com
'use_path_style_endpoint' => env('IONOS_PATH_STYLE_ENDPOINT', false),
'cache' => [
'store' => 'database',
'expire' => 18000, #Cache S3 files for 5 hours
'prefix' => 'cache-prefix',
],
Но я могу делать то, что хочу. Я всегда получаю следующее сообщение об ошибке:
Aws\S3\Exception\S3Exception
Error executing "PutObject" on "https://s3-de-central.profitbricks.com/BUCKET/32/";
AWS HTTP error: Client error: `PUT https://s3-de-central.profitbricks.com/BUCKET/32/`
resulted in a `400 Bad Request` response:
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>Invalid_Signature_V4_Authorization_Header</Code>
<Message>Null/Empty S (truncated...) Invalid_Signature_V4_Authorization_Header (client): Null/Empty SigningKey/IsoDate/Signature -
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>Invalid_Signature_V4_Authorization_Header</Code>
<Message>Null/Empty SigningKey/IsoDate/Signature</Message>
<RequestId>e7bd3a56-7882-1fc1-b68e-0cc47af2c498</RequestId>
<HostId>FVqRz72LCRTiUvVKH-VpiEXa5EX3643IbdE6Tyu0-FE</HostId>
</Error>
К сожалению, я не могу найти ни одного подсказки в Интернете, с чем может быть связана ошибка Invalid_Signature_V4_Authorization_Header . С помощью данных доступа я могу успешно получить доступ к корзине через браузер S3. Я также удивлен, что, хотя для use_path_style_endpoint задано значение false, запрос по-прежнему направляется против objects.dreamhost.com/bucket вместо bucket.objects.dreamhost.com.