Configura tu línea de comandos para trabajar con AWS

Comparte!

Primero que todo, este artículo está enfocado al uso de la línea de comandos de Amazon Web Services específicamente para la Terminal de macOS, pero con leves variaciones es aplicable para cualquier consola de comandos de sistemas basados en Unix. Abarcaré desde la instalación de las herramientas para la consola, como la autenticación con tu cuenta AWS y algunos tips.

Requisitos

  1. Gestor de paquetes brew
  2. Paquete awscli
  3. Claves de acceso AWS

 

Brew

En macOS que todo es más fácil con Brew, es un hecho.
Para instalar la línea de comandos de AWS en tu Mac, deberás instalar este gestor de paquetes,
Esto lo puedes lograr ejecutando esta único comando,
/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

Más información la puedes encontrar en el siguiente enlace https://brew.sh/index_es

De lo contrario puedes seguir al siguiente paso,

Paquete awscli

Para instalar este paquete en tu línea de comandos tienes 2 alternativas, hacerlo mediante Brew, lo cual se limita solamente a ejecutar en tu consola el siguiente comando,

brew install awscli

Sino puedes seguir el paso a paso oficial que indica Amazon para hacerlo sin Brew.
https://docs.aws.amazon.com/cli/latest/userguide/install-macos.html

Claves de acceso

En este último paso ingresa a la consola web de Amazon Web Services,

  1. Ingresa a https://console.aws.amazon.com y accede a tu cuenta con tus credenciales
  2. En el menú de tu cuenta entra a la opción My Security Credentials (Mis credenciales de seguridad). Y entra a la configuración de tu cuenta IAM. Ahí podrás encontrar el formulario para crear nuevas credenciales de acceso para asignar a tu línea de comandos.
  3. En la pestaña Credenciales de AWS IAM, busca y haz clic sobre el botón que dice Crear una clave de acceso
  4. Se abrirá una ventana modal emergente. En ella encontrarás tu ID de clave de acceso (aws_access_key_id) y tu clave de acceso secreta (aws_secret_access_key) que luego podrás utilizar para autenticar todas tus solicitudes desde la consola.

Como medida de respaldo te recomiendo que hagas clic sobre “Descargar archivo .csv” de esa manera podrás guardar tus credenciales en algún lugar seguro de tu computador.

Configura tu línea de comandos

Puedes comenzar por abrir una nueva pestaña de la consola y ejecutar el siguiente conjunto de comandos,
sudo aws configure set aws_access_key_id “AKIAIQHFHRNDLSZY4BVA”
sudo aws configure set aws_secret_access_key “bLawsnKiQFYMIvITJTb+HastKSmh9wtYeQuRof6N”
sudo aws configure set region {Reemplaza por la región en la que quieres trabajar de AWS}

Este es el listado de regiones y sus códigos,

Código Nombre
us-east-1 US East (N. Virginia)
us-east-2 US East (Ohio)
us-west-1 US West (N. California)
us-west-2 US West (Oregon)
ca-central-1 Canada (Central)
eu-central-1 EU (Frankfurt)
eu-west-1 EU (Ireland)
eu-west-2 EU (London)
eu-west-3 EU (Paris)
eu-north-1 EU (Stockholm)
ap-northeast-1 Asia Pacific (Tokyo)
ap-northeast-2 Asia Pacific (Seoul)
ap-northeast-3 Asia Pacific (Osaka-Local)
ap-southeast-1 Asia Pacific (Singapore)
ap-southeast-2 Asia Pacific (Sydney)
ap-south-1 Asia Pacific (Mumbai)
sa-east-1 South America (São Paulo)

Esto creará entradas en los siguientes archivos,

~/.aws/config
En este primer archivo se almacenarán tu ID de clave de acceso (aws_access_key_id) y tu clave de acceso secreta (aws_secret_access_key)

~/.aws/credentials
En el segundo se guardará la región que seleccionaste.

Dato útil es que si usas más de una cuenta y necesitas configurar múltiples credenciales lo puedes hacer mediante los perfiles. Básicamente debes configurar tus credenciales añadiendo –profile cuenta1 o –profile cuenta2 por ejemplo.

Ej.
sudo aws configure set aws_access_key_id “AKIAIQHFHRNDLSZY4BVA” –profile cuenta1



Crear y personalizar la configuración de seguridad

Crear un grupo de seguridad

Para crear una configuración de seguridad (security group) puedes correr el siguiente comando,
create-security-group –description {Ingresa una descripción} –group-name {Ingresa un nombre} –vpc-id {Ingresa el id de la VPC a la que pertenecen tus recursos}

Ej.
create-security-group –description “Grupo de seguridad” –group-name “Grupo 1” –vpc-id “vpc-123a4b6c”

Este comando te arrojará el id del grupo recién creado.
IMPORTANTE: Para saber el id de la VPC de tus instancias EC2 puedes ejecutar,

Ej.
aws ec2 describe-vpcs –profile=cuenta1
El dato que nos interesa es VpcId

Aquí puedes ver mayor información acerca del comando, https://docs.aws.amazon.com/cli/latest/reference/ec2/create-security-group.html

Agregar reglas a tu configuración de seguridad

Mediante el siguiente comando podrás agregar una regla para lograr cosas como,

  • Aislar el acceso de la base de datos exclusivamente desde tu instancia EC2
  • Controlar el acceso SSH a tus instancias EC2 o RDS por ejemplo
  • Acceso HTTP y HTTPS a toda la internet
  • Entre otros

aws ec2 authorize-security-group-ingress –group-name {Ingresa el nombre del grupo} \
–protocol {Ingresa protocolo tcp o udp} –port {Puerto a autorizar} –cidr {IP del host a autorizar en formato v.w.x.y/zz}  –profile cuenta1

Ej. Si quisiéramos autorizar el acceso MySQL debemos abrir el puerto tcp 3306, para el host de ip 106.196.254.55. En este ejemplo solo abarcaremos un solo host, pero recuerda que asignando una máscara de subred inferior a 32, estarías abarcando un rango de ips. Si quisieras dejar abierto el acceso a cualquiera puedes poner 0.0.0.0/32
aws ec2 authorize-security-group-ingress –group-name “Grupo 1” \
–protocol tcp –port 3306 –cidr 106.196.254.55/32  –profile cuenta1

Por si no recuerdas como subnetear, te dejo un enlace donde puedes refrescar la memoria y una calculadora que te puede facilitar las cosas a la hora de obtener la ip de tu subred.

Eliminar una regla de tu configuración de seguridad

De esta manera podrás eliminar una regla mediante la indicación del protocolo, puerto e ip/cidr ingresados en algún momento anteriormente.
aws ec2 revoke-security-group-ingress –group-name {Ingresa el nombre del grupo} \
–protocol{Ingresa protocolo tcp o udp} –port {Puerto a desautorizar} –cidr {IP del host a desautorizar en formato v.w.x.y/zz} –profile cuenta1

Ej. para eliminar la regla anteriormente creada puedes ejecutar lo siguiente,
aws ec2 revoke-security-group-ingress –group-name {Ingresa el nombre del grupo} \
–protocol{Ingresa protocolo tcp o udp} –port {Puerto a desautorizar} –cidr {IP del host a desautorizar en formato v.w.x.y/zz} –profile cuenta1

Eso es todo, cualquier cosa no duden en escribirme.

Comparte!