Connexion par programmation à Amazon DocumentDB - Amazon DocumentDB

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Connexion par programmation à Amazon DocumentDB

Cette section contient des exemples de code qui montrent comment se connecter à Amazon DocumentDB (compatible avec MongoDB) en utilisant plusieurs langages différents. Les exemples sont séparés en deux sections selon que vous vous connectez à un cluster sur lequel Transport Layer Security (TLS) est activé ou désactivé. Par défaut, TLS est activé sur les clusters Amazon DocumentDB. Cependant, vous pouvez le désactiver TLS si vous le souhaitez. Pour de plus amples informations, veuillez consulter chiffrement des données en transit.

Si vous essayez de vous connecter à votre Amazon DocumentDB depuis l'extérieur de celui VPC dans lequel réside votre cluster, consultez. Connexion à un cluster Amazon DocumentDB depuis l'extérieur d'Amazon VPC

Avant de vous connecter à votre cluster, vous devez savoir s'il TLS est activé sur le cluster. La section suivante vous montre comment déterminer la valeur du paramètre tls de votre cluster à l'aide de la AWS Management Console ou de l' AWS CLI. Ensuite, vous pouvez continuer en recherchant et en appliquant l'exemple de code approprié.

Déterminer la valeur de votre tls paramètre

Déterminer si votre cluster est TLS activé est un processus en deux étapes que vous pouvez effectuer à l'aide du AWS Management Console ou AWS CLI.

  1. Déterminez quel groupe de paramètres régit votre cluster.

    Using the AWS Management Console
    1. Connectez-vous à la AWS Management Console console Amazon DocumentDB et ouvrez-la à l'adresse https://console.aws.amazon.com/docdb.

    2. Dans le panneau de navigation de gauche, choisissez Clusters.

    3. Dans la liste des clusters, sélectionnez le nom de votre cluster.

    4. La page qui s'affiche répertorie les détails du cluster sélectionné. Faites défiler vers le bas jusqu'à Cluster details (Détails du cluster). En bas de cette section, recherchez le nom du groupe de paramètres sous Cluster parameter group (Groupe de paramètres de cluster).

    Using the AWS CLI

    Le AWS CLI code suivant détermine le paramètre qui régit votre cluster. Assurez-vous de remplacer sample-cluster par le nom de votre cluster.

    aws docdb describe-db-clusters \ --db-cluster-identifier sample-cluster \ --query 'DBClusters[*].[DBClusterIdentifier,DBClusterParameterGroup]'

    Le résultat de cette opération ressemble à ce qui suit :

    [ [ "sample-cluster", "sample-parameter-group" ] ]
  2. Déterminez la valeur du paramètre tls dans le groupe de paramètres de votre cluster.

    Using the AWS Management Console
    1. Dans le panneau de navigation, choisissez Groupes de paramètres.

    2. Dans la fenêtre Cluster parameter groups (Groupes de paramètres de cluster), sélectionnez votre groupe de paramètres de cluster.

    3. La page résultante affiche les paramètres de votre groupe de paramètres de cluster. Ici, vous pouvez voir la valeur du paramètre tls. Pour plus d'informations sur la modification de ce paramètre, veuillez consulter Modification des groupes de paramètres du cluster Amazon DocumentDB.

    Using the AWS CLI

    Vous pouvez utiliser la describe-db-cluster-parameters AWS CLI commande pour afficher les détails des paramètres de votre groupe de paramètres de cluster.

    • --describe-db-cluster-parameters— Pour répertorier tous les paramètres d'un groupe de paramètres et leurs valeurs.

      • --db-cluster-parameter-group name — Obligatoire. Nom de votre groupe de paramètres de cluster.

    aws docdb describe-db-cluster-parameters \ --db-cluster-parameter-group-name sample-parameter-group

    Le résultat de cette opération ressemble à ce qui suit :

    { "Parameters": [ { "ParameterName": "profiler_threshold_ms", "ParameterValue": "100", "Description": "Operations longer than profiler_threshold_ms will be logged", "Source": "system", "ApplyType": "dynamic", "DataType": "integer", "AllowedValues": "50-2147483646", "IsModifiable": true, "ApplyMethod": "pending-reboot" }, { "ParameterName": "tls", "ParameterValue": "disabled", "Description": "Config to enable/disable TLS", "Source": "user", "ApplyType": "static", "DataType": "string", "AllowedValues": "disabled,enabled,fips-140-3", "IsModifiable": true, "ApplyMethod": "pending-reboot" } ] }
    Note

    Amazon DocumentDB prend en charge FIPS 140 à 3 points de terminaison à partir des clusters Amazon DocumentDB 5.0 (moteur version 3.0.3727) dans les régions suivantes : ca-central-1, us-west-2, us-east-1, us-east-2, -1, -1. us-gov-east us-gov-west

