适用于 PHP 的 AWS 开发工具包
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 AWS 凭证文件和凭证配置文件

凭证文件是一个纯文本文件,其中包含您的访问密钥。该文件必须:

  • 在服务器所在的计算机上,则您正在运行您的应用程序。

  • Be named credentials

  • 请位于您的主目录中的 .aws/ 文件夹。

该主目录可以因操作系统。在 Windows 上,您可以使用环境变量引用到您的主目录 %UserProfile%。在类 Unix 的系统,您可以使用环境变量 $HOME~ (tilde)。

如果您已使用此文件用于其他开发工具包和工具(如 AWS CLI),您不需要进行任何更改,请使用该开发工具包中的文件。如果您对不同的工具或应用程序使用不同的凭证,则可以使用配置文件在相同的配置文件中配置多个访问密钥。

我们使用此方法在所有我们的 PHP 代码示例。

使用 AWS 凭证文件可提供以下优势:

  • 您的项目凭证存储在项目之外的位置,因此不会意外将其提交到版本控制中。

  • 您可以在一个位置定义和命名多组凭证。

  • 您可以轻松地在项目之间重用相同的凭证。

  • 其他 AWS 开发工具包和工具支持这个相同的凭证文件。这样,您便可以对其他工具重用您的凭证。

AWS 凭证文件的格式应类似如下。

[default] aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY [project1] aws_access_key_id = ANOTHER_AWS_ACCESS_KEY_ID aws_secret_access_key = ANOTHER_AWS_SECRET_ACCESS_KEY

每个部分 (例如 [default][project1]) 表示不同的凭证配置文件。您可以从开发工具包配置文件引用配置文件,也可以在实例化客户端时使用 profile 选项。

use Aws\DynamoDb\DynamoDbClient; // Instantiate a client with the credentials from the project1 profile $client = new DynamoDbClient([ 'profile' => 'project1', 'region' => 'us-west-2', 'version' => 'latest' ]);

如果没有向开发工具包明确提供凭证或配置文件,也没在环境变量中定义凭证,但定义了凭证文件,开发工具包将使用“默认”配置文件。您可以通过在 AWS_PROFILE 环境变量中指定替代配置文件名称来更改默认配置文件。

代入角色与配置文件

通过在 ~/.aws/credentials 中为 IAM 角色定义配置文件,您可以配置适用于 PHP 的 AWS 开发工具包来使用该角色。

使用您将代入的角色的 role_arn 创建一个新的配置文件。还需要包含配置文件的 source_profile,以及有权代入 IAM 角色的凭证。

~/.aws/credentials 中的配置文件:

[default] aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY [project1] role_arn = arn:aws:iam::123456789012:role/testing source_profile = default role_session_name = OPTIONAL_SESSION_NAME

通过在实例化客户端时设置 AWS_PROFILE 环境变量或 profile 选项,则将代入 project1 中指定的角色,并使用 default 配置文件作为源凭证。

也可以为在 ~/.aws/config 中定义的配置文件代入角色。设置环境变量 AWS_SDK_LOAD_NONDEFAULT_CONFIG 将允许加载配置文件来代入 ~/.aws/config 中的角色。启用时,将加载来自 ~/.aws/config~/.aws/credentials 的配置文件。来自 ~/.aws/credentials 的配置文件最后加载,它们将优先于 ~/.aws/config 中同名的配置问。来自任一位置的配置文件都可用作 source_profile 或要代入的配置文件。

~/.aws/config 中的配置文件:

[profile project1] role_arn = arn:aws:iam::123456789012:role/testing source_profile = default role_session_name = OPTIONAL_SESSION_NAME

~/.aws/credentials 中的配置文件:

[project2] aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY

使用上述文件,将使用 [project2] 作为源凭证代入 [project1]

本页内容: