无法从 /.aws/凭证读取凭证 - PHP 脚本调用 AWS-开发工具包

我已经看过这里的每个答案,似乎我的问题有点不同,或者没有一个合适的解决方案。我正在我的PHP文件中执行以下操作:

use Aws\Route53\Route53Client;

$client = Route53Client::factory(array(
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2013-04-01'
));

收到此错误:

Fatal error: Uncaught Aws\Exception\CredentialsException: Cannot read credentials from /.aws/credentials

似乎简单的解决方法是确保HOME目录是正确的。事实上,事实已经如此。文件是可读的,我的 ec2 用户已经是所有者。密钥和机密已安装在“凭据”文件中。配置文件名称已设置为“默认”。尝试将 /.aws 复制到其他目录,如 root、/home 等,并更改了上述所有权限、chmod 等。还是一无所获。

然后我试图硬编码凭据(我知道 - 不推荐)只是为了给它一点刺激,它完全忽略了我这样做:

$client = Route53Client::factory(array(
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2013-04-01',
    'credentials' => [
            'key' => $key,
            'secret' => $secret,
    ]
));

作为最后的手段,我甚至尝试包括 CredentialProvider 类,并将其传递到我的数组中 - 仍然什么都没有:

'credentials' => CredentialProvider::ini('default', '/home/ec2-user/.aws/credentials'),

我到底做错了什么?


答案 1

只需删除,你应该工作正常'profile' => 'default'

$client = Route53Client::factory(array(
  'region' => 'us-east-1',
  'version' => 'latest',
  'credentials' => [
        'key' => $key,
        'secret' => $secret,
  ]
));

答案 2

在AWS Centos 7上运行,我尝试了所有内容(chmod/chown /root /home/user,env,bashrc等)来获取/.aws/凭证以在apache /var/www目录之外工作。SDK 报告无法读取凭据文件。

我查看了PHP,看看我是否可以设置/覆盖HOME变量,它仍然没有读取凭据文件,直到我将.aws文件夹放在'/var/www'文件夹中,并在我的php文件中设置HOME变量,如下所示:

 <%php
 putenv('HOME=/var/www');

 //ZIP File SDK Install requires aws-autoloader
 require 'aws-autoloader.php'; //Your php code below

推荐