Après avoir déterminé la valeur de votre paramètre tls, poursuivez la connexion de votre cluster en utilisant l'un des exemples de code des sections suivantes.

Connexion avec TLS activé

Pour afficher un exemple de code permettant de se connecter par programmation à un cluster Amazon TLS DocumentDB activé, choisissez l'onglet correspondant à la langue que vous souhaitez utiliser.

Pour chiffrer les données en transit, téléchargez la clé publique pour Amazon DocumentDB global-bundle.pem nommée à l'aide de l'opération suivante.

wget https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem

Si votre application fonctionne sous Microsoft Windows et nécessite un PKCS7 fichier, vous pouvez télécharger le bundle de PKCS7 certificats. Ce bundle contient à la fois les certificats intermédiaires et racines sur https://truststore.pki.rds.amazonaws.com/global/global-bundle.p7b.

Python

Le code suivant montre comment se connecter à Amazon DocumentDB à l'aide de Python lorsqu'il TLS est activé.

import pymongo import sys ##Create a MongoDB client, open a connection to Amazon DocumentDB as a replica set and specify the read preference as secondary preferred client = pymongo.MongoClient('mongodb://<sample-user>:<password>@sample-cluster.node.us-east-1.docdb.amazonaws.com:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') ##Specify the database to be used db = client.sample_database ##Specify the collection to be used col = db.sample_collection ##Insert a single document col.insert_one({'hello':'Amazon DocumentDB'}) ##Find the document that was previously written x = col.find_one({'hello':'Amazon DocumentDB'}) ##Print the result to the screen print(x) ##Close the connection client.close()
Node.js

Le code suivant montre comment se connecter à Amazon DocumentDB à l'aide de Node.js lorsqu'il TLS est activé.

var MongoClient = require('mongodb').MongoClient //Create a MongoDB client, open a connection to DocDB; as a replica set, // and specify the read preference as secondary preferred var client = MongoClient.connect( 'mongodb://<sample-user>:<password>@sample-cluster.node.us-east-1.docdb.amazonaws.com:27017/sample-database?tls=true&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false', { tlsCAFile: `global-bundle.pem` //Specify the DocDB; cert }, function(err, client) { if(err) throw err; //Specify the database to be used db = client.db('sample-database'); //Specify the collection to be used col = db.collection('sample-collection'); //Insert a single document col.insertOne({'hello':'Amazon DocumentDB'}, function(err, result){ //Find the document that was previously written col.findOne({'hello':'Amazon DocumentDB'}, function(err, result){ //Print the result to the screen console.log(result); //Close the connection client.close() }); }); });
PHP

Le code suivant montre comment se connecter à Amazon DocumentDB à l'aide de l'option « when » PHP activéeTLS.

