本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 AWS 凭证文件和凭证配置文件
凭证文件是一个纯文本文件,其中包含您的访问密钥。该文件必须:
位于运行应用程序的同一台计算机上。
命名为 credentials。
请位于您的主目录中的 .aws/ 文件夹。
该主目录可以因操作系统。在 Windows 上,您可以使用环境变量引用您的主目录 %UserProfile%。 在类 Unix 的系统上,您可以使用环境变量 $HOME 或 ~ (tilde)。
如果您已将此文件用于其他 SDKs 和工具(如 AWS CLI),则不需要进行任何更改,即可使用此开发工具包中的文件。如果您对不同的工具或应用程序使用不同的凭证,则可以使用配置文件在相同的配置文件中配置多个访问密钥。
我们使用此方法在所有我们的 PHP 代码示例。
使用 AWS 凭证文件可提供以下优势:
您的项目凭证存储在项目之外的位置,因此不会意外将其提交到版本控制中。
您可以在一个位置定义和命名多组凭证。
您可以轻松地在项目之间重用相同的凭证。
其他 AWS SDKs 和工具支持此相同的凭证文件。这样,您便可以对其他工具重用您的凭证。
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]。