使用 AWS 适用于 Ruby 的 SDK 凭证提供商 - AWS 适用于 Ruby 的 SDK

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

使用 AWS 适用于 Ruby 的 SDK 凭证提供商

对的所有请求都 AWS 必须使用颁发的凭证进行加密签名。 AWS运行时,SDK 会通过检查多个位置来检索凭证的配置值。

身份验证 AWS 可以在您的代码库之外处理。SDK 可通过凭证提供程序链自动检测、使用并刷新多种身份验证方式。

有关项目 AWS 身份验证入门的指导选项,请参阅工具参考指南中的身份验证AWS SDKs 和访问权限

凭证提供程序链

所有 SDKs 人都有一系列地点(或来源)供他们检查,以便获得用于向某人提出请求的有效凭证 AWS 服务。找到有效凭证后,搜索即告停止。这种系统性搜索被称为默认凭证提供程序链。

注意

如果您遵循推荐的方法让新用户开始使用,则在此期间使用控制台凭据登录进行身份验证AWS 使用 AWS 适用于 Ruby 的 SDK 进行身份验证。其他身份验证方法适用于不同的情况。为避免安全风险,我们建议始终使用短期凭证。有关其他身份验证方法的步骤,请参阅工具参考指南中的身份验证AWS SDKs 和访问

对于链中的每个步骤,都有不同的设置值的方法。直接在代码中设置值始终优先,然后设置为环境变量,然后在共享 AWS config文件中设置。

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

要进行身份验证 AWS, AWS SDK for Ruby 将按下表所列顺序检查凭证提供者。

凭证提供程序(按优先顺序排列) AWS SDKs 和工具参考指南 适用于 Ruby 的 AWS SDK API 引用
AWS 访问密钥(临时和长期证书) AWS 访问密钥

Aws::Credentials

Aws::SharedCredentials

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

使用 role_arnrole_session_nameweb_identity_token_file

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

使用 role_arnrole_session_name

Aws::AssumeRoleCredentials
登录凭证提供商 登录凭证提供商 Aws::LoginCredentials
流程凭证提供程序 流程凭证提供程序 Aws::ProcessCredentials
Amazon Elastic Container Service (Amazon ECS) 凭证 容器凭证提供程序 Aws::ECSCredentials
亚马逊弹性计算云 (Amazon EC2) 实例配置文件证书(IMDS 凭证提供商) IMDS 凭证提供程序 Aws::InstanceProfileCredentials

如果设置了 AWS SDK f AWS_SDK_CONFIG_OPT_OUT or Ruby 环境变量,则不会对共享 AWS config文件(通常位 ~/.aws/config于)进行凭据解析。

创建 AWS STS 访问令牌

假设角色涉及使用一组临时安全证书,您可以使用这些证书来访问通常可能无法访问的 AWS 资源。这些临时凭证由访问密钥 ID、秘密访问密钥和安全令牌组成。您可以使用Aws::AssumeRoleCredentials方法创建 AWS Security Token Service (AWS 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_arn或或或role_session_name改为使用共享 AWS config文件进行设置的更多信息,请参阅AWS SDKs 和工具参考指南中的代入角色凭据提供者