Overview
MONGODB Amazon Web Services認証メカニズムは、 Amazon Web Services Identity and Access Management(Amazon Web Services IAM)認証情報を使用してMongoDBにユーザーを認証します。このメカニズムは、 MongoDB Atlasに認証するときにのみ使用できます。
Tip
Amazon Web Services IAM 認証のための Atlas の設定
MongoDB Atlas をAmazon Web Services IAM認証用に構成する方法の詳細については、Atlas ドキュメントの 「Amazon Web Services IAM による認証の設定 」を参照してください。
MONGODB- AWS認証の指定
Kotlin Syncドライバーに MONGODB-AWS
認証メカニズムを使用するように指示するには、接続文字列のパラメーターとして MONGODB-AWS
を指定するか、MongoCredential.createAwsCredential()
ファクトリー メソッドを呼び出します。
次のセクションでは、MONGODB-AWS
認証メカニズムを指定し、 Amazon Web Services IAM 認証情報を提供するためのさまざまな方法を学習できます。
これらのセクションには、次のプレースホルダーを使用するコード例が含まれています。
awsKeyId
: Amazon Web Services のアクセスキーIDの値awsSecretKey
: Amazon Web Servicesシークレット アクセス キーの値atlasUri
: MongoDB Atlas配置のネットワークアドレスhostname
: MongoDB Atlas配置のホスト名port
: MongoDB Atlas配置のポートawsSessionToken
: Amazon Web Servicesセッション トークンの値
Amazon Web Services SDK
注意
Java v1 用のAmazon Web Services SDK のサポートを終了します
Java v1 用のAmazon Web Services SDK は、12 月 31、2025 のサポートが終了します。 Amazon Web Services、 Java v2 用のAmazon Web Services SDK に移行することを推奨しています。 詳細については、 Amazon Web Servicesサイトの サポート終了の通知 を参照してください。
Amazon Web Services は、 Java v1 および v2 用のソフトウェア開発キット(SDK)を提供しています。 Amazon Web Services SDK は、次の機能を提供します。
認証情報を取得するための複数のオプション
認証情報キャッシュ:アプリケーションのレート制限の回避に役立ちます
Elastic Kubernetes Service で使用する認証情報プロバイダー管理
MONGODB-AWS
認証にAmazon Web Services SDK を使用するには、次の手順を実行します。
認証メカニズムを指定する
接続文字列または MongoCredential
オブジェクトを使用して、MONGODB-AWS
認証メカニズムを指定できます。 対応する手順とサンプルコードについては、以下の Connection String タブまたは MongoCredentialタブを選択してください。
接続文字列で MONGODB-AWS
認証メカニズムを指定するには、次の例に示すように、authMechanism
パラメータを MONGODB-AWS
に設定します。
val mongoClient = MongoClient.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS")
MongoCredential
オブジェクトを使用して MONGODB-AWS
認証メカニズムを指定するには、次の例に示すように、MongoCredential.createAwsCredential()
ファクトリー メソッドを呼び出し、MongoCredential
インスタンスを MongoClient
に追加します。
val credential = MongoCredential.createAwsCredential(null, null) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder: ClusterSettings.Builder -> builder.hosts( listOf(ServerAddress("<atlasUri>")) ) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
Amazon Web Services SDK 依存関係の追加
Amazon Web Services SDK を依存関係としてプロジェクトに追加するには、必要なバージョンの次のAmazon Web Servicesドキュメントを参照してください。
Amazon Web ServicesSDK forJava v2 については、 設定 を参照してください ガイドを参照してください。
Amazon Web ServicesSDK forJava v1 については、 はじめ に を参照してください。 ガイドを参照してください。
注意
Amazon Web Services SDK for Java v2 の場合、 Javaドライバーは software.amazon.awssdk:auth:2.30.31
依存関係を使用してテストします。
Amazon Web Services SDK for Java v1 の場合、 Javaドライバーは com.amazonaws:aws-java-sdk-core:1.12.782
依存関係を使用してテストします。
認証情報の提供
認証情報を提供するには、必要なバージョンの次のAmazon Web Servicesドキュメントを参照してください。
ドライバーが認証情報を取得するために使用するAmazon Web Services Javav2 クラスの SDK の 詳細については、 DefaultCredentialsProvider を参照してくださいAPI ドキュメント。
デフォルトの認証情報プロバイダー チェーンを使用して 、このクラスに認証情報を提供する方法について学びます。 セクションを参照してください。
ドライバーが認証情報を取得するために使用するAmazon Web Services Javav1 クラスの SDK の 詳細については、 DefaultAWSCredentialsProviderCheck を参照してくださいAPI ドキュメント。
デフォルトの認証情報プロバイダー チェーンを使用して、 このクラスに認証情報を提供する方法について学びます。 セクションを参照してください。
注意
プロジェクトにAmazon Web Services SDK for Javaの v1 と v2 の両方を含める場合は、認証情報を提供するために v2 メソッドを使用する必要があります。
環境で認証情報を指定する
MONGODB-AWS
認証メカニズムを使用するようにドライバーに指示し、適切な環境変数を設定することで、 Amazon Web Services IAM 認証情報を提供できます。
環境変数を使用して認証情報を提供するには、次の手順を実行します。
認証メカニズムを指定する
MongoCredential
オブジェクトを使用するか、接続文字列で MONGODB-AWS
認証メカニズムを指定できます。
MongoCredential
オブジェクト を使用して認証メカニズムを指定するには、次の例に示すように、MongoCredential.createAwsCredential()
ファクトリー メソッドを呼び出し、MongoCredential
インスタンスを MongoClient
に追加します。
val credential = MongoCredential.createAwsCredential(null, null) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder: ClusterSettings.Builder -> builder.hosts( listOf(ServerAddress("<atlasUri>")) ) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
接続文字列で MONGODB-AWS
認証メカニズムを指定するには、次の例に示すように、それをパラメーターとして追加します。
val mongoClient = MongoClient.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS")
環境変数を設定する
このセクションでは、次のタイプの認証の環境変数を設定して認証情報を提供する方法を示します。
プログラムによるアクセス キー
ECS コンテナの認証情報
EC2 コンテナの認証情報
次の例は、 bash
または同様の shell を使用して、環境変数にプログラムによるアクセス キーを設定する方法を示しています。
export AWS_ACCESS_KEY_ID=<awsKeyId> export AWS_SECRET_ACCESS_KEY=<awsSecretKey> export AWS_SESSION_TOKEN=<awsSessionToken>
そのロールのAmazon Web Servicesセッション トークンが必要ない場合は、AWS_SESSION_TOKEN
変数を設定する行を省略します。
ECSコンテナ認証情報 を使用して認証するには、次の例に示すように、 または同様のシェル を使用して環境変数に ECS エンドポイントの相対的 URI を設定します。bash
export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<your ECS endpoint>
EC2コンテナ認証情報 を使用して認証するには、 Amazon Web Services環境変数を設定しないでください。ドライバーは、デフォルトのIPv4 EC2インスタンスのメタデータエンドポイントから認証情報を取得します。
MongoCredential で認証情報を指定する
Amazon Web Services IAM 認証情報を MongoCredential
インスタンスを使用して MongoClient
に提供できます。 MongoCredential
認証用のMONGODB-AWS
インスタンスを構築するには、 createAwsCredential() ファクトリー メソッドを呼び出します。
Tip
MongoCredential.createAwsCredential()
メソッドにはプログラムによるアクセスキーのみを指定できます。ECS または EC2コンテナの認証情報を指定する必要がある場合は、「 環境で認証情報を指定する 」の手順に従ってください。
MONGODB-AWS
認証に MongoCredential
オブジェクトを使用するには、次の手順を実行します。
認証メカニズムを指定します。
認証情報を提供します。
MongoCredential
オブジェクト を使用して認証メカニズムを指定するには、次の例に示すように、MongoCredential.createAwsCredential()
ファクトリー メソッドを呼び出し、MongoCredential
インスタンスを MongoClient
に追加します。
val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder: ClusterSettings.Builder -> builder.hosts( listOf(ServerAddress("<atlasUri>")) ) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
Amazon Web Servicesセッショントークンを指定する必要がある場合は、次の例に示すように、それを withMechanismProperty() メソッドに渡します。
val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()) .withMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>") val settings = MongoClientSettings.builder() .applyToClusterSettings { builder: ClusterSettings.Builder -> builder.hosts( listOf(ServerAddress("<atlasUri>")) ) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
認証情報を更新するには、次の例に示すように、新しい認証情報を返す Supplier
Lambda式を宣言します。
val awsFreshCredentialSupplier: Supplier<AwsCredential> = Supplier { // Add your code here to fetch new credentials // Return the new credentials AwsCredential("<awsKeyId>", "<awsSecretKey>", "<awsSessionToken>") } val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()) .withMechanismProperty(MongoCredential.AWS_CREDENTIAL_PROVIDER_KEY, awsFreshCredentialSupplier) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder -> builder.hosts(listOf(ServerAddress("<hostname>", <port>))) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
接続文字列でAmazon Web Services IAM 認証情報を提供する必要がある場合は、MongoClientSettings
applyConnectionString() メソッドを呼び出すことで、それを オブジェクトに追加できます。
val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()) val connectionString = ConnectionString("mongodb://<atlasUri>/?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<awsSessionToken>") val settings = MongoClientSettings.builder() .applyConnectionString(connectionString) .credential(credential) .build() val mongoClient = MongoClient.create(settings)
詳細情報
MongoDBへの認証の詳細については、 MongoDB Serverマニュアルの 認証 を参照してください。
Kotlin Syncドライバーを使用して MongoClient
オブジェクトを作成する方法について詳しくは、「MongoClient の作成」ガイドを参照してください。