AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

Amazon Web Services ID とアクセス管理

MONGODB-AWS認証メカニズムは、 Amazon Web Services Identity and Access Management(Amazon Web Services IAM)認証情報を使用してMongoDBに対してユーザーを認証します。 このメカニズムは、 MongoDB Atlasに認証するときにのみ使用できます。

Amazon Web Services IAM認証用のMongoDB Atlasの構成の詳細については、Atlas ドキュメントの「 Amazon Web Services IAM による認証の設定 」を参照してください。

注意

Amazon Web Services SDK テスト

Java Reactive Streams ドライバーは、 AWS SDK のバージョン 2.30.31 と 1.12.782 で MONGODB-AWS をテストしています。

このページのコード例では、次のプレースホルダーを使用します。

  • <awsKeyId>: Amazon Web ServicesアクセスキーID

  • <atlasUri>: MongoDB Atlas配置のネットワークアドレス

  • <awsSecretKey>: Amazon Web Servicesシークレット アクセスキー

  • <awsSessionToken>: Amazon Web Servicesセッション トークン

  • <hostname>: MongoDB Atlas配置のホスト名

  • <port>: MongoDB Atlas配置のポート

このページのコード例を使用するには、これらのプレースホルダーを独自の値に置き換えます。

この認証メカニズムを使用するようにドライバーに指示するには、接続stringのパラメーターとして、または MongoCredential.createAwsCredential() ファクトリー メソッドを使用して MONGODB-AWS を指定できます。

このセクションでは、この認証メカニズムを指定する方法と、 Java Reactive Streams ドライバーにAWS IAM 認証情報を提供するさまざまな方法について説明します。

重要

MONGODB-AWS 認証情報を提供するこの方法は、 Java Reactive Streams ドライバー v4.8 以降でのみ使用できます。

認証情報を指定するには、次の機能を提供するJava用Amazon Web Services SDK の v1 または v2 を使用します。

  • 認証情報を取得するための複数のオプション

  • アプリケーションがレート制限を回避するのに役立つ認証情報キャッシュ

  • Elastic Kubernetes Service で使用するための認証情報プロバイダー管理。

MONGODB-AWS認証にAmazon Web Services SDK for Javaを使用するには、次のアクションを実行する必要があります。

  1. 認証メカニズムを指定します。

  2. SDK を 依存関係としてプロジェクトに追加します 。

  3. 認証情報プロバイダー チェーンのいずれかの方法を使用して認証情報を提供します。

MongoCredential を使用して認証メカニズムを指定するには、次の例に示すように、MongoCredential.createAwsCredential() ファクトリー メソッドを使用し、 MongoCredentialインスタンスをMongoClient に追加します。

MongoCredential credential = MongoCredential.createAwsCredential(null, null);
// Creates a MongoClient that receives configuration information from a MongoCredential and environment variables
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Collections.singletonList(new ServerAddress("<hostname>"))))
.credential(credential)
.build());

接続文字列で認証メカニズムを指定するには、次の例に示すように、それをパラメーターとして追加します。

MongoClient mongoClient = MongoClients.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS");

AWS SDK を依存関係としてプロジェクトに追加するには 、次のAWSドキュメントを参照してください。

  • Amazon Web Services SDK for Java v2 については、 設定ガイドを参照してください。

  • Amazon Web Services SDK for Java v1 については、使用開始ガイドを参照してください。

注意

AWS SDK for Java v2 の場合、 Java Reactive Streams ドライバーは software.amazon.awssdk:auth:2.30.31 依存関係を使用してテストします。

AWS SDK for Java v1 の場合、 Java Reactive Streams ドライバーは com.amazonaws:aws-java-sdk-core:1.12.782 依存関係を使用してテストします。

Java Reactive Streams ドライバーに認証情報を提供するには、次のAWSドキュメントを参照してください。

注意

AWS SDK for Javaの v1 と v2 の両方をプロジェクトに含める場合は、 v2 メソッドを使用してJava Reactive Streams ドライバーに認証情報を提供する必要があります。

AWS IAM 認証情報は、MONGODB-AWS認証メカニズムを使用するようにドライバーに指示し、 環境変数を設定することで提供できます。

環境変数を使用して認証情報を提供するには、次のアクションを実行する必要があります。

  1. 認証メカニズムを指定する

  2. 環境変数を追加する

接続文字列で MongoCredential または を使用して認証メカニズムを指定できます。

MongoCredential を使用して認証メカニズムを指定するには、次の例に示すように、MongoCredential.createAwsCredential() ファクトリー メソッドを使用し、 MongoCredentialインスタンスをMongoClient に追加します。