<?php //Include Composer's autoloader require 'vendor/autoload.php'; $TLS_DIR = "/home/ubuntu/global-bundle.pem"; //Create a MongoDB client and open connection to Amazon DocumentDB $client = new MongoDB\Client("mongodb://<sample-user>:<password>@sample-cluster.node.us-east-1.docdb.amazonaws.com:27017/?retryWrites=false", ["tls" => "true", "tlsCAFile" => $TLS_DIR ]); //Specify the database and collection to be used $col = $client->sampledatabase->samplecollection; //Insert a single document $result = $col->insertOne( [ 'hello' => 'Amazon DocumentDB'] ); //Find the document that was previously written $result = $col->findOne(array('hello' => 'Amazon DocumentDB')); //Print the result to the screen print_r($result); ?>
Go

Le code suivant montre comment se connecter à Amazon DocumentDB à l'aide de Go lorsque cette option TLS est activée.

Note

À partir de la version 1.2.1, le pilote MongoDB Go n'utilisera que le premier certificat de serveur CA trouvé dans sslcertificateauthorityfile. L'exemple de code ci-dessous répond à cette limitation en ajoutant manuellement tous les certificats de serveur trouvés dans sslcertificateauthorityfile une TLS configuration personnalisée utilisée lors de la création du client.

