在带有PHP的AWS服务中使用IAM服务角色作为凭据

在带有PHP的AWS服务中使用IAM服务角色作为凭据,php,amazon-web-services,aws-sdk,amazon-iam,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' => ‘**********

我有一个运行在elastic beanstalk上的PHP应用程序,它使用一些AWS服务,如S3、RDS和SES。 我目前正在做他们不推荐的事情,那就是在我为这些服务初始化客户端时硬编码我的凭据。 代码如下所示:

$s3 = new S3Client([
    'region' => 'us-west-2',
    'version' => 'latest',
    'credentials' => [
        'key'    => ‘**********’,
       'secret' => ‘******************’,
    ],
]);
我正试图摆脱这一点,有大量AWS文档介绍如何继续,但我几乎找不到任何例子。 我正在考虑使用附加了所有正确策略的IAM服务角色。 这些步骤是:

  • 在elastic beanstalk实例中,与该实例关联的服务角色是
    aws elastic beanstalk角色
  • 对于我使用的所有不同服务,我将所有必要的策略附加到该服务角色。这是从管理控制台完成的 现在,我将如何在客户端初始化中引用上述凭据?老实说,我找不到一个如何做到这一点的例子。我正在使用适用于PHP 3.0版的AWS SDK。
    谢谢你的指点

    只需从s3客户端参数中删除
    凭证
    字段即可

    细节 如果未显式提供凭据值,AWS SDK将通过尝试查找凭据

    它按以下顺序查找凭据:

  • 环境变量
  • 文件系统上的配置文件或配置文件
  • 假定角色(通过EC2实例配置文件、Lambda角色等)

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

    谢谢,就这么简单。如果没有凭证,它可以正常工作。现在,在从本地部署进行测试时,这对我没有帮助。在这种情况下,我应该使用硬编码凭据吗?运行“aws configure”命令,这将在您的本地开发人员计算机上设置一个配置文件,SDK可以找到并使用该文件。谢谢,您在这里节省了时间。我已将一个角色关联到EC2实例,并且我正在使用您提到的aws PHP SDK。但是我得到一个错误
    include(AWS_SDK_User_Role.php):无法打开流:没有这样的文件或目录
    ,其中
    AWS_SDK_User_Role
    是附加到EC2的IAM角色的名称instance@Sahil我也有同样的问题。你能解决吗?