в Амазонке AWS отказано в получении разрешения

Я пытаюсь подключиться к Amazon S3 с помощью файла учетных данных AWS, для чего я сделал следующие вещи

  1. Я создал credentials.ini файл в .aws\credentials, Имеет действительный AWSAccessKeyId а также AWSSecretKey

    [default]
    AWSAccessKeyId=somekey
    AWSSecretKey=somesecretkey
    
  2. Я делаю следующее, чтобы использовать ключ и список всех объектов

.

$s3 = new Aws\S3\S3Client([
'version' => 'latest',
'region'  => 'us-west-2'
]);


$result = $s3->listBuckets();
var_dump($result);

и я получаю ошибку

Warning: parse_ini_file(C:\Users\user\.aws\credentials): failed to open stream: Permission denied in C:\xampp\htdocs\aws\vendor\aws\aws-sdk-php\src\Credentials\CredentialProvider.php on line 216

Fatal error: Uncaught exception 'Aws\Exception\CredentialsException' with message 'Error retrieving credentials from the instance profile metadata server. (cURL error 28: Connection timed out after 1000 milliseconds (see http://curl.haxx.se/libcurl/c/libcurl-errors.html))' in C:\xampp\htdocs\aws\vendor\aws\aws-sdk-php\src\Credentials\InstanceProfileProvider.php:79 Stack trace: #0 C:\xampp\htdocs\aws\vendor\guzzlehttp\promises\src\Promise.php(199): Aws\Credentials\InstanceProfileProvider->Aws\Credentials\{closure}(Array) #1 C:\xampp\htdocs\aws\vendor\guzzlehttp\promises\src\Promise.php(152): GuzzleHttp\Promise\Promise::callHandler(2, Array, Array) #2 C:\xampp\htdocs\aws\vendor\guzzlehttp\promises\src\TaskQueue.php(60): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}() #3 C:\xampp\htdocs\aws\vendor\guzzlehttp\guzzle\src\Handler\CurlMultiHandler.php(96): GuzzleHttp\Promise\TaskQueue->run() #4 C:\xampp\htdocs\aws\vendor\guzzlehttp\guzzle\src\Handler\CurlMultiHandler.php(123): GuzzleHttp\Handler\CurlMultiHandler->tick in C:\xampp\htdocs\aws\vendor\aws\aws-sdk-php\src\Credentials\InstanceProfileProvider.php on line 79

4

Решение

Согласно Документация по AWS PHP, Формат файла учетных данных выглядит следующим образом:

[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY

В вашем случае, вот что, я считаю, происходит:

  1. Во-первых, библиотека PHP пытается получить учетные данные из среды, но их нет, так что …
  2. Затем он пытается получить их из файла INI, но вы неправильно написали ключи, так что …
  3. наконец, он пытается получить их с сервера метаданных EC2, но похоже, что вы не используете экземпляр EC2, поэтому сервер метаданных отсутствует, и эта попытка с использованием curl заканчивается.

Вы можете увидеть все это ясно в исходный код для библиотеки AWS PHP.

Конечный результат, который всплывает перед вами, заключается в том, что шаг № 3 провалился, но на самом деле шаги № 1, № 2 и № 3 не удалось. Поэтому я думаю, что исправить это так же просто, как исправить имена ключей в INI-файле.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector