我正在尝试将AWS PHP SDK集成到codeigniter
但其显示错误如下
An uncaught Exception was encountered
Type: Aws\Exception\CredentialsException
Message: Cannot read credentials from /.aws/credentials
Filename: /var/www/html/aws/Aws/Credentials/CredentialProvider.php
并且在cli上出现错误 -bash:/root/.aws/credentials:权限被拒绝
所以在此之后,我允许了权限... cli错误消失了,但是php错误无法从/.aws/credentials读取凭据。
请帮助解决此问题。
谢谢!
答案 0 :(得分:2)
在另一个AWS服务上运行代码时,您不会像在本地计算机上那样使用密钥和机密。看看我在另一个问题上提出的answer。
基本上,您的EC2实例被分配了一个服务角色。然后,您将一个或多个IAM策略附加到该角色。 IAM策略将确定您的EC2实例可以访问哪些AWS资源和操作。
在您的PHP代码中,您将使用CredentialProvider::defaultProvider()
实例化客户端。例如,如果您正在使用S3,它将看起来像这样。
$s3 = new S3Client([
'region' =>'us-east-1',
'credentials' => CredentialProvider::defaultProvider()
]);
答案 1 :(得分:1)
如果您将IAM角色用于EC2实例,则无需使用以下内容
'profile'=>'default',
我只是删除解决错误“无法从/.aws/credentials读取凭据”的行以上
答案 2 :(得分:0)
当PHP在服务下运行时,没有“用户”。因此,PHP将不会尝试访问/root/.aws/credentials。如果您查看错误,则路径为/.aws/credentails。
要解决此问题,请创建一个新目录/.aws
并将目录/root/.aws
复制到/.aws
改进:
您已将PHP SDK安装在网站根文件夹中,该文件可从外部访问。 SDK应该安装在网站文件夹之外。