Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

AWS Identity and Access gestión

El mecanismo de autenticación MONGODB-AWS utiliza las credenciales de Amazon Web Services Identity and Access Management (AWS IAM) para autenticar a un usuario en MongoDB. Puede usar este mecanismo solo cuando se autentique en MongoDB Atlas.

Para obtener más información sobre cómo configurar MongoDB Atlas para la autenticación de AWS IAM, consulte Configurar la autenticación con AWS IAM en la documentación de Atlas.

Nota

Pruebas de AWS SDK

El controlador Java Reactive Streams prueba MONGODB-AWS con las versiones 2.30.31 y 1.12.782 del SDK de AWS.

Los ejemplos de código en esta página utilizan los siguientes marcadores de posición:

  • <awsKeyId>: Su clave de acceso de AWS ID

  • <atlasUri>La dirección de red de su implementación de MongoDB Atlas

  • <awsSecretKey>Tu clave secreta de acceso de AWS

  • <awsSessionToken>Token de sesión de AWS

  • <hostname>: El nombre de host de tu implementación de MongoDB Atlas

  • <port>: El puerto de tu implementación de MongoDB Atlas

Para usar los ejemplos de código en esta página, reemplaza estos marcadores de posición con tus propios valores.

Para indicar al controlador que use este mecanismo de autenticación, puedes especificar MONGODB-AWS como un parámetro en la cadena de conexión o mediante el uso del método de fábrica MongoCredential.createAwsCredential().

Esta sección describe cómo especificar este mecanismo de autenticación y las diversas formas de proporcionar sus credenciales de AWS IAM al controlador de Java Reactive Streams.

Importante

Este método para proporcionar credenciales MONGODB-AWS solo está disponible en el controlador Java Reactive Streams v4.8 y posteriores.

Puede especificar sus credenciales utilizando v1 o v2 del AWS SDK para Java, que ofrece las siguientes funcionalidades:

  • Varias opciones para obtener credenciales

  • El almacenamiento en caché de credenciales ayuda a tu aplicación a evitar la limitación de tasa

  • Gestión de proveedor de credenciales para su uso con el Elastic Kubernetes Service.

Para utilizar el AWS SDK for Java para autenticación de MONGODB-AWS, se deben realizar las siguientes acciones:

  1. Especifique el mecanismo de autenticación.

  2. Agrega el SDK como una dependencia a tu proyecto.

  3. Proporcione sus credenciales utilizando uno de los métodos de la cadena de proveedores de credenciales.

Para especificar el mecanismo de autenticación mediante el uso de un MongoCredential, utilice el método de fábrica MongoCredential.createAwsCredential() y agregue la instancia MongoCredential a su MongoClient, como se muestra en el siguiente ejemplo:

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());

Para especificar el mecanismo de autenticación en la cadena de conexión, agréguelo como un parámetro, como se muestra en el siguiente ejemplo:

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

Para agregar el SDK de AWS como dependencia a su proyecto, consulte la siguiente documentación de AWS:

Nota

Para el SDK de AWS para Java v2, las pruebas del controlador Java Reactive Streams utilizan la dependencia software.amazon.awssdk:auth:2.30.31.

Para el SDK de AWS para Java v1, las pruebas del controlador Java Reactive Streams utilizan la dependencia com.amazonaws:aws-java-sdk-core:1.12.782.

Para proporcionar sus credenciales al controlador Java Reactive Streams, consulte la siguiente documentación de AWS:

Nota

Si incluye tanto v1 como v2 del SDK de AWS para Java en su proyecto, debe usar los métodos v2 para proporcionar sus credenciales al controlador de Java Reactive Streams.

Puede proporcionar sus credenciales de AWS IAM indicándole al controlador que utilice el mecanismo de autenticación MONGODB-AWS y configurando sus variables de entorno.

Para utilizar las variables de entorno para proporcionar tus credenciales, debes realizar las siguientes acciones:

  1. Especificar el mecanismo de autenticación

  2. Agregue sus variables de entorno

Puedes especificar el mecanismo de autenticación utilizando un MongoCredential o en la cadena de conexión.

Para especificar el mecanismo de autenticación mediante el uso de un MongoCredential, utilice el método de fábrica MongoCredential.createAwsCredential() y agregue la instancia MongoCredential a su MongoClient, como se muestra en el siguiente ejemplo:

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());

Para especificar el mecanismo de autenticación en la cadena de conexión, agréguelo como un parámetro, como se muestra en el siguiente ejemplo:

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

Puedes configurar variables de entorno para habilitar los siguientes tipos de autenticación:

  • Claves de acceso programático

  • Proveedor de identidad web

  • Credenciales de contenedor ECS

  • credenciales del contenedor EC2

El siguiente ejemplo muestra cómo puedes configurar tus claves de acceso programáticas en variables de entorno usando bash o una shell similar:

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

Si no necesita un token de sesión de AWS para ese rol, omita el comando que contiene AWS_SESSION_TOKEN.

Puedes utilizar un proveedor de identidad web compatible con OpenID Connect (OIDC) para autenticarte en Amazon Elastic Kubernetes Service (EKS) u otros servicios.

Importante

Su proyecto debe incluir la v1 o v2 del AWS SDK como dependencia para autenticarse mediante un proveedor de identidad web.

Para utilizar un proveedor de identidad web, se debe crear un archivo que contenga el token OIDC. A continuación, utiliza bash o un shell similar para establecer una variable de entorno en la ruta absoluta de este archivo, como se muestra en el siguiente ejemplo:

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

Para autenticar usando credenciales de contenedor ECS, establece el URI relativo del punto final de ECS en una variable de entorno usando bash o un shell similar, como se muestra en el siguiente ejemplo:

export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<your ECS endpoint>

Para autenticarse mediante credenciales de contenedor EC2, asegúrese de que ninguna de las variables de entorno mencionadas en esta sección esté configurada. El controlador obtiene las credenciales del punto final de metadatos de instancia EC2 IPv4 predeterminado en lugar de las variables de entorno.

Puede proporcionar sus credenciales de AWS IAM a un MongoClient utilizando una instancia MongoCredential. Para construir la instancia de MongoCredential para la autenticación de MONGODB-AWS, utiliza el método de fábrica createAwsCredential().

Solo puede proporcionar claves de acceso programático al MongoCredential.createAwsCredential() método. Si necesita proporcionar2 credenciales de contenedor ECS o EC, siga las instrucciones de las secciones "Usar variables de entorno" o "Usar el SDK de AWS para Java".

Para usar el MongoCredential para la autenticación MONGODB-AWS, debe realizar las siguientes acciones:

  1. Especificar el mecanismo de autenticación

  2. Proporcione las credenciales

Para especificar el mecanismo de autenticación mediante el uso de un MongoCredential, utilice el método de fábrica MongoCredential.createAwsCredential() y agregue la instancia MongoCredential a su MongoClient, como se muestra en el siguiente ejemplo:

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());

Si necesita especificar un token de sesión de AWS, páselo al método withMechanismProperty(), como se muestra en el siguiente ejemplo:

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());

Para actualizar sus credenciales de AWS IAM, declare una expresión lambda Supplier que devuelva nuevas credenciales, como se muestra en el siguiente ejemplo:

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());

Para aprender más sobre cualquiera de los métodos o tipos tratados en esta página, consulta la siguiente documentación de la API: