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

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

配置AmazonSDK for Ruby

了解如何配置AmazonSDK for Ruby。要使用 SDK,必须设置Amazon凭据或创建AmazonSTS 访问令牌,然后设置Amazon要使用的区域。

获取您的 Amazon 访问密钥

访问密钥包含访问密钥 ID秘密访问密钥,用于签署对Amazon发出的编程请求。如果没有访问密钥,您可以使用管理控制台. 我们建议您使用 IAM 访问密钥而不是 Amazon 根账户访问密钥。IAM 让您可以安全地控制对您Amazon账户中的Amazon服务和资源的访问。

注意

要创建访问密钥,您必须拥有执行所需 IAM 操作的权限。有关更多信息,请参阅 。授予 IAM 用户管理密码策略和凭证的权限(在 IAM 用户指南中)。

要获取访问密钥 ID 和秘密访问密钥

  1. 打开 IAM 控制台

  2. 在导航菜单上,选择用户

  3. 选择您的 IAM 用户名称 (而不是复选框)。

  4. 打开安全凭证选项卡,然后选择创建访问密钥

  5. 要查看新的访问密钥,请选择显示。您的凭证与下面类似:

    • 访问密钥 ID:AKIAIOSFODNN7EXAMPLE

    • 秘密访问密钥:wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

  6. 要下载密钥对,请选择 Download .csv file(下载 .csv 文件)。将这些密钥

存储在安全的位置。

重要

请对密钥保密以保护您的 Amazon 账户,切勿通过电子邮件发送密钥。请勿对企业外部共享密钥,即使有来自 Amazon 或 Amazon.com 的询问。合法代表 Amazon 的任何人永远都不会要求您提供秘密密钥。

相关主题

设置 Amazon 凭证

在您可以使用之前AmazonSDK for Ruby 来打电话给Amazon服务,您必须将Amazon开发工具包将用于验证访问权限的访问权限的访问凭证Amazon服务和资源。

这些区域有:AmazonSDK for Ruby 按以下顺序搜索凭证:

您可以在代码中覆盖这些设置。优先顺序为:

以下各节介绍设置凭证的各种方法,从最灵活的方法开始。有关 的更多信息Amazon请参阅凭证和推荐的凭证管理方法,请参阅Amazon安全凭证中的Amazon一般参考。

请注意,共享配置只加载一次,并且在创建客户端时静态提供凭证。共享凭证不会刷新。

设置共享凭证

在中设置共享凭据Amazon本地系统上的凭证配置文件。

在基于 Unix 的系统 (例如 Linux 或 OS X) 上,此文件位于以下位置。

~/.aws/credentials

在 Windows 上,此文件位于以下位置。

%HOMEPATH%\.aws\credentials

此文件必须具有以下格式,其中 default 是提供给这些凭证的默认配置文件的名称,your_access_key_id 是您的访问密钥的值,your_secret_access_key 是您的秘密访问密钥的值。

[default] aws_access_key_id = your_access_key_id aws_secret_access_key = your_secret_access_key

使用环境变量设置凭证

设置 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 环境变量。

使用 export 命令在基于 Unix 的系统 (例如 Linux 或 OS X) 上设置这些变量。以下示例将您的访问密钥的值设置为 your_access_key_id,并将您的秘密访问密钥的值设置为 your_secret_access_key

export AWS_ACCESS_KEY_ID=your_access_key_id export AWS_SECRET_ACCESS_KEY=your_secret_access_key

要在 Windows 上设置这些变量,请使用 set 命令,如以下示例所示。

set AWS_ACCESS_KEY_ID=your_access_key_id set AWS_SECRET_ACCESS_KEY=your_secret_access_key

使用设置凭证Aws.config

在您的代码中通过更新 Aws.config 哈希中的值来设置凭证。

以下示例将您的访问密钥的值设置为 your_access_key_id,并将您的秘密访问密钥的值设置为 your_secret_access_key。您随后创建的任何客户端或资源都将使用这些凭证。

Aws.config.update({ credentials: Aws::Credentials.new('your_access_key_id', 'your_secret_access_key') })

更改您的凭证位置

您还可以使用Aws.config将您的凭证存储在非标准位置。

以下示例会更新您的配置,将您的凭证存储在 my-path 下。

shared_creds = Aws::SharedCredentials.new(path: 'my_path') Aws.config.update(credentials: shared_creds)

在客户端对象中设置凭证

在代码中设置凭证,方法是在您的代码中创建凭证Amazon客户端。

以下示例使用访问密钥创建 Amazon S3 客户端:your_access_key_id和秘密访问密钥your_secret_access_key.

s3 = Aws::S3::Client.new( access_key_id: 'your_access_key_id', secret_access_key: 'your_secret_access_key' )

使用 IAM 设置凭证

对于 Amazon Elastic Compute Cloud 实例,请创建一个Amazon Identity and Access Management角色,然后向 Amazon EC2 实例授予对该角色的访问权。有关更多信息,请参阅 。适用于 Amazon EC2 的 IAM 角色在适用于 Linux 实例的 Amazon EC2 用户指南中或适用于 Amazon EC2 的 IAM 角色在适用于 Windows 实例的 Amazon EC2 用户指南中。

创建 Amazon STS 访问令牌

使用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)

设置区域

你需要设置领域使用大多数时Amazon服务。您可以将Amazon设置区域的方式类似Amazon凭证。这些区域有:AmazonSDK for Ruby 按以下顺序搜索区域:

此节的其余部分介绍如何设置区域,从最灵活的方法开始。

使用环境变量设置区域

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

使用 export 命令在基于 Unix 的系统 (例如 Linux 或 OS X) 上设置此变量。以下示例将区域设置为 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客户端或资源。以下示例在中创建 Amazon S3 资源对象:us-west-1区域。

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

设置非标准终端节点

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

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