Могу ли я использовать протокол s3 url с aws / aws -sdk- php? - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь использовать aws / aws -sdk- php для загрузки файла в предоставленную клиентом корзину s3.

URL является пользовательским и использует протокол s3 (s3: / /lengthy-url.example.com/path). Я не могу связаться с этим URL в любой известной мне форме, используя http или https.

Когда я пытаюсь загрузить файл с помощью sdk, я получаю эту ошибку: Error executing "PutObject" on "s3://lengthy-url.example.com/path/mundane-file.txt"; AWS HTTP error: cURL error 1: Protocol "s3" not supported or disabled in libcurl

Для полноты, это ошибка, которую я получаю, когда пытаюсь использовать https: Error executing "PutObject" on "https://lengthy-url.example.com/path/mundane-file.txt"; AWS HTTP error: cURL error 6: Could not resolve host: lengthy-url.example.com

Кроме того, я могу загрузить файл, используя aws -cli с следующий URL: aws s3 cp --acl=bucket-owner-full-control ./mundane-file.txt "s3://lengthy-url.example.com/path/mundane-file.txt"

Если это поможет, вот код, который я использую для выполнения вызовов sdk-

$s3 = new S3Client([
    'version' => '2006-03-01',
    'region'  => 'us-east-1',
    'credentials' => new Credentials($s3AccessId, $s3AccessSecret),
    'endpoint' => 's3://lengthy-url.example.com',
    's3BucketEndpoint' => true
]);

$s3->putObject([
    'Bucket' => 'path',
    'Key'    => 'mundane-file.txt',
    'Body'   => fopen('./mundane-file.txt', 'r'),
    'ACL'    => 'bucket-owner-full-control'
]);

Могу ли я использовать протокол s3 url с aws / aws -sdk- php? Если да, то как?

Спасибо!

Обновление:

Насколько я понимаю, функция registerStreamWrapper должна обеспечивать поддержку протокола s3 , но я получаю ту же ошибку CURl от PutObject.

Я пытался добавить новый вызов функции в приведенный выше код, но я также устал от следующего ...

В любом случае, это всегда та же ошибка: Error executing "PutObject" on "s3://lengthy-url.example.com/path/mundane-file.txt"; AWS HTTP error: cURL error 1: Protocol "s3" not supported or disabled in libcurl

$s3 = new S3Client([
    'version' => '2006-03-01',
    'region'  => 'us-east-1',
    'credentials' => new Credentials($s3AccessId, $s3AccessSecret),
    'endpoint' => 's3://lengthy-url.example.com',
    's3BucketEndpoint' => true
]);

$s3->registerStreamWrapper();

$myfile = fopen('https://lengthy-url.example.com/path/mundane-file.txt', 'w');
fwrite($myfile, PHP_EOL);
fclose($myfile);

Также:

Может быть полезно знать мою среду.

Это установленный вамп установка работает php 5.6.40 и apache 2.4.39.

Установленная версия aws / aws -sdk- php - 3.134.8.

Могу не интересно, если это проблема с моей настройкой cURL?

...