2 Trabajando con Amazon DocumentDB desde mi local

March 21, 2023
Fundamentals

2 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:


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:

  1. 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"
}


-- CODE language-js --

// this is a js script

function foo() {}

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 

*(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


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


aws ec2 authorize-security-group-ingress --group-id sg-031f86d07f253eacf --protocol tcp --port 27018 --cidr 190.236.xxx.xxx


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


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



  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


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:






  1. Autenticación


Opcional:

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




  1. SSH tunnel:





  1. SSL Certificate (en caso sea):


(Advanced Options)

Invalid Hostnames: Allowed


  1. Test final de conexión:





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



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


Carlos Cortez

Founder of AWS UG Perú official community. Certified With 7+ years of experience in AWS, Educating people in Cloud computing is my passion so I’m creating different ways to enhance cloud skills and have fun at the same time in Perú. Host of my own Podcast Imperio Cloud and DeepFridays for AI Learning video series. I’m a System Engineer and Data Analytics Certified at MIT Sloan Global Program in Boston. Selected to be part of AWS Community Builder for ML. Founder of CENNTI Cloud to help peruvian companies in their difficult journey to the cloud and developing ML/AI solutions to fight COVID-19 and health related applications. Now Working as Senior Cloud Architect at DB Solutions in Chile.

Heading

Suscríbete para siempre estar Al día con AWS

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form