MongoCredential credential = MongoCredential.createAwsCredential(null, null);
// Creates a MongoClient that receives configuration information from a MongoCredential and environment variables
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Collections.singletonList(new ServerAddress("<hostname>"))))
.credential(credential)
.build());

接続文字列で認証メカニズムを指定するには、次の例に示すように、それをパラメーターとして追加します。

MongoClient mongoClient = MongoClients.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS");

次のタイプの認証を有効にするには、環境変数を設定します。

  • プログラムによるアクセス キー

  • Web ID プロバイダー

  • ECS コンテナの認証情報

  • EC2 コンテナの認証情報

次の例は、 bashまたは同様の shell を使用して、環境変数にプログラムによるアクセス キーを設定する方法を示しています。

export AWS_ACCESS_KEY_ID=<awsKeyId>
export AWS_SECRET_ACCESS_KEY=<awsSecretKey>
export AWS_SESSION_TOKEN=<awsSessionToken>

そのロールにAWSセッショントークンが必要ない場合は、AWS_SESSION_TOKEN を含む コマンドを省略します。

OpenID Connect(OIDC)互換のWeb ID プロバイダーを使用して、Amazon Elastic Kubernetes Service(EKS)またはその他のサービスを認証できます。

重要

プロジェクトには、Web IdP を使用して認証するためのAmazon Web Services SDK の v1 または v2 を依存関係として含める必要があります。

Web ID プロバイダーを使用するには、OIDC トークンを含む ファイルを作成します。 次に、次の例に示すように、 bashまたは同様の shell を使用して、環境変数をこのファイルへの絶対パスに設定します。

export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file containing your OIDC token>

ECSコンテナ認証情報 を使用して認証するには、次の例に示すように、 または同様のシェル を使用して環境変数に ECS エンドポイントの相対的 URI を設定します。bash

export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<your ECS endpoint>

EC2コンテナの認証情報を使用して認証するには、このセクションで述べられた環境変数が設定されていないことを確認してください。ドライバーは、環境変数ではなく、デフォルトのIPv4 EC2インスタンスのメタデータエンドポイントから認証情報を取得します。

Amazon Web Services IAM 認証情報を MongoCredentialインスタンスを使用して MongoClient に提供できます。 MONGODB-AWS認証用の MongoCredentialインスタンスを構築するには、createAwsCredential() ファクトリー メソッドを使用します。

MongoCredential.createAwsCredential()メソッドにはプログラムによるアクセスキーのみを指定できます。 ECS または EC2 コンテナの認証情報を指定する必要がある場合は、「 環境変数の使用 」または「 Java用のAWS SDK の使用 」セクションの手順を使用します。

MONGODB-AWS認証に MongoCredential を使用するには、次のアクションを実行する必要があります。

  1. 認証メカニズムを指定する

  2. 認証情報を提供する

MongoCredential を使用して認証メカニズムを指定するには、次の例に示すように、MongoCredential.createAwsCredential() ファクトリー メソッドを使用し、 MongoCredentialインスタンスをMongoClient に追加します。

MongoCredential credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray());
// Creates a MongoClient that receives AWS credentials from the MongoCredential instance
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Collections.singletonList(new ServerAddress("<hostname>"))))
.credential(credential)
.build());

AWSセッショントークンを指定する必要がある場合は、次の例に示すように、それを withMechanismProperty() メソッドに渡します。

MongoCredential credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray())
.withMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>");
// Creates a MongoClient that receives configuration information from a MongoCredential instance
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Collections.singletonList(new ServerAddress("<hostname>"))))
.credential(credential)
.build());

AWS IAM 認証情報を更新するには、次の例に示すように、新しい認証情報を返す Supplier ラムダ式を宣言します。

Supplier<AwsCredential> awsFreshCredentialSupplier = () -> {
// Add your code to fetch new credentials
return new AwsCredential("<awsKeyId>", "<awsSecretKey>", "<awsSessionToken>");
};
// Creates a MongoCredential instance to specify the new AWS credentials
MongoCredential credential = MongoCredential.createAwsCredential(null, null)
.withMechanismProperty(MongoCredential.AWS_CREDENTIAL_PROVIDER_KEY, awsFreshCredentialSupplier);
// Creates a MongoClient that receives new configuration information from a MongoCredential instance
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Collections.singletonList(new ServerAddress("<hostname>", <port>))))
.credential(credential)
.build());

このページで説明するメソッドやタイプの詳細については、次のAPIドキュメントを参照してください。