

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS SDK for Rust 認証情報プロバイダーの使用
<a name="credproviders"></a>

 へのすべてのリクエストは、 によって発行された認証情報を使用して暗号化して署名 AWS する必要があります AWS。実行時、SDK は複数の場所を確認して認証情報の設定値を取得します。

取得した設定に[AWS IAM アイデンティティセンター シングルサインオンアクセス設定](credentials.md)が含まれている場合、SDK は IAM Identity Center と連携して、 AWS のサービスへのリクエストに使用する一時的な認証情報を取得します。

取得した設定に[一時的な認証情報](https://docs.aws.amazon.com/sdkref/latest/guide/access-temp-idc.html)が含まれている場合、SDK はそれらを使用して AWS のサービス 呼び出しを行います。一次的な認証情報は、アクセスキーおよびセッショントークンで構成されています。

を使用した認証は AWS 、コードベース外で処理できます。多くの認証方法は、認証情報プロバイダーチェーンを使用して、SDK によって自動的に検出、使用、更新されます。

プロジェクトの AWS 認証を開始するためのガイド付きオプションについては、 SDK およびツールリファレンスガイドの[「認証とアクセス](https://docs.aws.amazon.com/sdkref/latest/guide/access.html)」を参照してください。 *AWS SDKs *

## 認証情報プロバイダーチェーン
<a name="credproviders-default-credentials-provider-chain"></a>

クライアントのコンストラクト時に認証情報プロバイダーを明示的に指定しない場合、SDK for Rust は認証情報プロバイダーチェーンを使用して、認証情報を提供できる一連の場所を確認します。SDK がこれらの場所のいずれかで認証情報を見つけると、検索は停止します。クライアントの構築の詳細については、「[コードでの AWS SDK for Rust サービスクライアントの設定](config-code.md)」を参照してください。

次の例では、コードに認証情報プロバイダーを指定していません。SDK は、認証情報プロバイダーチェーンを使用して、ホスティング環境で設定された認証を検出し、その認証を AWS のサービスへの呼び出しに使用します。

```
let config = aws_config::defaults(BehaviorVersion::latest()).load().await;
let s3 = aws_sdk_s3::Client::new(&config);
```

### 認証情報の取得順序
<a name="credproviders-credential-retrieval-order"></a>

認証情報プロバイダーチェーンは、以下の事前定義されたシーケンスで認証情報を検索します。

1. **アクセスキー環境変数**

   SDK は `AWS_ACCESS_KEY_ID`、`AWS_SECRET_ACCESS_KEY`、および `AWS_SESSION_TOKEN` 環境変数から認証情報をロードしようとします。

1. **共有 AWS `config` ファイルと `credentials` ファイル**

   SDK は、共有 AWS `config` および `credentials` ファイル内の`[default]`プロファイルから認証情報をロードしようとします。`AWS_PROFILE` 環境変数を使用することで、SDK がロードする名前付きプロファイルを選択できます。これにより、`[default]` の代わりに任意のプロファイルを使用できます。`config` および `credentials`ファイルは、さまざまな AWS SDKsとツールによって共有されます。これらのファイルの詳細については、「*AWS SDK とツールのリファレンスガイド*」の「[共有 `config` および `credentials` ファイル](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html)」を参照してください。プロファイルで指定できる標準化されたプロバイダーの詳細については、[AWS SDKs](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html)」を参照してください。

1. **AWS STS ウェブ ID**

   アクセスを必要とするモバイルアプリケーションまたはクライアントベースのウェブアプリケーションを作成すると AWS、 AWS Security Token Service (AWS STS) は、パブリック ID プロバイダー (IdP) を介して認証されたフェデレーティッドユーザーの一時的なセキュリティ認証情報のセットを返します。
   + プロファイルでこれを指定すると、SDK またはツールは API メソッドを使用して AWS STS `AssumeRoleWithWebIdentity`一時的な認証情報の取得を試みます。この方法の詳細については、「*AWS Security Token Service API リファレンス*」の「[AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)」を参照してください。
   +  このプロバイダーの設定に関するガイダンスについては、「*AWS SDK とツールのリファレンスガイド*」の「[ウェブアイデンティティまたは OpenID Connect とのフェデレーション](https://docs.aws.amazon.com/sdkref/latest/guide/access-assume-role.html#webidentity)」を参照してください。
   +  このプロバイダーの SDK 設定プロパティの詳細については、「*AWS SDK とツールのリファレンスガイド*」の「[ロール認証情報プロバイダーを引き受ける](https://docs.aws.amazon.com/sdkref/latest/guide/feature-assume-role-credentials.html)」を参照してください。

1. **Amazon ECS および Amazon EKS コンテナ認証情報**

   Amazon Elastic Container Service のタスクと Kubernetes サービスアカウントには IAM ロールを関連付けることができます。IAM ロールで付与されたアクセス許可は、タスクで実行されているコンテナまたはポッドのコンテナによって引き受けられます。このロールにより、(コンテナ上の) SDK for Rust アプリケーションコードが他の AWS のサービスを使用できるようになります。

   SDK は、Amazon ECS と Amazon EKS によって自動的に設定される `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` または `AWS_CONTAINER_CREDENTIALS_FULL_URI` の環境変数から認証情報を取得しようとします。
   + Amazon ECS 用にこのロールを設定する方法の詳細については、「*Amazon Elastic Container Service デベロッパーガイド*」の「[Amazon ECS タスクの IAM ロール](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)」を参照してください。
   + Amazon EKS の設定情報については、「**Amazon EKS ユーザーガイド**」の「[Amazon EKS Pod Identity Agent の設定](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-agent-setup.html)」を参照してください。
   +  このプロバイダーの SDK 設定プロパティの詳細については、「*AWS SDK とツールのリファレンスガイド*」の「[コンテナ認証情報プロバイダー](https://docs.aws.amazon.com/sdkref/latest/guide/feature-container-credentials.html)」を参照してください。

1. **Amazon EC2 インスタンスメタデータサービス**

   IAM ロールを作成し、インスタンスにアタッチします。インスタンス上の SDK for Rust アプリケーションは、ロールによって提供された認証情報をインスタンスメタデータから取得しようとします。
   + SDK for Rust は [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html) のみをサポートします。
   + このロールの設定とメタデータの使用の詳細については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EC2 の IAM ロール](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)」および「[インスタンスメタデータの操作](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)」を参照してください。
   +  このプロバイダーの SDK 設定プロパティの詳細については、「*AWS SDK とツールのリファレンスガイド*」の「[IMDS 認証情報プロバイダー](https://docs.aws.amazon.com/sdkref/latest/guide/feature-imds-credentials.html)」を参照してください。

1. この時点で認証情報が引き続き解決されていない場合は、panics オペレーションでエラーが発生します。

 AWS 認証情報プロバイダーの設定の詳細については、「 SDK およびツール*リファレンスガイド」の「設定*リファレンス」の[「標準化された認証情報プロバイダー](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html)」を参照してください。 *AWS SDKs *

## 明示的な認証情報プロバイダー
<a name="credproviders-explicit-credentials-provider"></a>

SDK による認証方法の検出のために認証情報プロバイダーチェーンに依存するのではなく、特定の認証情報プロバイダーを指定できます。`aws_config::defaults` を使用して一般的な設定をロードする場合、以下に示すように、カスタム認証情報プロバイダーを指定できます。

```
let config = aws_config::defaults(BehaviorVersion::latest())
    .credentials_provider(MyCredentialsProvider::new())
    .load()
    .await;
```

[https://docs.rs/aws-credential-types/latest/aws_credential_types/provider/trait.ProvideCredentials.html](https://docs.rs/aws-credential-types/latest/aws_credential_types/provider/trait.ProvideCredentials.html) トレイトを実装することにより、独自の認証情報プロバイダーを実装できます。

## アイデンティティのキャッシュ
<a name="credproviders-identity-caching"></a>

SDK は、認証情報や SSO トークンなど他のアイデンティティタイプをキャッシュします。デフォルトでは、SDK は遅延キャッシュ方式を使用します。この方式では、認証情報は最初のリクエスト時にロードされ、キャッシュされて、有効期限が近づいたら、次のリクエスト時に自動的に更新が試みられます。同じ `SdkConfig` から作成されたクライアントは [https://docs.rs/aws-smithy-runtime/latest/aws_smithy_runtime/client/identity/struct.IdentityCache.html](https://docs.rs/aws-smithy-runtime/latest/aws_smithy_runtime/client/identity/struct.IdentityCache.html) を共有します。