package main import ( "context" "fmt" "log" "time" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" "io/ioutil" "crypto/tls" "crypto/x509" "errors" ) const ( // Path to the AWS CA file caFilePath = "global-bundle.pem" // Timeout operations after N seconds connectTimeout = 5 queryTimeout = 30 username = "<sample-user>" password = "<password>" clusterEndpoint = "sample-cluster.node.us-east-1.docdb.amazonaws.com:27017" // Which instances to read from readPreference = "secondaryPreferred" connectionStringTemplate = "mongodb://%s:%s@%s/sample-database?tls=true&replicaSet=rs0&readpreference=%s" ) func main() { connectionURI := fmt.Sprintf(connectionStringTemplate, username, password, clusterEndpoint, readPreference) tlsConfig, err := getCustomTLSConfig(caFilePath) if err != nil { log.Fatalf("Failed getting TLS configuration: %v", err) } client, err := mongo.NewClient(options.Client().ApplyURI(connectionURI).SetTLSConfig(tlsConfig)) if err != nil { log.Fatalf("Failed to create client: %v", err) } ctx, cancel := context.WithTimeout(context.Background(), connectTimeout*time.Second) defer cancel() err = client.Connect(ctx) if err != nil { log.Fatalf("Failed to connect to cluster: %v", err) } // Force a connection to verify our connection string err = client.Ping(ctx, nil) if err != nil { log.Fatalf("Failed to ping cluster: %v", err) } fmt.Println("Connected to DocumentDB!") collection := client.Database("sample-database").Collection("sample-collection") ctx, cancel = context.WithTimeout(context.Background(), queryTimeout*time.Second) defer cancel() res, err := collection.InsertOne(ctx, bson.M{"name": "pi", "value": 3.14159}) if err != nil { log.Fatalf("Failed to insert document: %v", err) } id := res.InsertedID log.Printf("Inserted document ID: %s", id) ctx, cancel = context.WithTimeout(context.Background(), queryTimeout*time.Second) defer cancel() cur, err := collection.Find(ctx, bson.D{}) if err != nil { log.Fatalf("Failed to run find query: %v", err) } defer cur.Close(ctx) for cur.Next(ctx) { var result bson.M err := cur.Decode(&result) log.Printf("Returned: %v", result) if err != nil { log.Fatal(err) } } if err := cur.Err(); err != nil { log.Fatal(err) } } func getCustomTLSConfig(caFile string) (*tls.Config, error) { tlsConfig := new(tls.Config) certs, err := ioutil.ReadFile(caFile) if err != nil { return tlsConfig, err } tlsConfig.RootCAs = x509.NewCertPool() ok := tlsConfig.RootCAs.AppendCertsFromPEM(certs) if !ok { return tlsConfig, errors.New("Failed parsing pem file") } return tlsConfig, nil
Java

Lorsque vous vous connectez à un cluster Amazon DocumentDB TLS activé depuis une application Java, votre programme doit utiliser AWS le fichier d'autorité de certification (CA) fourni pour valider la connexion. Pour utiliser le certificat Amazon RDS CA, procédez comme suit :

  1. Téléchargez le fichier Amazon RDS CA depuis https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem.

  2. Créez un référentiel d'approbations avec le certificat d'autorité de certification (CA) contenu dans le fichier en exécutant les commandes suivantes. N'oubliez pas de modifier le <truststorePassword> à autre chose. Si vous accédez à un référentiel d'approbations qui contient à la fois l'ancien certificat d'autorité de certification (rds-ca-2015-root.pem) et le nouveau certificat d'autorité de certification (rds-ca-2019-root.pem), vous pouvez importer le bundle de certificats dans le référentiel d'approbations.

    Voici un exemple de scripting shell qui importe le lot de certificats vers un magasin d'approbations sur un système d'exploitation Linux. Dans l'exemple suivant, remplacez chaque user input placeholder avec vos propres informations. Plus particulièrement, partout où se trouve le répertoire d'exemples »mydir« se trouve dans le script, remplacez-le par un répertoire que vous avez créé pour cette tâche.

    mydir=/tmp/certs truststore=${mydir}/rds-truststore.jks storepassword=<truststorePassword> curl -sS "https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem" > ${mydir}/global-bundle.pem awk 'split_after == 1 {n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1}{print > "rds-ca-" n ".pem"}' < ${mydir}/global-bundle.pem for CERT in rds-ca-*; do alias=$(openssl x509 -noout -text -in $CERT | perl -ne 'next unless /Subject:/; s/.*(CN=|CN = )//; print') echo "Importing $alias" keytool -import -file ${CERT} -alias "${alias}" -storepass ${storepassword} -keystore ${truststore} -noprompt rm $CERT done rm ${mydir}/global-bundle.pem echo "Trust store content is: " keytool -list -v -keystore "$truststore" -storepass ${storepassword} | grep Alias | cut -d " " -f3- | while read alias do expiry=`keytool -list -v -keystore "$truststore" -storepass ${storepassword} -alias "${alias}" | grep Valid | perl -ne 'if(/until: (.*?)\n/) { print "$1\n"; }'` echo " Certificate ${alias} expires in '$expiry'" done

    Voici un exemple de scripting shell qui importe le lot de certificats vers un magasin d'approbations sur macOS.

    mydir=/tmp/certs truststore=${mydir}/rds-truststore.jks storepassword=<truststorePassword> curl -sS "https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem" > ${mydir}/global-bundle.pem split -p "-----BEGIN CERTIFICATE-----" ${mydir}/global-bundle.pem rds-ca- for CERT in rds-ca-*; do alias=$(openssl x509 -noout -text -in $CERT | perl -ne 'next unless /Subject:/; s/.*(CN=|CN = )//; print') echo "Importing $alias" keytool -import -file ${CERT} -alias "${alias}" -storepass ${storepassword} -keystore ${truststore} -noprompt rm $CERT done rm ${mydir}/global-bundle.pem echo "Trust store content is: " keytool -list -v -keystore "$truststore" -storepass ${storepassword} | grep Alias | cut -d " " -f3- | while read alias do expiry=`keytool -list -v -keystore "$truststore" -storepass ${storepassword} -alias "${alias}" | grep Valid | perl -ne 'if(/until: (.*?)\n/) { print "$1\n"; }'` echo " Certificate ${alias} expires in '$expiry'" done
  3. Utilisez-le keystore dans votre programme en définissant les propriétés système suivantes dans votre application avant d'établir une connexion au cluster Amazon DocumentDB.

    javax.net.ssl.trustStore: <truststore> javax.net.ssl.trustStorePassword: <truststorePassword>
  4. Le code suivant montre comment se connecter à Amazon DocumentDB à l'aide de Java lorsqu'il TLS est activé.

    package com.example.documentdb; import com.mongodb.client.*; import org.bson.Document; public final class Test { private Test() { } public static void main(String[] args) { String template = "mongodb://%s:%s@%s/sample-database?ssl=true&replicaSet=rs0&readpreference=%s"; String username = "<sample-user>"; String password = "<password>"; String clusterEndpoint = "sample-cluster.node.us-east-1.docdb.amazonaws.com:27017"; String readPreference = "secondaryPreferred"; String connectionString = String.format(template, username, password, clusterEndpoint, readPreference); String truststore = "<truststore>"; String truststorePassword = "<truststorePassword>"; System.setProperty("javax.net.ssl.trustStore", truststore); System.setProperty("javax.net.ssl.trustStorePassword", truststorePassword); MongoClient mongoClient = MongoClients.create(connectionString); MongoDatabase testDB = mongoClient.getDatabase("sample-database"); MongoCollection<Document> numbersCollection = testDB.getCollection("sample-collection"); Document doc = new Document("name", "pi").append("value", 3.14159); numbersCollection.insertOne(doc); MongoCursor<Document> cursor = numbersCollection.find().iterator(); try { while (cursor.hasNext()) { System.out.println(cursor.next().toJson()); } } finally { cursor.close(); } } }
C# / .NET

Le code suivant montre comment se connecter à Amazon DocumentDB à l'aide de C#/. NETquand TLS est activé.

using System; using System.Text; using System.Linq; using System.Collections.Generic; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Net.Security; using MongoDB.Driver; using MongoDB.Bson; namespace DocDB { class Program { static void Main(string[] args) { string template = "mongodb://{0}:{1}@{2}/sampledatabase?tls=true&replicaSet=rs0&readpreference={3}"; string username = "<sample-user>"; string password = "<password>"; string readPreference = "secondaryPreferred"; string clusterEndpoint="sample-cluster.node.us-east-1.docdb.amazonaws.com:27017"; string connectionString = String.Format(template, username, password, clusterEndpoint, readPreference); string pathToCAFile = "<PATH/global-bundle.p7b_file>"; // ADD CA certificate to local trust store // DO this once - Maybe when your service starts X509Store localTrustStore = new X509Store(StoreName.Root); X509Certificate2Collection certificateCollection = new X509Certificate2Collection(); certificateCollection.Import(pathToCAFile); try { localTrustStore.Open(OpenFlags.ReadWrite); localTrustStore.AddRange(certificateCollection); } catch (Exception ex) { Console.WriteLine("Root certificate import failed: " + ex.Message); throw; } finally { localTrustStore.Close(); } var settings = MongoClientSettings.FromUrl(new MongoUrl(connectionString)); var client = new MongoClient(settings); var database = client.GetDatabase("sampledatabase"); var collection = database.GetCollection<BsonDocument>("samplecollection"); var docToInsert = new BsonDocument { { "pi", 3.14159 } }; collection.InsertOne(docToInsert); } } }
mongo shell

Le code suivant montre comment se connecter à Amazon DocumentDB et l'interroger à l'aide du shell mongo lorsqu'il est TLS activé.

  1. Connectez-vous à Amazon DocumentDB avec le shell mongo. Si vous utilisez une version de shell mongo antérieure à 4.2, utilisez le code suivant pour vous connecter.

    mongo --ssl --host sample-cluster.node.us-east-1.docdb.amazonaws.com:27017 --sslCAFile global-bundle.pem --username <sample-user> --password <password>

    Si vous utilisez une version égale ou supérieure à 4.2, utilisez le code suivant pour vous connecter. Les écritures réessayables ne sont pas prises en charge dans DocumentDBAWS. Si vous utilisez un ancien shell mongo (et non mongosh), n'incluez la retryWrites=false commande dans aucune chaîne de code. Par défaut, les écritures réessayables sont désactivées. L'inclusion retryWrites=false peut entraîner un échec des commandes de lecture normales.

    mongo --tls --host sample-cluster.node.us-east-1.docdb.amazonaws.com:27017 --tlsCAFile global-bundle.pem --username <sample-user> --password <password>
  2. Insérez un document unique.

    db.myTestCollection.insertOne({'hello':'Amazon DocumentDB'})
  3. Recherchez le document qui a été inséré précédemment.

    db.myTestCollection.find({'hello':'Amazon DocumentDB'})
R

Le code suivant montre comment se connecter à Amazon DocumentDB avec R à l'aide de mongolite (https://jeroen.github.io/mongolite/) lorsque cette fonction est activée. TLS

#Include the mongolite library. library(mongolite) mongourl <- paste("mongodb://<sample-user>:<password>@sample-cluster.node.us-east-1.docdb.amazonaws.com:27017/test2?ssl=true&", "readPreference=secondaryPreferred&replicaSet=rs0", sep="") #Create a MongoDB client, open a connection to Amazon DocumentDB as a replica # set and specify the read preference as secondary preferred client <- mongo(url = mongourl, options = ssl_options(weak_cert_validation = F, ca ="<PATH/global-bundle.pem>")) #Insert a single document str <- c('{"hello" : "Amazon DocumentDB"}') client$insert(str) #Find the document that was previously written client$find()
Ruby

Le code suivant montre comment se connecter à Amazon DocumentDB avec Ruby lorsque cette option TLS est activée.

require 'mongo' require 'neatjson' require 'json' client_host = 'mongodb://sample-cluster.node.us-east-1.docdb.amazonaws.com:27017' client_options = { database: 'test', replica_set: 'rs0', read: {:secondary_preferred => 1}, user: '<sample-user>', password: '<password>', ssl: true, ssl_verify: true, ssl_ca_cert: <'PATH/global-bundle.pem'>, retry_writes: false } begin ##Create a MongoDB client, open a connection to Amazon DocumentDB as a ## replica set and specify the read preference as secondary preferred client = Mongo::Client.new(client_host, client_options) ##Insert a single document x = client[:test].insert_one({"hello":"Amazon DocumentDB"}) ##Find the document that was previously written result = client[:test].find() #Print the document result.each do |document| puts JSON.neat_generate(document) end end #Close the connection client.close

Connexion avec des TLS personnes handicapées

Pour afficher un exemple de code permettant de se connecter par programmation à un cluster Amazon TLS DocumentDB désactivé, choisissez l'onglet correspondant à la langue que vous souhaitez utiliser.

Python

Le code suivant montre comment se connecter à Amazon DocumentDB à l'aide de Python lorsqu'il TLS est désactivé.

## Create a MongoDB client, open a connection to Amazon DocumentDB as a replica set and specify the read preference as secondary preferred import pymongo import sys client = pymongo.MongoClient('mongodb://<sample-user>:<password>@sample-cluster.node.us-east-1.docdb.amazonaws.com:27017/?replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') ##Specify the database to be used db = client.sample_database ##Specify the collection to be used col = db.sample_collection ##Insert a single document col.insert_one({'hello':'Amazon DocumentDB'}) ##Find the document that was previously written x = col.find_one({'hello':'Amazon DocumentDB'}) ##Print the result to the screen print(x) ##Close the connection client.close()
Node.js

Le code suivant montre comment se connecter à Amazon DocumentDB à l'aide de Node.js lorsqu'il TLS est désactivé.

var MongoClient = require('mongodb').MongoClient; //Create a MongoDB client, open a connection to Amazon DocumentDB as a replica set, // and specify the read preference as secondary preferred var client = MongoClient.connect( 'mongodb://<sample-user>:<password>@sample-cluster.node.us-east-1.docdb.amazonaws.com:27017/sample-database?replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false', { useNewUrlParser: true }, function(err, client) { if(err) throw err; //Specify the database to be used db = client.db('sample-database'); //Specify the collection to be used col = db.collection('sample-collection'); //Insert a single document col.insertOne({'hello':'Amazon DocumentDB'}, function(err, result){ //Find the document that was previously written col.findOne({'hello':'Amazon DocumentDB'}, function(err, result){ //Print the result to the screen console.log(result); //Close the connection client.close() }); }); });
PHP

Le code suivant montre comment se connecter à Amazon DocumentDB en utilisant la fonction PHP when TLS is disabled.

<?php //Include Composer's autoloader require 'vendor/autoload.php'; //Create a MongoDB client and open connection to Amazon DocumentDB $client = new MongoDB\Client("mongodb://<sample-user>:<password>@sample-cluster.node.us-east-1.docdb.amazonaws.com:27017/?retryWrites=false"); //Specify the database and collection to be used $col = $client->sampledatabase->samplecollection; //Insert a single document $result = $col->insertOne( [ 'hello' => 'Amazon DocumentDB'] ); //Find the document that was previously written $result = $col->findOne(array('hello' => 'Amazon DocumentDB')); //Print the result to the screen print_r($result); ?>
Go

Le code suivant montre comment se connecter à Amazon DocumentDB à l'aide de Go lorsque cette option TLS est désactivée.

package main import ( "context" "fmt" "log" "time" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) const ( // Timeout operations after N seconds connectTimeout = 5 queryTimeout = 30 username = "<sample-user>" password = "<password>" clusterEndpoint = "sample-cluster.node.us-east-1.docdb.amazonaws.com:27017" // Which instances to read from readPreference = "secondaryPreferred" connectionStringTemplate = "mongodb://%s:%s@%s/sample-database?replicaSet=rs0&readpreference=%s" ) func main() { connectionURI := fmt.Sprintf(connectionStringTemplate, username, password, clusterEndpoint, readPreference) client, err := mongo.NewClient(options.Client().ApplyURI(connectionURI)) if err != nil { log.Fatalf("Failed to create client: %v", err) } ctx, cancel := context.WithTimeout(context.Background(), connectTimeout*time.Second) defer cancel() err = client.Connect(ctx) if err != nil { log.Fatalf("Failed to connect to cluster: %v", err) } // Force a connection to verify our connection string err = client.Ping(ctx, nil) if err != nil { log.Fatalf("Failed to ping cluster: %v", err) } fmt.Println("Connected to DocumentDB!") collection := client.Database("sample-database").Collection("sample-collection") ctx, cancel = context.WithTimeout(context.Background(), queryTimeout*time.Second) defer cancel() res, err := collection.InsertOne(ctx, bson.M{"name": "pi", "value": 3.14159}) if err != nil { log.Fatalf("Failed to insert document: %v", err) } id := res.InsertedID log.Printf("Inserted document ID: %s", id) ctx, cancel = context.WithTimeout(context.Background(), queryTimeout*time.Second) defer cancel() cur, err := collection.Find(ctx, bson.D{}) if err != nil { log.Fatalf("Failed to run find query: %v", err) } defer cur.Close(ctx) for cur.Next(ctx) { var result bson.M err := cur.Decode(&result) log.Printf("Returned: %v", result) if err != nil { log.Fatal(err) } } if err := cur.Err(); err != nil { log.Fatal(err) } }
Java

Le code suivant montre comment se connecter à Amazon DocumentDB à l'aide de Java lorsqu'il TLS est désactivé.

package com.example.documentdb; import com.mongodb.MongoClient; import com.mongodb.MongoClientURI; import com.mongodb.ServerAddress; import com.mongodb.MongoException; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; import com.mongodb.client.MongoCollection; import org.bson.Document; public final class Main { private Main() { } public static void main(String[] args) { String template = "mongodb://%s:%s@%s/sample-database?replicaSet=rs0&readpreference=%s"; String username = "<sample-user>"; String password = "<password>"; String clusterEndpoint = "sample-cluster.node.us-east-1.docdb.amazonaws.com:27017"; String readPreference = "secondaryPreferred"; String connectionString = String.format(template, username, password, clusterEndpoint, readPreference); MongoClientURI clientURI = new MongoClientURI(connectionString); MongoClient mongoClient = new MongoClient(clientURI); MongoDatabase testDB = mongoClient.getDatabase("sample-database"); MongoCollection<Document> numbersCollection = testDB.getCollection("sample-collection"); Document doc = new Document("name", "pi").append("value", 3.14159); numbersCollection.insertOne(doc); MongoCursor<Document> cursor = numbersCollection.find().iterator(); try { while (cursor.hasNext()) { System.out.println(cursor.next().toJson()); } } finally { cursor.close(); } } }
C# / .NET

Le code suivant montre comment se connecter à Amazon DocumentDB à l'aide de C#/. NETquand TLS est désactivé.

using System; using System.Text; using System.Linq; using System.Collections.Generic; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Net.Security; using MongoDB.Driver; using MongoDB.Bson; namespace CSharpSample { class Program { static void Main(string[] args) { string template = "mongodb://{0}:{1}@{2}/sampledatabase?replicaSet=rs0&readpreference={3}"; string username = "<sample-user>"; string password = "<password>"; string clusterEndpoint = "sample-cluster.node.us-east-1.docdb.amazonaws.com:27017"; string readPreference = "secondaryPreferred"; string connectionString = String.Format(template, username, password, clusterEndpoint, readPreference); var settings = MongoClientSettings.FromUrl(new MongoUrl(connectionString)); var client = new MongoClient(settings); var database = client.GetDatabase("sampledatabase"); var collection = database.GetCollection<BsonDocument>("samplecollection"); var docToInsert = new BsonDocument { { "pi", 3.14159 } }; collection.InsertOne(docToInsert); } } }
mongo shell

Le code suivant montre comment se connecter à Amazon DocumentDB et l'interroger à l'aide du shell mongo lorsqu'il est TLS désactivé.

  1. Connectez-vous à Amazon DocumentDB avec le shell mongo.

    mongo --host mycluster.node.us-east-1.docdb.amazonaws.com:27017 --username <sample-user> --password <password>
  2. Insérez un document unique.

    db.myTestCollection.insertOne({'hello':'Amazon DocumentDB'})
  3. Recherchez le document qui a été inséré précédemment.

    db.myTestCollection.find({'hello':'Amazon DocumentDB'})
R

Le code suivant montre comment se connecter à Amazon DocumentDB avec R à l'aide de mongolite (https://jeroen.github.io/mongolite/) lorsque cette fonction est désactivée. TLS

#Include the mongolite library. library(mongolite) #Create a MongoDB client, open a connection to Amazon DocumentDB as a replica # set and specify the read preference as secondary preferred client <- mongo(url = "mongodb://<sample-user>:<password>@sample-cluster.node.us-east-1.docdb.amazonaws.com:27017/sample-database?readPreference=secondaryPreferred&replicaSet=rs0") ##Insert a single document str <- c('{"hello" : "Amazon DocumentDB"}') client$insert(str) ##Find the document that was previously written client$find()
Ruby

Le code suivant montre comment se connecter à Amazon DocumentDB avec Ruby lorsque cette option TLS est désactivée.

require 'mongo' require 'neatjson' require 'json' client_host = 'mongodb://sample-cluster.node.us-east-1.docdb.amazonaws.com:27017' client_options = { database: 'test', replica_set: 'rs0', read: {:secondary_preferred => 1}, user: '<sample-user>', password: '<password>', retry_writes: false } begin ##Create a MongoDB client, open a connection to Amazon DocumentDB as a ## replica set and specify the read preference as secondary preferred client = Mongo::Client.new(client_host, client_options) ##Insert a single document x = client[:test].insert_one({"hello":"Amazon DocumentDB"}) ##Find the document that was previously written result = client[:test].find() #Print the document result.each do |document| puts JSON.neat_generate(document) end end #Close the connection client.close