在具有 PHP 的 AWS 服务中使用 IAM 服务角色作为凭证
Using an IAM service role for credentials in AWS services with PHP
我在使用某些 AWS 服务(如 S3、RDS 和 SES)的 elastic-beanstalk 上有一个 PHP 应用程序 运行。
我目前正在做他们不推荐的事情,即在我为任何这些服务初始化客户端时硬编码我的凭据。
代码如下所示:
$s3 = new S3Client([
'region' => 'us-west-2',
'version' => 'latest',
'credentials' => [
'key' => ‘**********’,
'secret' => ‘******************’,
],
]);
我正试图摆脱这一点,有大量关于如何继续的 AWS 文档,但我几乎找不到示例。
我正在考虑使用附加了所有正确策略的 IAM 服务角色。
步骤是:
- 在 elastic beanstalk 实例中,与该实例关联的服务角色是
aws-elastic-beanstalk-role
- 我为我使用的所有不同服务将所有必要的策略附加到该服务角色。这是从管理控制台完成的。
现在我如何像上面那样在客户端初始化中引用凭据?老实说,我找不到如何做的例子。我正在为 PHP 版本 3.0 使用 AWS SDK。
感谢您的指点。
只需从您的 s3 客户端参数中删除 credentials
字段。
详情
如果您没有明确提供凭据值,AWS SDK 将通过 default credential providers chain 尝试找到凭据。
它按以下顺序查找凭据:
- 环境变量
- 文件系统上的配置文件或配置文件
- 承担的角色(通过 EC2 实例配置文件、Lambda 角色等)
假设您没有配置任何环境变量或配置文件,SDK 将使用附加到您的 EC2 实例的角色来签署请求。
我在使用某些 AWS 服务(如 S3、RDS 和 SES)的 elastic-beanstalk 上有一个 PHP 应用程序 运行。 我目前正在做他们不推荐的事情,即在我为任何这些服务初始化客户端时硬编码我的凭据。 代码如下所示:
$s3 = new S3Client([
'region' => 'us-west-2',
'version' => 'latest',
'credentials' => [
'key' => ‘**********’,
'secret' => ‘******************’,
],
]);
我正试图摆脱这一点,有大量关于如何继续的 AWS 文档,但我几乎找不到示例。 我正在考虑使用附加了所有正确策略的 IAM 服务角色。 步骤是:
- 在 elastic beanstalk 实例中,与该实例关联的服务角色是
aws-elastic-beanstalk-role
- 我为我使用的所有不同服务将所有必要的策略附加到该服务角色。这是从管理控制台完成的。
现在我如何像上面那样在客户端初始化中引用凭据?老实说,我找不到如何做的例子。我正在为 PHP 版本 3.0 使用 AWS SDK。 感谢您的指点。
只需从您的 s3 客户端参数中删除 credentials
字段。
详情
如果您没有明确提供凭据值,AWS SDK 将通过 default credential providers chain 尝试找到凭据。
它按以下顺序查找凭据:
- 环境变量
- 文件系统上的配置文件或配置文件
- 承担的角色(通过 EC2 实例配置文件、Lambda 角色等)
假设您没有配置任何环境变量或配置文件,SDK 将使用附加到您的 EC2 实例的角色来签署请求。