配置适用于 Ruby 的 Amazon SDK - 适用于 Ruby 的 Amazon SDK
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

配置适用于 Ruby 的 Amazon SDK

了解如何配置适用于 Ruby 的 Amazon SDK。在使用 Amazon Web Services进行开发时,您必须确定您的代码是如何使用 Amazon 进行身份验证的。您还必须设置要使用的 Amazon Web Services 区域。

凭证提供程序链

所有 SDK 都有一系列地点(或源)供他们检查,以获取用于向 Amazon Web Service 发出请求的有效凭证。找到有效凭证后,搜索即告停止。这种系统性搜索被称为默认凭证提供程序链。

对于链中的每个步骤,都有不同的设置值的方法。直接在代码中设置值总是优先的,其次是设置为环境变量,然后是在共享 Amazon config 文件中设置。有关更多信息,请参阅《Amazon SDK 和工具参考指南》中的设置的优先顺序

《Amazon SDK 和工具参考指南》包含有关所有 Amazon SDK 和 Amazon CLI 使用的 SDK 配置设置的信息。要详细了解如何通过共享 Amazon config 文件配置 SDK,请参阅共享配置和凭证文件。要详细了解如何通过设置环境变量来配置 SDK,请参阅环境变量支持

要使用 Amazon 进行身份验证,适用于 Ruby 的 Amazon SDK 将按照下表所列顺序检查凭证提供程序。

按优先顺序排序的凭证提供程序 Amazon SDK 和工具参考指南 Amazon SDK for Ruby API 参考
静态凭证 Amazon 访问密钥

Aws::Credentials

Aws::SharedCredentials

来自 Amazon Security Token Service (Amazon STS) 的 Web 身份令牌 代入角色凭证提供程序

使用 role_arnrole_session_nameweb_identity_token_file

Aws::AssumeRoleWebIdentityCredentials
Amazon IAM Identity Center。在本指南中,请参阅使用 Amazon 进行 SDK 身份验证 IAM Identity Center 凭证提供程序 Aws::SSOCredentials
可信实体提供程序(如 AWS_ROLE_ARN) 在本指南中,请参阅创建 Amazon STS 访问令牌 代入角色凭证提供程序

使用 role_arnrole_session_name

Aws::AssumeRoleCredentials
流程凭证提供程序 流程凭证提供程序 Aws::ProcessCredentials
Amazon Elastic Container Service (Amazon ECS) 凭证 容器凭证提供程序 Aws::ECSCredentials
Amazon Elastic Compute Cloud (Amazon EC2) 实例配置文件凭证(IMDS 凭证提供程序) IMDS 凭证提供程序 Aws::InstanceProfileCredentials

如果设置了适用于 Ruby 的 Amazon SDK 环境变量 AWS_SDK_CONFIG_OPT_OUT,则不会解析共享 Amazon config 文件(通常位于 ~/.aws/config)的凭证。

如果您遵循推荐的新用户入门方法,则可以在入门主题的 使用 Amazon 进行 SDK 身份验证 中设置 Amazon IAM Identity Center 身份验证。其他身份验证方法适用于不同的情况。为避免安全风险,我们建议始终使用短期凭证。有关其他身份验证方法的过程,请参阅《Amazon SDK 和工具参考指南》中的身份验证和访问

创建 Amazon STS 访问令牌

假设一个角色可以通过使用一组临时安全凭证,让您能够用来访问原本在正常情况下无法访问的 Amazon 资源。这些临时凭证由访问密钥 ID、秘密访问密钥和安全令牌组成。您可以使用 Aws::AssumeRoleCredentials 方法创建 Amazon Security Token Service (Amazon STS) 访问令牌。

以下示例使用访问令牌来创建 Amazon S3 客户端对象,其中 linked::account::arn 是要代入的角色的 Amazon 资源名称 (ARN),session-name 是代入的角色会话的标识符。

role_credentials = Aws::AssumeRoleCredentials.new( client: Aws::STS::Client.new, role_arn: "linked::account::arn", role_session_name: "session-name" ) s3 = Aws::S3::Client.new(credentials: role_credentials)

有关设置 role_arnrole_session_name,或者有关改为使用共享 Amazon config 文件进行这类设置的更多信息,请参阅《Amazon SDK 和工具参考指南》中的代入角色凭证提供程序

设置区域

在使用大多数 Amazon Web Services时,您需要设置区域。适用于 Ruby 的 Amazon SDK 按以下顺序搜索区域:

有关 region 设置的更多信息,请参阅《Amazon SDK 和工具参考指南》中的 Amazon Web Services 区域。此部分的其余内容将从最常见的方法开始介绍如何设置区域。

使用共享 config 文件设置区域

通过在共享 Amazon config 文件中设置 region 变量来设置区域。有关共享 config 文件的更多信息,请参阅《Amazon SDK 和工具参考指南》中的共享 config 和 credentials 文件

config 文件中设置此值的示例:

[default] region = us-west-2

如果设置了环境变量 AWS_SDK_CONFIG_OPT_OUT,则不会检查共享 config 文件。

使用环境变量设置区域

通过设置 AWS_REGION 环境变量来设置区域。

使用 export 命令在基于 Unix 的系统(例如 Linux 或 macOS)上设置此变量。以下示例将区域设置为 us-west-2

export AWS_REGION=us-west-2

要在 Windows 上设置此变量,请使用 set 命令。以下示例将区域设置为 us-west-2

set AWS_REGION=us-west-2

使用 Aws.config 设置区域

通过将 region 值添加到 Aws.config 哈希中来设置区域。以下示例更新 Aws.config 哈希来使用 us-west-1 区域。

Aws.config.update({region: 'us-west-1'})

您随后创建的任何客户端或资源都将绑定到此区域。

在客户端或资源对象中设置区域

在创建 Amazon 客户端或资源时设置区域。以下示例在 us-west-1 区域中创建 Amazon S3 资源对象。为您的 Amazon 资源选择正确的区域。服务客户端对象是不可变的,因此您必须为向其发出请求的每个服务创建一个新的客户端,并使用不同的配置向同一服务发出请求。

s3 = Aws::S3::Resource.new(region: 'us-west-1')

设置非标准端点

区域用于构造供 Amazon 请求使用的 SSL 端点。如果您需要在所选区域使用非标准端点,请向 Aws.config 中添加一个 endpoint 条目。或者,在创建服务客户端或资源对象时设置 endpoint:。以下示例在 other_endpoint 端点中创建 Amazon S3 资源对象。

s3 = Aws::S3::Resource.new(endpoint: other_endpoint)

要使用您选择的端点来处理 API 请求并保持该选择不变,请参阅《Amazon SDK 和工具参考指南》中的特定于服务的端点配置选项。