本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用AWS适用于 Rust 凭证提供商的 SDK
对的所有请求都AWS必须使用颁发的凭证进行加密签名。AWS运行时,SDK 会通过检查多个位置来获取凭证的配置值。
如果检索到的配置包含 AWS IAM Identity Center 单点登录访问设置,则 SDK 将与 IAM Identity Center 配合检索用于向 AWS 服务发出请求的临时凭证。
如果检索到的配置包含临时证书,SDK 将使用它们进行AWS 服务调用。临时凭证由访问密钥对和会话令牌组成。
身份验证AWS可以在您的代码库之外处理。SDK 可通过凭证提供程序链自动检测、使用并刷新多种身份验证方式。
有关项目AWS身份验证入门的指导性选项,请参阅《工具参考指南》和《工具参考指南》中的身份验证AWSSDKs 和访问权限。
凭证提供程序链
如果您在构建客户端时没有显式指定凭证提供程序,那么适用于 Rust 的 SDK 会使用凭证提供程序链来检查一系列可以提供凭证的位置。SDK 在其中一个位置找到凭证后,搜索就会停止。有关构建客户端的详细信息,请参阅在代码中配置适用于 Rust 的 AWS SDK 服务客户端。
以下示例未在代码中指定凭证提供程序。SDK 使用凭证提供程序链来检测在托管环境中设置的身份验证,并将该身份验证用于 AWS 服务调用。
let config = aws_config::defaults(BehaviorVersion::latest()).load().await; let s3 = aws_sdk_s3::Client::new(&config);
凭证检索顺序
凭证提供程序链使用以下预定义序列搜索凭证:
-
访问密钥环境变量
SDK 尝试从
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY以及AWS_SESSION_TOKEN环境变量加载凭证。 -
共享的AWS
config和credentials文件SDK 尝试从共享AWS
config和credentials文件中的[default]配置文件加载凭证。您可以使用AWS_PROFILE环境变量来选择您想让 SDK 加载的命名配置文件,而不是使用[default]。config和credentials文件由各种AWSSDKs 工具共享。有关这些文件的更多信息,请参阅config和工具参考指南中的共享AWSSDKs 和credentials文件。有关可在配置文件中指定的标准化提供商的更多信息,请参阅AWSSDKs 和工具标准化凭证提供商。 -
AWS STS网络身份
在创建需要访问的移动应用程序或基于客户端的 Web 应用程序时AWS,AWS Security Token Service(AWS STS) 会为通过公共身份提供商 (IdP) 进行身份验证的联合用户返回一组临时安全证书。
-
当您在配置文件中指定此项时,SDK 或工具会尝试使用 AWS STS
AssumeRoleWithWebIdentityAPI 方法检索临时证书。有关此方法的详细信息,请参阅 AWS Security Token ServiceAPI 参考AssumeRoleWithWebIdentity中的。 -
有关配置此提供程序的指导,请参阅《和工具参考指南》AWSSDKs 中的 “使用网络身份进行联合” 或 OpenID Connect。
-
有关此提供商的 SDK 配置属性的详细信息,请参阅《工具参考指南》AWSSDKs 和《工具参考指南》中的代入角色凭据提供程序。
-
-
Amazon ECS 和 Amazon EKS 容器凭证
您的 Amazon Elastic Container Service 任务和 Kubernetes 服务账户可以具有与其关联的 IAM 角色。在 IAM 角色中授予的权限由任务中运行的容器或容器组(Pod)内的容器承担。此角色允许适用于 Rust 的 SDK 应用程序代码(在容器上)使用其他 AWS 服务。
SDK 尝试从
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI或AWS_CONTAINER_CREDENTIALS_FULL_URI环境变量检索凭证,这些变量可以由 Amazon ECS 和 Amazon EKS 自动设置。-
有关为 Amazon ECS 设置此角色的详细信息,请参阅《Amazon Elastic Container Service 开发人员指南》中的 Amazon ECS 任务 IAM 角色。
-
有关 Amazon EKS 的设置信息,请参阅《Amazon EKS 用户指南》中的设置 Amazon EKS 容器组身份代理。
-
有关此提供商的 SDK 配置属性的详细信息,请参阅《工具参考指南》AWSSDKs 和《工具参考指南》中的容器凭证提供程序。
-
-
Amazon EC2 实例元数据服务
创建 IAM 角色并将其附加到您的实例。实例上适用于 Rust 的 SDK 应用程序会尝试从实例元数据中检索由角色提供的凭证。
-
适用于 Rust 的软件开发工具包仅支持IMDSv2。
-
有关设置此角色和使用元数据、Amazon 的 IAM 角色 EC2和使用实例元数据的详细信息,请参阅亚马逊 EC2 用户指南。
-
有关此提供商的 SDK 配置属性的详细信息,请参阅《工具参考指南》AWSSDKs 和《工具参考指南》中的 IMDS 凭证提供程序。
-
-
如果此时仍未解析凭证,则操作 panics 会出现错误。
有关AWS凭据提供程序配置设置的详细信息,请参阅《工具参考指南》的 “设置” 参考中的标准化凭据提供程序。AWS SDKs
显式凭证提供程序
您可以指定 SDK 应使用的特定凭证提供程序,而不是依赖凭证提供程序链来检测您的身份验证方法。使用 aws_config::defaults 加载常规配置时,您可以指定自定义凭证提供程序,如下所示:
let config = aws_config::defaults(BehaviorVersion::latest()) .credentials_provider(MyCredentialsProvider::new()) .load() .await;
您可以通过实现 ProvideCredentials
身份缓存
SDK 将缓存凭证和其他身份类型,例如 SSO 令牌。默认情况下,SDK 使用惰性缓存实现:在首次请求时加载凭证并缓存,当凭证即将过期时,会在下次请求时尝试刷新。从同一个 SdkConfig 创建的客户端共享一个 IdentityCache