我的 AWS 凭证有问题。我使用了在 ~/.aws/credentials 上创建的凭证文件,就像它在 AWS 文档中所写的一样。但是,apache 就是无法读取它。
首先,我收到了这个错误:
从实例配置文件元数据服务器检索凭据时出错。当您不在 Amazon EC2 内部运行时,您必须在创建客户端时在“key”和“secret”选项中提供您的 AWS 访问密钥 ID 和秘密访问密钥,或者提供实例化的 Aws\Common\Credentials CredentialsInterface 对象。
然后我尝试了一些我在互联网上找到的解决方案。例如,我试图检查我的 HOME 变量。它是/home/ubuntu。我还尝试将我的凭据文件移动到 /var/www 目录,即使它不是我的 Web 服务器目录。没有任何效果。我仍然遇到同样的错误。
作为第二种解决方案,我看到我们可以直接调用 CredentialsProvider 并指示客户端上的目录。
https://forums.aws.amazon.com/thread.jspa?messageID=583216
错误发生了变化,但我无法使其工作:
无法从 /.aws/credentials 读取凭据
我还看到我们可以使用 CredentialsProvider 的默认提供程序而不是指示路径。
我试过了,我一直收到同样的错误:
无法从 /.aws/credentials 读取凭据
以防万一您需要此信息,我正在使用 aws/aws-sdk-php (3.2.5)。我尝试使用的服务是 AWS Elastic Transcoder。我的 EC2 实例是 Ubuntu 14.04。它运行一个使用 Capifony 部署的 Symfony 应用程序。
在我在这个生产服务器上尝试之前,我在一个开发服务器上进行了尝试,它只能与 ~/.aws/credentials 文件完美配合。此开发服务器正是生产服务器的副本。但是,它不使用 Capifony 进行部署。它只是项目的普通 git 克隆。它只有一个 EBS 卷,而生产服务器有一个用于操作系统,一个用于应用程序。
啊! 而且我还检查了凭据文件的权限/所有者在两台服务器上是否相同并且它们是相同的。我尝试了 777 看看它是否可以改变一些东西,但什么也没有。
有人有想法吗?