AWS凭据不起作用 - 〜/ .aws/credentials

ana*_*-lu 14 credentials amazon-ec2 amazon-web-services amazon-elastic-transcoder

我的AWS凭据有问题.我使用了我在〜/ .aws/credentials上创建的凭证文件,就像它在AWS文档上编写一样.但是,apache无法读取它.

首先,我收到了这个错误:

从实例配置文件元数据服务器检索凭据时出错.如果您未在Amazon EC2内部运行,则在创建客户端或提供实例化的Aws\Common\Credentials CredentialsInterface对象时,必须在"密钥"和"机密"选项中提供AWS访问密钥ID和秘密访问密钥.

然后我尝试了一些我在互联网上找到的解决方案.例如,我试图检查我的HOME变量.这是/ home/ubuntu.我还尝试将我的凭证文件移动到/ var/www目录,即使它不是我的Web服务器目录.没有任何效果.我仍然得到同样的错误.

作为第二个解决方案,我看到我们可以直接调用CredentialsProvider并在客户端上指明目录.

https://forums.aws.amazon.com/thread.jspa?messageID=583216

错误已更改,但我无法正常工作:

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

我还看到我们可以使用CredentialsProvider的默认提供程序而不是指示路径.

http://docs.aws.amazon.com/aws-sdk-php/v3/guide/guide/credentials.html#using-credentials-from-environment-variables

我试过,我一直得到同样的错误:

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

万一你需要这些信息,我正在使用aws/aws-sdk-php(3.2.5).我正在尝试使用的服务是AWS Elastic Transcoder.我的EC2实例是一个Ubuntu 14.04.它运行使用Capifony部署的Symfony应用程序.

在我尝试这个生产服务器之前,我在一个开发服务器上尝试过,它只能与〜/ .aws/credentials文件一起工作.此开发服务器正是生产服务器的副本.但是,它不使用Capifony进行部署.它只是该项目的正常git克隆.它只有一个EBS卷,而生产服务器有一个用于操作系统,一个用于应用程序.

啊! 我还检查了两个服务器上凭据文件的权限/所有者是否相同,并且它们是相同的.我尝试了一个777,看它是否可以改变一些东西,但没有.

有人有想法吗?

chr*_*ris 8

听起来你做错了.您无需将凭据部署到EC2实例,以使该实例与其他AWS服务交互,并且实际上不应将凭据部署到EC2实例.

相反,在创建实例时,将IAM角色与其关联.该角色具有控制对其他AWS服务的访问的策略.

您可以创建一个空角色,启动实例,然后稍后修改该角色.实例启动后,您无法分配角色.

现在,您可以在分配实例后为其添加角色.

不将实际凭证部署到EC2实例仍被视为最佳做法.