在PHP中将IAM服务角色用于AWS服务中的凭证

时间:2019-06-12 01:38:11

标签: php amazon-web-services aws-sdk amazon-iam

我有一个运行在Elastic-Beanstalk上的PHP应用程序,该应用程序使用某些AWS服务,例如S3,RDS和SES。 我目前正在做他们不建议的操作,这是在初始化任何一种服务的客户端时对我的凭据进行硬编码。 代码如下:

$s3 = new S3Client([
    'region' => 'us-west-2',
    'version' => 'latest',
    'credentials' => [
        'key'    => ‘**********’,
       'secret' => ‘******************’,
    ],
]);

我正试图摆脱这一点,并且有大量关于如何进行的AWS文档,但几乎找不到我能找到的示例。 我正在考虑使用具有所有正确策略的IAM服务角色。 这些步骤是:

  1. 在弹性beantalk实例中,与该实例关联的服务角色为aws-elastic-beanstalk-role
  2. 我为我使用的所有不同服务在该服务角色上附加了所有必要的策略。这是通过管理控制台完成的。

现在我将如何在上述客户端初始化中引用凭据?老实说,我找不到如何做到这一点的例子。我正在使用适用于PHP版本3.0的AWS开发工具包。 感谢您的指导。

1 个答案:

答案 0 :(得分:1)

只需从您的s3客户端参数中删除credentials字段即可。

详细信息

如果您未明确提供凭证值,则AWS开发工具包将通过default credential providers chain尝试查找凭证。

它将按以下顺序查找凭据:

  1. 环境变量
  2. 文件系统上的配置文件或配置文件
  3. 假定角色(通过EC2实例配置文件,Lambda角色等)

假设您未配置任何环境变量或配置文件,则SDK将使用附加到EC2实例的角色来签署请求。