AWS SDK for Rust に AWS リージョン を設定する
AWS リージョンを使用して、特定の地理的エリアで動作する AWS のサービスにアクセスできます。これは、冗長性を確保するためや、ユーザーがアクセスする場所の近くでのデータとアプリケーションの実行を維持するために有効です。リージョンの使用の詳細については、「AWS SDK とツールのリファレンスガイド」の「AWS リージョン」を参照してください。
重要
ほとんどのリソースは特定の AWS リージョン に属しており、SDK 使用時には正しいリージョンを指定する必要があります。
AWS リクエストに使用するために、SDK for Rust 向けのデフォルトの AWS リージョン を設定する必要があります。このデフォルトは、リージョンが指定されていないすべての SDK サービスメソッドの呼び出しに使用されます。
共有 AWS config ファイルまたは環境変数でデフォルトリージョンを設定する例については、「AWS SDK とツールのリファレンスガイド」の「AWS リージョン」を参照してください。
AWS リージョン プロバイダーチェーン
サービスクライアントの設定を実行環境から読み込む場合は、次の検索プロセスが使用されます。SDK が最初に設定されている値が検出されると、その値がクライアントの設定に使用されます。サービスクライアントの作成の詳細については、「環境からクライアントを設定する」を参照してください。
-
プログラムによって設定された明示的なリージョン。
-
AWS_REGION環境変数が確認されます。-
AWS Lambda サービスを使用している場合、この環境変数は AWS Lambda コンテナによって自動的に設定されます。
-
-
共有 AWS
configファイルのregionプロパティがチェックされます。-
AWS_CONFIG_FILE環境変数を使用すると、共有configファイルの場所を変更できます。このファイルの保存場所の詳細については、「AWS SDK とツールのリファレンスガイド」の「共有configとcredentialsファイルの場所」を参照してください。 -
AWS_PROFILE環境変数を使用すると、デフォルトの代わりに名前付きプロファイルを選択できます。名前付きプロファイルの設定の詳細については、「AWS SDK とツールのリファレンスガイド」の「共有configとcredentialsファイル」を参照してください。
-
-
SDK は、Amazon EC2 インスタンスメタデータサービスを使用して、現在実行中の Amazon EC2 インスタンスのリージョンを決定しようとします。
-
AWS SDK for Rust は 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 リージョン プロバイダーチェーン を使用します。
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()); }
前の設定では、以下のようになります。
-
まず、
CUSTOM_REGION環境変数に文字列が設定されているかどうかを確認します。 -
利用できない場合は、デフォルトのリージョンプロバイダーチェーンにフォールバックします。
-
失敗した場合は、最終的なフォールバックとして「us-east-2」を使用します。