在亚马逊aws中获得拒绝的权限
getting permission denied in amazon aws
我正在尝试使用 AWS 凭证文件连接到 amazon s3,为此我已完成以下操作
我在 .aws\credentials
创建了 credentials.ini
文件。它有有效的 AWSAccessKeyId
和 AWSSecretKey
[default]
AWSAccessKeyId=somekey
AWSSecretKey=somesecretkey
我正在执行以下操作以使用键并列出所有对象
.
$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
根据AWS PHP documentation,凭证文件格式如下:
[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY
在你的情况下,我认为这是正在发生的事情:
- 首先,PHP 库尝试从环境中获取凭据,但它们不存在,所以...
- 接下来,它会尝试从 INI 文件中获取它们,但是您拼错了键,所以...
- 最后,它尝试从 EC2 元数据服务器获取它们,但看起来您不在 EC2 实例上 运行,因此没有元数据服务器,并且使用 curl 的尝试超时。
您可以在 source code for the AWS PHP library.
中清楚地看到所有这些
浮现在您面前的最终结果是第 3 步失败了,但实际上第 1、#2 和 #3 步失败了。所以,我认为修复就像更正 INI 文件中的键名一样简单。
我正在尝试使用 AWS 凭证文件连接到 amazon s3,为此我已完成以下操作
我在
.aws\credentials
创建了credentials.ini
文件。它有有效的AWSAccessKeyId
和AWSSecretKey
[default] AWSAccessKeyId=somekey AWSSecretKey=somesecretkey
我正在执行以下操作以使用键并列出所有对象
.
$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
根据AWS PHP documentation,凭证文件格式如下:
[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY
在你的情况下,我认为这是正在发生的事情:
- 首先,PHP 库尝试从环境中获取凭据,但它们不存在,所以...
- 接下来,它会尝试从 INI 文件中获取它们,但是您拼错了键,所以...
- 最后,它尝试从 EC2 元数据服务器获取它们,但看起来您不在 EC2 实例上 运行,因此没有元数据服务器,并且使用 curl 的尝试超时。
您可以在 source code for the AWS PHP library.
中清楚地看到所有这些浮现在您面前的最终结果是第 3 步失败了,但实际上第 1、#2 和 #3 步失败了。所以,我认为修复就像更正 INI 文件中的键名一样简单。