Prefacio

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

La gran mayoría de las cargas de trabajo irán a la nube. Sólo estamos al principio: aún queda mucho por hacer.

Andy Jassy

El uso de la nube ha ido ganando adeptos entre las empresas y las pequeñas empresas durante la última década y sigue acelerándose. Según Gartner, el mercado mundial de servicios de infraestructura como servicio (IaaS) en la nube pública crecerá un 40,7% en 2020. El rápido crecimiento de la nube ha provocado una enorme demanda de conocimientos sobre la nube por parte de muchas organizaciones. Muchos profesionales de TI comprenden los conceptos básicos de la nube, pero quieren sentirse más cómodos trabajando en ella. Este desfase entre la oferta y la demanda de conocimientos sobre la nube representa una gran oportunidad para que las personas suban de nivel en su carrera.

Gracias a nuestros más de 20 años combinados de experiencia en la nube, hemos tenido la ventaja de trabajar en proyectos de Amazon Web Services (AWS) en muchas funciones diferentes. Hemos orientado a cientos de desarrolladores sobre cómo y cuándo utilizar los servicios de AWS. Esto nos ha permitido comprender los retos comunes y las victorias fáciles de la nube. Nos gustaría compartir estas lecciones contigo y darte una ventaja para tu propio avance. Escribimos este libro para compartir algunos de nuestros conocimientos y permitirte adquirir rápidamente habilidades útiles para trabajar en la nube. Esperamos que utilices este libro como material de referencia durante muchos años.

A quién va dirigido este libro

Este libro es para desarrolladores, ingenieros y arquitectos de todos los niveles, desde principiantes hasta expertos. Los principiantes aprenderán los conceptos de la nube y se sentirán cómodos trabajando con servicios en la nube. Los expertos podrán examinar el código utilizado para levantar los cimientos de las recetas, explorar nuevos servicios y obtener perspectivas adicionales. Si la plétora de servicios y combinaciones en la nube te parece abrumadora, este libro es para ti. Las recetas de este libro pretenden proporcionar pruebas de concepto "Hola, mundo" y componentes de aplicaciones de nivel empresarial. Esto se logrará utilizando casos de uso comunes con recorridos guiados de escenarios que puedes aplicar directamente a tu trabajo actual o futuro. Estas recetas curadas y creadoras de experiencia pretenden desmitificar los servicios y aportarán valor de inmediato, independientemente de tu nivel de experiencia en AWS.

Lo que aprenderás

Además de abrirte nuevas oportunidades profesionales, ser capaz de aprovechar el poder de AWS te dará la posibilidad de crear potentes sistemas y aplicaciones que resuelvan muchos problemas interesantes y exigentes de nuestro mundo actual. ¿Te gustaría gestionar 60.000 ciberamenazas por segundo utilizando el aprendizaje automático de AWS como hace Siemens? ¿O reducir la huella on-premise de tu organización y ampliar su uso de microservicios como ha hecho Capital One? Si es así, los ejemplos prácticos de este libro te ayudarán a agilizar tu aprendizaje proporcionándote ejemplos tangibles que muestran cómo puedes unir los componentes básicos de AWS para formar soluciones prácticas que aborden escenarios comunes. El modelo de consumo bajo demanda, la enorme capacidad, las capacidades avanzadas y la huella global de la nube crean nuevas posibilidades que es necesario explorar.

Las recetas

Dividimos el libro en capítulos que se centran en áreas generales de la tecnología (por ejemplo, seguridad, redes, inteligencia artificial, etc.). Las recetas contenidas en los capítulos son del tamaño de un bocado, autocontenidas y fáciles de consumir. Las recetas varían en longitud y complejidad. Cada receta tiene un planteamiento del problema, una solución (con diagrama) y una discusión. Los enunciados de los problemas están bien definidos para evitar confusiones. Las soluciones contienen la preparación y los pasos necesarios para guiarte a través del trabajo necesario para lograr el objetivo. Cuando proceda, se proporcionarán comprobaciones de validación explícitas. También hemos añadido retos adicionales a las recetas para ayudarte a avanzar en tu aprendizaje si así lo deseas. Por último, terminamos cada receta con un breve debate para ayudarte a comprender la solución y por qué es importante, sugerencias para ampliar la solución y formas de utilizarla para lograr un impacto real.

Nota

Para mantener tu factura de AWS baja y tu cuenta ordenada, cada receta tiene pasos de limpieza proporcionados en los repositorios asociados al libro.

