Trabajando con Amazon DocumentDB desde mi local

ccortezb

Carlos Cortez 🇵🇪 [AWS Hero]

Posted on March 30, 2021

Trabajando con Amazon DocumentDB desde mi local

Hoy vamos a continuar con la 2da parte de las series de Aprendiendo DocumentDB en AWS, Si aún no has visto la 1ra parte, ve aquí: https://www.cortez.cloud/blog/primeros-pasos-con-amazon-documentdb-y-aws-cli

Siempre es importante trabajar localmente, y casi siempre se cometen errores y descuidos que hacen que nuestros ambientes de desarrollo estén expuestos a conexiones locales inseguras. Para ello vamos a asegurar nuestra conexión poco a poco, y en este post aprenderemos a usar las herramientas que nos permitirán una mejor administración de nuestra instancia.

En el anterior post, explicamos cómo crear un cluster e instancias de DocumentDB con AWS CLI, así que partamos desde allí y veamos cómo trabajar localmente con ello.

Usando Robo3T (Ex Robomongo)

Primero que todo veamos la arquitectura esencial y más eficiente para trabajar con DocumentDB:

Alt Text

Me conecto desde mi escritorio y voy instalando Robo3T y mongodb client 3.6 (funciona para mac, windows, linux)

https://robomongo.org/download

Bonita arquitectura, pero ¿Qué es un Bastion Host?

Es un servidor puente, en el cual usaremos recursos para poder saltar a otras partes de la red. En este caso, lo usaremos para saltar de una red pública a una privada que es dónde estará docdb.

Ejemplo:
un EC2, una máquina virtual, una droplet, etc

Veamos paso a paso, cómo configurar desde cero mi conexión hacia mi cluster

  1. Crear un ec2 como bastion Host:

    Ya hemos visto cómo usar la CLI, así que hagamos lo siguiente y creemos un EC2, Security groups y agreguemos permisos para poder acceder desde la IP que tengas en casa:

$ aws ec2 create-security-group --group-name docdb --description "docdb" --vpc-id  vpc-81a06de4
{
    "GroupId": "sg-031f86d07f253eacf"
}
Enter fullscreen mode Exit fullscreen mode

Ahora, verifica tu IP Pública, también por cli, somos unos fanáticos de la cli ahora!

curl https://checkip.amazonaws.com
190.236.xxx.xxx 
Enter fullscreen mode Exit fullscreen mode

*(usa tu propio resultado para las siguientes líneas..)

Agreguemos estas reglas en nuestro nuevo SG para luego poder usarlo en el bastion host EC2:

Abrir puerto 22

aws ec2 authorize-security-group-ingress --group-id sg-031f86d07f253eacf --protocol tcp --port 22 --cidr 190.236.xxx.xxx
Enter fullscreen mode Exit fullscreen mode

Abrir puerto 27017 y 27018 (mongodb y adicional para el bastion host)

aws ec2 authorize-security-group-ingress --group-id sg-031f86d07f253eacf --protocol tcp --port 27017 --cidr 190.236.xxx.xxx
Enter fullscreen mode Exit fullscreen mode
aws ec2 authorize-security-group-ingress --group-id sg-031f86d07f253eacf --protocol tcp --port 27018 --cidr 190.236.xxx.xxx
Enter fullscreen mode Exit fullscreen mode

habilitar acceso de mongodb hacia sí mismo:

aws ec2 authorize-security-group-ingress --group-id sg-031f86d07f253eacf --protocol tcp --port 27017 --source-group
 sg-031f86d07f253eacf
Enter fullscreen mode Exit fullscreen mode

Creamos ahora la instancia:

$ aws ec2 run-instances --image-id ami-067f5c3d5a99edc80 --count 1 --instance-type t2.micro --key-name ~/llaves/docdb-ccortez.pem --security-group-ids sg-031f86d07f253eacf --subnet-id subnet-6d558c08
Enter fullscreen mode Exit fullscreen mode
  1. Configuramos SSH tunnel para poder habilitar o deshabilitar cuando queramos:
sudo vim .ssh/config

Host tunnel
HostName 52.89.199.68
User ec2-user
IdentitiesOnly yes
IdentityFile ~/llaves/docdb-ccortez.pem
LocalForward 27018 docdb-001.cluster-cgyttffk8nhp.us-west-2.docdb.amazonaws.com:27017:27017
Enter fullscreen mode Exit fullscreen mode

También es posible crear un bashero ejecutable aparte para no sobreescribir el archivo ~/.ssh/config

OJO: puedes refrescar, borrar caché o abrir una terminal nueva para renovar la conexión del túnel en caso tengas problemas para abrirlo, o te aparezca algún error.

  1. Iniciamos nuestra conexión con Robo3T, así, en la 1ra pestaña,

Config inicial:

Alt Text

  1. Autenticación

Opcional:
Database: admin (no vamos a poder ver la base de datos admin pero si todas las demás)

Alt Text

  1. SSH tunnel:

Alt Text

  1. SSL Certificate (en caso sea):

(Advanced Options)
Invalid Hostnames: Allowed

Alt Text

  1. Test final de conexión:

Alt Text

  1. En caso sea un cluster creado sin SSL: (opcional, en este ejemplo usé otro cluster que creé sin SSH llamado docdb2)

Alt Text

Conclusiones:

Conectarse a Docdb es fácil, y seguro.
Nos incentiva a crear arquitecturas más seguras, a usar más la capa privada para las bases de datos.
Con estos tutoriales, irás aprendiendo a usar una base de datos NoSQL desde cero.

Próximos pasos

En el próximo post, empezaremos con las migraciones hacia Amazon DocumentDB con AWS DMS.

Aún necesitamos ahondar más en la seguridad y los accesos, así como seguir aprendiendo más de AWS CLI.

Suscríbete a mi canal, Breaking the Cloud y Al día con AWS en https://cortez.cloud
Si te gustó este post, dale un like, comparte y comenta.
⭐Suscríbete a mi canal : http://bit.ly/aldiaconaws

🔥🔥 Sígueme en mis redes 🔥🔥

🦜 Mi Twitter: https://twitter.com/ccortezb

📺 Youtube Channel: Al día con AWS / Breaking The Cloud: http://bit.ly/aldiaconaws

📺 AWS Perú Community AWS UG Perú Oficial: https://www.youtube.com/awsusergroupperuoficial

📟 Mi Facebook: https://www.facebook.com/ccortezb/

🤳 Mi Instagram: ccortezbazan

📜 Mis cursos de AWS: https://cennticloud.thinkific.com

🕮 Mi blog — https://cortez.cloud

🔥🔥 Acerca de mí 🔥🔥

https://www.cortez.cloud/whoami

Les presento mi pequeña web personal https://www.Cortez.Cloud llamado “Breaking the Cloud”.

Seguiré creando contenido cada semana de AWS sobre Al/ML, Serverless, Security y como romper las reglas!

También mis próximas iniciativas, talleres, cursos, videos gratuitos, awsugperu y más.

aws #breakingthecloud

💖 💪 🙅 🚩
ccortezb
Carlos Cortez 🇵🇪 [AWS Hero]

Posted on March 30, 2021

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related