无法从 /.aws/credentials 读取凭据

Cannot read credentials from /.aws/credentials

我正在尝试为 codeigniter

集成 AWS PHP SDK

但是显示错误如下

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 仍然存在。

请帮忙解决这个问题。

谢谢!

当 PHP 在服务下 运行 时,没有 "user"。因此 PHP 不会尝试访问 /root/.aws/credentials。如果您查看错误,路径为 /.aws/credentails.

要解决此问题,请创建一个新目录 /.aws 并将目录 /root/.aws 复制到 /.aws

改进:

您已经在您的网站根文件夹中安装了 PHP SDK,这使得这些文件可以从外部访问。 SDK 应安装在您的网站文件夹之外。

当 运行 在另一个 AWS 服务上编写代码时,您不会像在本地计算机上那样使用密钥和密码。看看我在另一个问题上给出的

基本上,您的 EC2 实例被分配了一个服务角色。然后,您可以将一个或多个 IAM 策略附加到该角色。 IAM 策略将确定您的 EC2 实例可以访问哪些 AWS 资源和操作。

在您的 PHP 代码中,您将使用 CredentialProvider::defaultProvider() 实例化您的客户端。例如,如果您使用的是 S3,它将看起来像这样。

$s3 = new S3Client([
    'region' =>'us-east-1',
    'credentials' => CredentialProvider::defaultProvider()
]);

如果您对 EC2 实例使用 IAM 角色,则无需使用以下内容

'profile'=>'default',

我只是删除上面解决错误的行 "Cannot read credentials from /.aws/credentials"

Issue using an IAM role with PHP SDK