Cada capítulo tiene su propio repositorio en https://github.com/awscookbook. El repositorio contiene los pasos de preparación para copiar y pegar fácilmente, los archivos necesarios y la infraestructura como código. También hemos creado plantillas de GitHub para informar de errores y sugerir nuevas recetas. Te animamos a que aproveches GitHub para enviar problemas, crear solicitudes de nuevas recetas y enviar tus propios pull requests. Mantendremos activamente los repositorios de los capítulos con actualizaciones de los pasos de las recetas y del código en los archivos README de cada receta. Asegúrate de comprobarlos para ver si hay enfoques nuevos o alternativos. Esperamos interactuar contigo en GitHub con nuevos retos divertidos y pistas para ayudarte.

Algunas recetas están "construidas desde cero", y otras incluyen pasos de preparación para permitirte interactuar con escenarios comunes que se ven en el mundo real. Hemos proporcionado código para que puedas implementar fácilmente los requisitos previos. Por ejemplo, la Receta 6.5, supone que eres un desarrollador de contenedores que está creando la implementación de una aplicación que requiere una pila de red existente. Cuando existen requisitos previos, se pueden "precocinar" con pasos de preparación utilizando el código proporcionado en los repositorios. Cuando sea necesaria una preparación sustancial para una receta, utilizarás el Kit de desarrollo en la nube de AWS (CDK), que es una herramienta fantástica para definir y declarar la infraestructura de forma inteligente. La mayoría de las recetas se basan en la CLI; cuando es apropiado, utilizamos recorridos por la consola que incluyen capturas de pantalla o texto descriptivo.

Nota

Hay muchas formas de conseguir resultados similares en AWS; este libro no será una lista exhaustiva. Muchos factores dictarán la mejor solución global para tu caso de uso. Hemos seleccionado temas de recetas para ayudarte a conocer AWS y a tomar las mejores decisiones para tus necesidades específicas.

Encontrarás recetas de cosas como las siguientes:

  • Redactar información personal identificable (IPI) de texto utilizando Amazon Comprehend

  • Automatizar la rotación de contraseñas para bases de datos de Amazon Relational Database Service (RDS)

  • Utilizar VPC Reachability Analyzer para verificar y solucionar problemas en las rutas de red

Junto con las recetas, también proporcionamos breves líneas de código en el Apéndice que realizarán rápidamente tareas valiosas y rutinarias. Creemos que son buenas ideas para añadir a tu caja de herramientas de la nube.

Advertencia

AWS tiene una capa gratuita, pero poner en práctica las recetas de este libro podría conllevar costes. Proporcionamos instrucciones de limpieza, pero tú eres responsable de cualquier coste en tu cuenta. Te recomendamos que consultes los Well-Architected Labs desarrollados por AWS sobre el conocimiento de los gastos y el aprovechamiento de las acciones de AWS Budgets para controlar los costes.

Qué necesitarás

Aquí tienes los requisitos para empezar y algunos consejos sobre dónde encontrar ayuda:

  • Cuenta AWS

  • Ordenador personal/portátil

  • Software

    • Navegador web (por ejemplo, Microsoft Edge, Google Chrome o Mozilla Firefox)

    • Terminal con bash o shell Z (Zsh)

    • Git

    • Homebrew (opcional pero recomendado para instalar otros requisitos)

    • Editor de código (por ejemplo, VSCodium o AWS Cloud9)

      • Instalación recomendada: brew install --cask vscodium

    • CLI de AWS versión 2 (2.1.26 o posterior)

    • Python 3.7.9 (y pip) o posterior

      • Ejemplo de instalación: brew install python@3.7

    • Kit de desarrollo en la nube de AWS versión 2.0 o posterior

      • Guía de inicio

      • Instalación recomendada: brew install npm y npm i -g aws-cdk@next

  • Recomendado: Crea una carpeta en tu directorio personal llamada AWSCookbook. Esto te permitirá clonar el repositorio de cada capítulo en un solo lugar:

    AWSCookbook:$ tree -L 1
    .
    ├── AccountManagement
    ├── ArtificialIntelligence
    ├── BigData
    ...
Nota

En el momento de la publicación, el CDK de AWS tiene dos versiones: la versión 1 y la versión 2 (vista previa para desarrolladores). El código que hemos proporcionado está escrito para la versión 2. Puedes encontrar más información sobre cómo migrar e instalar la versión 2 del CDK en este artículo sobre el CDK v2 de AWS.

Cómo empezar

Esta sección proporciona ejemplos de técnicas y enfoques que realizamos a lo largo del libro para que los pasos de la receta sean más fáciles de seguir. Puedes saltarte estos temas si te sientes cómodo con ellos. Siempre puedes volver y consultar esta sección.

Configuraciones

