As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Conexão programática ao Amazon DocumentDB
Esta seção contém exemplos de código que demonstram como se conectar ao Amazon DocumentDB (compativel com MongoDB) usando diversas linguagens diferentes. Os exemplos são separados em duas seções com base no fato de você estar se conectando a um cluster que tenha a Transport Layer Security (TLS) ativada ou desativada. Por padrão, TLS está habilitado nos clusters do Amazon DocumentDB. No entanto, você pode desligar TLS se quiser. Para obter mais informações, consulte Criptografia de dados em trânsito.
Se você estiver tentando se conectar ao Amazon DocumentDB de fora VPC do local em que seu cluster reside, consulte. Conectando-se a um cluster do Amazon DocumentDB de fora da Amazon VPC
Antes de se conectar ao seu cluster, você deve saber se TLS está habilitado no cluster. A próxima seção mostra como determinar o valor do parâmetro tls
do seu cluster usando o AWS Management Console ou a AWS CLI. Depois disso, é possível continuar localizando e aplicando o exemplo de código apropriado.
Tópicos
Determinando o valor do seu tls
parâmetro
Determinar se seu cluster foi TLS ativado é um processo de duas etapas que você pode executar usando o AWS Management Console ou AWS CLI.
-
Descubra qual grupo de parâmetros está regendo de seu cluster.
- Using the AWS Management Console
-
-
No painel de navegação à esquerda, escolha Clusters.
-
Na lista de clusters, selecione o nome do cluster.
-
A página resultante exibe os detalhes do cluster selecionado. Role para baixo até Detalhes do cluster. Na parte inferior dessa seção, localize o nome do grupo de parâmetros sob Grupo de parâmetros de cluster.
- Using the AWS CLI
-
O AWS CLI código a seguir determina qual parâmetro está governando seu cluster. Não se esqueça de substituir
sample-cluster
pelo nome do cluster.aws docdb describe-db-clusters \ --db-cluster-identifier
sample-cluster
\ --query 'DBClusters[*].[DBClusterIdentifier,DBClusterParameterGroup]'A saída dessa operação é semelhante à seguinte:
[ [ "sample-cluster", "sample-parameter-group" ] ]
-
Descubra o valor do parâmetro
tls
no grupo de parâmetros de seu cluster.- Using the AWS Management Console
-
-
No painel de navegação, escolha Grupos de parâmetros.
-
Na janela Cluster parameter groups (Grupos de parâmetros de cluster), selecione o grupo de parâmetros do cluster.
-
A página resultante mostra os parâmetros do grupo de parâmetros do cluster. É possível ver o valor do parâmetro
tls
aqui. Para obter informações sobre como modificar esse parâmetro, consulte Modificando grupos de parâmetros de cluster do Amazon DocumentDB.
-
- Using the AWS CLI
-
Você pode usar o
describe-db-cluster-parameters
AWS CLI comando para visualizar os detalhes dos parâmetros em seu grupo de parâmetros do cluster.-
--describe-db-cluster-parameters
— para listar todos os parâmetros em um grupo de parâmetros e seus valores.-
--db-cluster-parameter-group name
: obrigatório. O nome do grupo de parâmetros de cluster.
-
aws docdb describe-db-cluster-parameters \ --db-cluster-parameter-group-name sample-parameter-group
A saída dessa operação é semelhante à seguinte:
{ "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" } ] }
nota
O Amazon DocumentDB oferece suporte a FIPS 140 a 3 endpoints começando com clusters do Amazon DocumentDB 5.0 (versão do mecanismo 3.0.3727) nas seguintes regiões: ca-central-1, us-west-2, us-east-1, us-east-2, -1, -1. us-gov-east us-gov-west
-
Depois de descobrir o valor do parâmetro tls
, continue a conexão ao cluster usando um dos exemplos de código nas seções a seguir.
Conexão com TLS ativado
Para ver um exemplo de código para se conectar programaticamente a um cluster Amazon TLS DocumentDB habilitado, escolha a guia apropriada para a linguagem que você deseja usar.
Para criptografar dados em trânsito, faça o download da chave pública para Amazon DocumentDB nomeada global-bundle.pem
usando a operação a seguir.
wget https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem
Se seu aplicativo estiver no Microsoft Windows e precisar de um PKCS7 arquivo, você poderá baixar o pacote de PKCS7 certificados. Esse pacote contém os certificados intermediário e raiz em https://truststore.pki.rds.amazonaws.com/global/global-bundle.p7b
- Python
-
O código a seguir demonstra como se conectar ao Amazon DocumentDB usando TLS Python quando está habilitado.
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
-
O código a seguir demonstra como se conectar ao Amazon DocumentDB usando o Node.js TLS quando está habilitado.
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
-
O código a seguir demonstra como se conectar ao Amazon DocumentDB PHP usando TLS when is enabled.
<?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
-
O código a seguir demonstra como se conectar ao Amazon DocumentDB usando Go TLS quando está habilitado.
nota
Desde a versão 1.2.1, o MongoDB Go Driver usará apenas o primeiro certificado de servidor CA encontrado em
sslcertificateauthorityfile
. O código de exemplo abaixo aborda essa limitação anexando manualmente todos os certificados de servidor encontrados emsslcertificateauthorityfile
uma TLS configuração personalizada usada durante a criação do cliente.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
-
Ao se conectar a um cluster Amazon DocumentDB TLS habilitado a partir de um aplicativo Java, seu programa deve usar AWS o arquivo de autoridade de certificação (CA) fornecido para validar a conexão. Para usar o certificado Amazon RDS CA, faça o seguinte:
-
Faça o download do arquivo Amazon RDS CA em https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem
. -
Crie um armazenamento confiável com o certificado da CA contido no arquivo executando os seguintes comandos. Certifique-se de alterar o
<truststorePassword>
para outra coisa. Se estiver acessando um armazenamento confiável que contenha o certificado da CA antigo (rds-ca-2015-root.pem
) e o novo (rds-ca-2019-root.pem
), é possível importar o pacote de certificados para o armazenamento confiável.Veja a seguir um exemplo de script shell que importa o pacote de certificados para um armazenamento confiável em um sistema operacional Linux. No exemplo a seguir, substitua cada
user input placeholder
com suas próprias informações. Mais notavelmente, onde quer que esteja o diretório de exemplo”mydir
“está localizado no script, substitua-o por um diretório que você criou para essa tarefa.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'" doneVeja a seguir um exemplo de script do shell que importa o pacote de certificados em um armazenamento de confiança no 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 -
Use o
keystore
no seu programa definindo as seguintes propriedades do sistema no aplicativo antes de estabelecer uma conexão com o cluster do Amazon DocumentDB.javax.net.ssl.trustStore:
<truststore>
javax.net.ssl.trustStorePassword:<truststorePassword>
-
O código a seguir demonstra como se conectar ao Amazon DocumentDB usando Java TLS quando está habilitado.
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
-
O código a seguir demonstra como se conectar ao Amazon DocumentDB usando C#/. NETquando TLS está habilitado.
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
-
O código a seguir demonstra como se conectar e consultar o Amazon DocumentDB usando o shell TLS mongo quando ativado.
-
Conecte-se ao Amazon DocumentDB com o shell mongo. Se você estiver em uma versão do shell mongo anterior à 4.2, use o código a seguir para conectar-se.
mongo --ssl --host sample-cluster.node.us-east-1.docdb.amazonaws.com:27017 --sslCAFile global-bundle.pem --username
<sample-user>
--password<password>
Se você estiver usando uma versão igual ou superior a 4.2, use o código a seguir para conectar. Não há suporte para gravações repetitivas no AWS DocumentDB. Se você estiver usando o shell mongo legado (não o mongosh), não inclua o
retryWrites=false
comando em nenhuma string de código. Por padrão, as gravações que podem ser repetidas estão desabilitadas. A inclusãoretryWrites=false
pode causar uma falha nos comandos de leitura normal.mongo --tls --host sample-cluster.node.us-east-1.docdb.amazonaws.com:27017 --tlsCAFile global-bundle.pem --username
<sample-user>
--password<password>
-
Insira um único documento.
db.myTestCollection.insertOne({'hello':'Amazon DocumentDB'})
-
Encontre o documento inserido anteriormente.
db.myTestCollection.find({'hello':'Amazon DocumentDB'})
-
- R
-
O código a seguir demonstra como se conectar ao Amazon DocumentDB com R usando mongolite https://jeroen.github.io/mongolite/
() quando está habilitado. 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
-
O código a seguir demonstra como se conectar ao Amazon DocumentDB com Ruby TLS quando está habilitado.
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
Conectando-se com TLS pessoas com deficiência
Para ver um exemplo de código para conexão programática a um cluster Amazon TLS DocumentDB desativado, escolha a guia do idioma que você deseja usar.
- Python
-
O código a seguir demonstra como se conectar ao Amazon DocumentDB usando TLS Python quando ele está desativado.
## 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
-
O código a seguir demonstra como se conectar ao Amazon DocumentDB usando o Node.js TLS quando está desativado.
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
-
O código a seguir demonstra como se conectar ao Amazon DocumentDB PHP usando TLS when está desativado.
<?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
-
O código a seguir demonstra como se conectar ao Amazon DocumentDB usando Go TLS quando está desativado.
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
-
O código a seguir demonstra como se conectar ao Amazon DocumentDB usando Java TLS quando está desativado.
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
-
O código a seguir demonstra como se conectar ao Amazon DocumentDB usando C#/. NETquando TLS está desativado.
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
-
O código a seguir demonstra como se conectar e consultar o Amazon DocumentDB usando o shell TLS mongo quando ele está desativado.
-
Conecte-se ao Amazon DocumentDB com o shell mongo.
mongo --host
mycluster.node.us-east-1
.docdb.amazonaws.com:27017 --username<sample-user>
--password<password>
-
Insira um único documento.
db.myTestCollection.insertOne({'hello':'Amazon DocumentDB'})
-
Encontre o documento inserido anteriormente.
db.myTestCollection.find({'hello':'Amazon DocumentDB'})
-
- R
-
O código a seguir demonstra como se conectar ao Amazon DocumentDB com R usando mongolite https://jeroen.github.io/mongolite/
() quando está desativado. 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
-
O código a seguir demonstra como se conectar ao Amazon DocumentDB com Ruby TLS quando ele está desativado.
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