AWS 区域 为 适用于 Rust 的 AWS SDK - 适用于 Rust 的 AWS SDK

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

AWS 区域 为 适用于 Rust 的 AWS SDK

您可以使用访问 AWS 服务 在特定地理区域运营的内容 AWS 区域。这既可以实现冗余,又可以让您的数据和应用程序在靠近您和您的用户访问它们的地方运行。有关如何使用区域的更多信息,请参阅AWS SDKs 和工具参考指南AWS 区域中的。

重要

大多数资源都位于特定的区域 AWS 区域 ,在使用 SDK 时,您必须为该资源提供正确的区域。

你必须为 Rust AWS 区域 的 SDK 设置默认值才能用于 AWS 请求。此默认值用于未在区域中指定的任何 SDK 服务方法调用。

有关如何通过共享 AWS config文件或环境变量设置默认区域的示例,请参阅AWS SDKs 和工具参考指南AWS 区域中的。

AWS 区域 提供者链

从执行环境加载服务客户端的配置时,将使用以下查找过程。SDK 找到的第一个值用于客户端的配置。有关创建服务客户端的更多信息,请参阅从环境中配置客户端

  1. 任何以编程方式设置的显式区域。

  2. 系统会检查 AWS_REGION 环境变量。

    • 如果您正在使用该 AWS Lambda 服务,则此环境变量由 AWS Lambda 容器自动设置。

  3. 已选中共享 AWS config文件中的region属性。

  4. 软件开发工具包尝试使用亚马逊 EC2 实例元数据服务来确定当前运行的亚马逊 EC2 实例的区域。

    • 适用于 Rust 的 AWS SDK 唯一的支持 IMDSv2。

RegionProviderChain创建用于服务客户端的基本配置时,会自动使用,无需其他代码:

let config = aws_config::defaults(BehaviorVersion::latest()) .load() .await;

设置输入 AWS 区域 代码

在代码中显式设置区域

如果要显式设置区域,请Region::new()直接在配置中使用。

未使用区域提供商链,它不检查环境、共享config文件或 Amazon EC2 实例元数据服务。

use aws_config::{defaults, BehaviorVersion}; use aws_sdk_s3::config::Region; #[tokio::main] async fn main() { let config = defaults(BehaviorVersion::latest()) .region(Region::new("us-west-2")) .load() .await; println!("Using Region: {}", config.region().unwrap()); }

请务必为输入有效的字符串 AWS 区域;所提供的值未经过验证。

自定义 RegionProviderChain

AWS 区域 提供者链当你想有条件地注入 Region、覆盖它或自定义分辨率链时,请使用。

use aws_config::{defaults, BehaviorVersion}; use aws_config::meta::region::RegionProviderChain; use aws_sdk_s3::config::Region; use std::env; #[tokio::main] async fn main() { let region_provider = RegionProviderChain::first_try(env::var("CUSTOM_REGION").ok().map(Region::new)) .or_default_provider() .or_else(Region::new("us-east-2")); let config = aws_config::defaults(BehaviorVersion::latest()) .region(region_provider) .load() .await; println!("Using Region: {}", config.region().unwrap()); }

之前的配置将:

  1. 首先看看CUSTOM_REGION环境变量中是否设置了字符串。

  2. 如果不可用,请回退到默认的区域提供商链。

  3. 如果失败了,请使用 “us-east-2” 作为最后的后备选项。