Además de la instalación de los requisitos previos enumerados anteriormente, necesitarás los siguientes accesos.

Configuración de la cuenta AWS

Necesitarás un usuario con permisos administrativos. Algunas de las recetas requieren la capacidad de crear recursos de AWS Identity and Access Management (IAM). Puedes seguir la guía de AWS para crear tu primer usuario y grupo de usuarios administradores de IAM.

Pasos generales de configuración de la estación de trabajo para las recetas CLI

Hemos creado un grupo de repositorios de código disponibles en https://github.com/awscookbook. Crea una carpeta llamada AWSCookbook en tu directorio personal (o en cualquier lugar de tu elección) y cd allí:

mkdir ~/AWSCookbook && cd ~/AWSCookbook

Esto te permitirá consultar los repositorios de los capítulos (por ejemplo, Seguridad):

git clone https://github.com/AWSCookbook/Security

Establece y exporta tu Región por defecto en tu terminal:

export AWS_REGION=us-east-1
Consejo

AWS ofrece muchas Regiones en todo el mundo para las Implementaciones en la nube. Utilizaremos la Región us-east-1 por simplicidad. Mientras los servicios estén disponibles, no hay razón para que estas recetas no funcionen en otras Regiones. AWS tiene una lista de Regiones y servicios.

Configura tu AWS ACCOUNT_ID analizando la salida de la operación aws sts get-caller-identity:

AWS_ACCOUNT_ID=$(aws sts get-caller-identity \
     --query Account --output text)
Nota

La operación aws sts get-caller-identity "devuelve detalles sobre el usuario o rol IAM cuyas credenciales se utilizan para llamar a la operación".

Valida la configuración y el acceso a la interfaz de línea de comandos de AWS (CLI de AWS):

aws ec2 describe-instances

Si no tienes ninguna instancia EC2 implementada, deberías ver un resultado similar al siguiente:

{
  "Reservations": []
}
Nota

La versión 2 de la CLI de AWS enviará por defecto la salida del comando con varias líneas a less en tu terminal. Puedes escribir q para salir. Si quieres anular este comportamiento, puedes modificar tu archivo ~/.aws/config para eliminar esta funcionalidad por defecto.

Consejo

AWS CloudShell es un terminal basado en navegador que puedes utilizar para crear rápidamente un entorno de terminal en tu sesión autenticada de la consola de AWS desde el que ejecutar comandos de la CLI de AWS. Por defecto, utiliza la identidad de tu sesión de navegador para interactuar con las API de AWS. Muchas de las recetas pueden ejecutarse utilizando CloudShell. Puedes utilizar CloudShell para ejecutar pasos de recetas, comandos de limpieza y otros comandos de la CLI de AWS como tu usuario autenticado, si no quieres crear una sesión que utilices en tu propio entorno de terminal local en tu estación de trabajo.

Técnicas y enfoques utilizados en este libro

Las siguientes secciones explicarán y darán ejemplos de algunas formas de utilizar la CLI para ayudarte con las recetas.

Consulta de salidas, variables de entorno y sustitución de comandos

A veces, cuando los comandos posteriores dependen de las salidas del comando que estás ejecutando en ese momento. La CLI de AWS ofrece la posibilidad de filtrar la salida del lado del cliente. A veces, estableceremos variables de entorno que contengan estas salidas aprovechando la sustitución de comandos.

Combinaremos estas tres técnicas para facilitarte las cosas a medida que avanzas por los pasos del libro. He aquí un ejemplo:

Utiliza el Servicio de tokens de seguridad de AWS (AWS STS) para recuperar tu nombre de recurso de Amazon (ARN) de usuario (o rol) de IAM con la CLI de AWS:

aws sts get-caller-identity

Deberías ver una salida similar a la siguiente:

{
  "UserId": "EXAMPLE",
  "Account": "111111111111",
  "Arn": "arn:aws:iam::111111111111:user/UserName"
}

A continuación se muestra un ejemplo de consulta del valor ARN y su salida al terminal:

aws sts get-caller-identity --query Arn --output text

Deberías ver una salida similar a la siguiente:

arn:aws:iam::111111111111:user/UserName

Busca el valor ARN y establécelo como variable de entorno utilizando la sustitución de comandos:

PRINCIPAL_ARN=$(aws sts get-caller-identity --query Arn --output text)

Para comprobar el valor de una variable de entorno, por ejemplo, puedes echo en el terminal:

echo $PRINCIPAL_ARN

Deberías ver una salida similar a la siguiente:

arn:aws:iam::111111111111:user/UserName
Consejo

