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

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:

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

This post is also available on DEV.