Utilizar la bandera --dry-run es siempre una buena idea cuando se realiza una operación que introduce cambios; por ejemplo, aws ec2 create-vpc --dry-run --cidr-block 10.10.0.0/16.

Sustitución de valores en los archivos de plantilla proporcionados

Siempre que ha sido posible, para simplificarte la experiencia de aprendizaje, hemos proporcionado archivos de plantilla en los repositorios de código del capítulo que puedes utilizar como punto de partida como entrada para algunos de los comandos que ejecutarás en los pasos de la receta. Por ejemplo, cuando creas una configuración de AWS CodeDeploy en la Receta 6.5, proporcionamos codedeploy-template.json con AWS_ACCOUNT_ID, PROD_LISTENER_ARNy TEST_LISTENER_ARN en el archivo JSON. Esperamos que sustituyas estos valores de marcador de posición y guardes el archivo como codedeploy.json.

Para simplificar aún más tu experiencia, si sigues exactamente los pasos y los guardas en variables de entorno, puedes utilizar el comando sed para sustituir los valores. Siempre que sea posible, te proporcionamos un comando para hacerlo, como este ejemplo del Capítulo 6:

Utiliza el comando sed para sustituir los valores por las variables de entorno que has exportado con el script helper.py:

sed -e "s/AWS_ACCOUNT_ID/${AWS_ACCOUNT_ID}/g" \
     -e "s|PROD_LISTENER_ARN|${PROD_LISTENER_ARN}|g" \
     -e "s|TEST_LISTENER_ARN|${TEST_LISTENER_ARN}|g" \
     codedeploy-template.json > codedeploy.json

Contraseñas

Durante algunos de los pasos de las recetas, crearás contraseñas y las guardarás temporalmente como variables de entorno para utilizarlas en pasos posteriores. Asegúrate de desactivar las variables de entorno siguiendo los pasos de limpieza cuando termines la receta. Utilizamos este método para simplificar la comprensión. Un método más seguro (como el de la Receta 1.8) debería utilizarse en entornos de producción aprovechando AWS Secrets Manager.

Generación

Puedes utilizar AWS Secrets Manager a través de la CLI de AWS para generar contraseñas con requisitos específicos. Un ejemplo del Capítulo 4 tiene este aspecto:

ADMIN_PASSWORD=$(aws secretsmanager get-random-password \
     --exclude-punctuation \
     --password-length 41 --require-each-included-type \
     --output text \
     --query RandomPassword)

Uso y almacenamiento

En entornos de producción, debes utilizar AWS Secrets Manager o AWS Systems Manager Parameter Store (utilizando cadenas seguras) con políticas IAM para controlar quién y qué puede acceder a los secretos. Para simplificar, algunas de las políticas de contraseñas y secretos utilizadas en las recetas podrían no estar tan bloqueadas desde el punto de vista de las políticas como desearías en un entorno de producción. Asegúrate siempre de escribir tus propias políticas IAM para controlar este comportamiento en la práctica.

Sufijos aleatorios

Generamos muchos sufijos aleatorios cuando tratamos con servicios globales como Amazon S3. Son necesarios porque los nombres de los cubos de S3 tienen que ser globalmente únicos en toda la base de clientes de AWS. El Gestor de Secretos puede utilizarse a través de la CLI para generar una cadena que satisfaga la convención de nomenclatura y añada este elemento aleatorio para garantizar que todos los lectores del libro puedan crear recursos y seguirlos utilizando los mismos comandos:

RANDOM_STRING=$(aws secretsmanager get-random-password \
     --exclude-punctuation --exclude-uppercase \
     --password-length 6 --require-each-included-type \
     --output text \
     --query RandomPassword)

También puedes utilizar cualquier otra utilidad para generar cadenas aleatorias. Es posible que prefieras algunas herramientas locales.

Kit de desarrollo de la nube de AWS y helper.py

Un buen punto de partida es la guía "Primeros pasos con el CDK de AWS". Una vez que tengas instalado el CDK 2.0, si es la primera vez que utilizas el CDK de AWS, tendrás que arrancar con la Región en la que estés trabajando con el conjunto de herramientas del CDK de AWS:

cdk bootstrap aws://$AWS_ACCOUNT_ID/$AWS_REGION

Utilizamos el CDK de AWS cuando es necesario a lo largo del libro para darte la posibilidad de implementar un escenario coherente que se ajuste al planteamiento del problema que ves en la receta. También puedes optar por ejecutar los pasos de la receta en tus propios entornos existentes, siempre que dispongas de las variables de entrada necesarias para los pasos de la receta. Si las cosas no funcionan en tu entorno, puedes poner en marcha el entorno proporcionado y comparar.

El código CDK que incluimos en los repositorios implementa recursos utilizando el servicio AWS CloudFormation, y escribimos variables de salida que utilizas en los pasos de la receta. Creamos un script de Python llamado helper. py que puedes ejecutar en tu terminal para tomar la salida de CloudFormation y establecer variables locales para que los pasos de la receta sean más fáciles de seguir -en la mayoría de los casos, incluso copiar y pegar-.

Un ejemplo de conjunto de comandos para la implementación del código CDK de una receta, después de consultar el repositorio del capítulo 4, tiene el siguiente aspecto:

cd 401-Creating-an-Aurora-Serverless-DB/cdk-AWS-Cookbook-401/
test -d .venv || python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip setuptools wheel
pip install -r requirements.txt
cdk deploy

Puedes copiar y pegar fácilmente el código anterior desde la raíz del repositorio del capítulo (suponiendo que tengas Python, pip y CDK instalados como requisitos previos) para implementar el escenario que abordará la solución en los pasos de solución de la receta.

La herramienta helper.py que hemos creado puede ejecutarse en tu terminal una vez finalizado el cdk deploy:

python helper.py

Deberías ver una salida que puedes copiar y pegar en tu terminal para establecer variables de entorno a partir de las salidas de la pila CDK CloudFormation:

$ python helper.py
Copy and paste the commands below into your terminal
ROLE_NAME='cdk-aws-cookbook-108-InstanceSS1PK7LB631QYEF'
INSTANCE_ID='random string here'
Nota

Por último, un recordatorio de que, aunque trabajamos para AWS, las opiniones expresadas en este libro son nuestras.

Ponte el delantal y ¡a cocinar con AWS!

Convenciones utilizadas en este libro

En este libro se utilizan las siguientes convenciones tipográficas:

Cursiva

Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.

Constant width

Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.

Constant width bold

Muestra comandos u otros textos que deben ser tecleados literalmente por el usuario.

Constant width italic

Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.

Consejo

Este elemento significa un consejo o sugerencia.

Nota

Este elemento significa una nota general.

Advertencia

Este elemento indica una advertencia o precaución.

Utilizar ejemplos de código

El material complementario (ejemplos de código, ejercicios, etc.) se puede descargar en https://github.com/awscookbook.

Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico a

Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativa de código de ejemplo de este libro en la documentación de tu producto sí requiere permiso.

Agradecemos la atribución, pero en general no la exigimos. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "AWS Cookbook" de John Culkin y Mike Zazon (O'Reilly). Copyright 2022 Culkins Coffee Shop LLC y Mike Zazon, 978-1-492-09260-5".

Si crees que el uso que haces de los ejemplos de código no se ajusta al uso legítimo o al permiso concedido anteriormente, no dudes en ponerte en contacto con nosotros en

Aprendizaje en línea O'Reilly

Nota

Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.

Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita http://oreilly.com.

Cómo contactar con nosotros

Dirige tus comentarios y preguntas sobre este libro a la editorial:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Norte
  • Sebastopol, CA 95472
  • 800-998-9938 (en Estados Unidos o Canadá)
  • 707-829-0515 (internacional o local)
  • 707-829-0104 (fax)

Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/AWS-cookbook.

Envía un correo electrónico para comentar o hacer preguntas técnicas sobre este libro.

Para obtener noticias e información sobre nuestros libros y cursos, visita http://oreilly.com.

Encuéntranos en Facebook: http://facebook.com/oreilly

Síguenos en Twitter: http://twitter.com/oreillymedia

Míranos en YouTube: http://youtube.com/oreillymedia

Agradecimientos

Gracias a Jeff Armstrong, autor de Migrar a AWS, una guía para directivos, por presentarnos a O'Reilly.

Queremos dar las gracias a los revisores técnicos que han contribuido a que este libro esté donde está hoy. Agradecemos enormemente su aguda mirada, sus opiniones y su destreza técnica. Jess Males, Gaurav Raje, Jeff Barr, Paul Bayer, Neil Stewart, David Kheyman, Justin Domingus, Justin Garrison, Julian Pittas, Mark Wilkins y Virginia Chu: gracias.

Gracias a la bien informada comunidad de r/aws por aportar siempre grandes ideas y opiniones.

Gracias a nuestro editor de producción, Christopher Faucher, por poner el libro a punto para su publicación. Gracias también a nuestra editora, Virginia Wilson, por dedicar tiempo a trabajar con autores noveles durante una pandemia. Tu paciencia, tus sugerencias y tu orientación nos han permitido completar este libro y mantenernos (en cierto modo) cuerdos :-)

Get Libro de cocina AWS now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.