Práctica de AWS: Desde la arquitectura global hasta las aplicaciones Serverless, mejora integralmente tus habilidades en la nube
Práctica de AWS: Desde la arquitectura global hasta las aplicaciones Serverless, mejora integralmente tus habilidades en la nube
AWS (Amazon Web Services) se ha convertido en el líder en el campo de la computación en la nube, y tanto las grandes empresas como las empresas emergentes están utilizando los diversos servicios que ofrece AWS para construir e implementar aplicaciones. A partir de las discusiones en X/Twitter, podemos ver que AWS abarca una amplia gama de áreas, incluyendo infraestructura, seguridad, AI/ML, DevOps y aplicaciones Serverless. Este artículo combinará estas discusiones para proporcionar una guía de práctica de AWS más completa, ayudándote a mejorar tus habilidades en la nube y a utilizar mejor la plataforma AWS.
1. Comprender la infraestructura global de AWS: la clave para la alta disponibilidad y la tolerancia a fallos
Dominar la infraestructura global de AWS es la base para construir aplicaciones de alta disponibilidad y tolerancia a fallos. La infraestructura global de AWS se compone de los siguientes componentes clave:
- Region (Región): Región independiente en una ubicación geográfica, cada región contiene múltiples Availability Zones. Al seleccionar una región, es necesario tener en cuenta la latencia, los requisitos de cumplimiento y los costos.
- Availability Zone (Zona de disponibilidad): Ubicación aislada dentro de una región, cada zona de disponibilidad consta de uno o más centros de datos. Al implementar aplicaciones en diferentes zonas de disponibilidad, se puede mejorar la capacidad de tolerancia a fallos.
- Edge Location (Ubicación perimetral): Servidores de caché distribuidos en todo el mundo, utilizados para acelerar la distribución de contenido. AWS CloudFront utiliza ubicaciones perimetrales para almacenar en caché contenido estático y dinámico, mejorando la experiencia del usuario.
Consejos prácticos:
- Implementación en múltiples zonas de disponibilidad: Implementar copias de la aplicación en diferentes zonas de disponibilidad puede evitar que una falla en una sola zona de disponibilidad haga que la aplicación no esté disponible.
- Seleccionar la región adecuada: Seleccionar la región adecuada según la ubicación del usuario y los requisitos de cumplimiento.
- Utilizar CloudFront para acelerar la distribución de contenido: Utilizar CloudFront para almacenar en caché contenido estático y dinámico, mejorando la experiencia del usuario.
2. Mejores prácticas de IAM: Principio de privilegio mínimo
Identity and Access Management (IAM) es el núcleo de la seguridad de AWS. IAM te permite controlar quién puede acceder a tus recursos de AWS y qué acciones pueden realizar. Los conceptos centrales de IAM incluyen:
- Users (Usuarios): Representan a personas o aplicaciones, utilizados para acceder a los recursos de AWS.
- Roles (Roles): Se pueden asignar a los servicios de AWS o a las instancias EC2, permitiéndoles acceder a otros recursos de AWS.
- Groups (Grupos): Se utilizan para organizar a los usuarios, facilitando la gestión de permisos.
- Policies (Políticas): Definen los permisos de los usuarios, roles o grupos.
Mejores prácticas:
- Principio de privilegio mínimo (Least Privilege): Otorgar solo los permisos mínimos necesarios a los usuarios o roles. Evitar el uso de la política
AdministratorAccess, se deben crear políticas personalizadas según las necesidades reales. - Utilizar Roles en lugar de usuarios de IAM: Intentar utilizar Roles para otorgar a las instancias EC2 o a las funciones Lambda permisos para acceder a otros recursos de AWS, evitando almacenar Access Key ID y Secret Access Key en el código.
- Habilitar MFA (Multi-Factor Authentication): Habilitar MFA para todos los usuarios de IAM, mejorando la seguridad de la cuenta.
- Auditar periódicamente los permisos de IAM: Auditar periódicamente los permisos de IAM, asegurándose de que no haya una autorización excesiva.
Ejemplo de política:
La siguiente política permite a los usuarios realizar operaciones GetObject y PutObject en el bucket S3 my-bucket en la región us-east-1.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::my-bucket/*",
"Condition": {
"StringEquals": {
"aws:RequestedRegion": "us-east-1"
}
}
}
]
}
3. Automatización de DevOps: Utilizando scripts Bash y GitHub Actions
Las discusiones en X/Twitter mencionaron los repositorios de scripts Bash de DevOps y GitHub Actions, que son herramientas importantes para implementar la automatización de DevOps.
- Scripts Bash: Se pueden usar scripts Bash para automatizar varias tareas de DevOps, como implementar aplicaciones, configurar servidores, monitorear sistemas, etc.
- GitHub Actions: GitHub Actions es una herramienta de CI/CD que puede construir, probar e implementar aplicaciones automáticamente.
Consejos prácticos:
- Utilice scripts Bash para automatizar tareas comunes: Por ejemplo, puede usar scripts Bash para implementar automáticamente funciones Lambda o instancias EC2.
- Utilice GitHub Actions para construir pipelines de CI/CD: Puede usar GitHub Actions para construir, probar e implementar aplicaciones automáticamente.
- Control de versiones: Almacene los scripts Bash y la configuración de GitHub Actions en un sistema de control de versiones, como Git.
Ejemplo de flujo de trabajo de GitHub Actions:
El siguiente flujo de trabajo de GitHub Actions construye, prueba e implementa automáticamente una función Lambda cada vez que se envía código a la rama main.
name: Deploy Lambda Function
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
- run: npm install
- run: npm run build
- uses: actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- run: aws lambda update-function-code --function-name my-lambda-function --zip-file fileb://dist/lambda.zip
4. Aplicaciones Serverless: AWS Lambda + S3 + DynamoDBEn discusiones en X/Twitter se mencionó un ejemplo de cómo construir un Serverless X (Twitter) Quote Bot usando AWS Lambda, S3 y DynamoDB. Esto demuestra el poder de la arquitectura Serverless.
- AWS Lambda: Servicio de computación sin servidor que permite ejecutar código sin necesidad de administrar servidores.
- Amazon S3: Servicio de almacenamiento de objetos para almacenar varios tipos de datos.
- Amazon DynamoDB: Servicio de base de datos NoSQL para almacenar datos estructurados y semiestructurados.
Pasos para construir una aplicación Serverless:
- Seleccionar el disparador adecuado: Seleccionar el evento que dispara la función Lambda, por ejemplo, una solicitud HTTP, la carga de un objeto S3, la actualización de datos de DynamoDB, etc.
- Escribir el código de la función Lambda: Escribir el código de la función Lambda para procesar el evento disparador y realizar las acciones correspondientes.
- Configurar el rol IAM: Configurar el rol IAM para otorgar a la función Lambda permisos para acceder a otros recursos de AWS, como S3 y DynamoDB.
- Implementar la función Lambda: Implementar la función Lambda en AWS.
- Probar la función Lambda: Probar la función Lambda para asegurarse de que funciona correctamente.
Ventajas de las aplicaciones Serverless:
- No es necesario administrar servidores: No es necesario administrar servidores, lo que reduce la carga operativa.
- Escalado automático: Se escala automáticamente según el volumen de solicitudes, sin necesidad de configuración manual.
- Pago por uso: Solo se paga por los recursos de computación que realmente se utilizan, lo que reduce los costos.
5. Aplicaciones de IA/ML: Prácticas con Bedrock y LLM
Las discusiones en X/Twitter también mencionaron las oportunidades de prácticas de investigación de LLM (Large Language Model) de AWS AI Lab y las aplicaciones de Bedrock. AWS ofrece una amplia gama de servicios de IA/ML que pueden ayudar a construir varias aplicaciones de IA/ML.
- Amazon Bedrock: Servicio que proporciona una gama de modelos fundacionales de alto rendimiento de las principales empresas de IA.
- AWS AI Lab: Se centra en la investigación de IA/ML y ofrece oportunidades de prácticas para estudiantes.
Direcciones prácticas:
- Construir aplicaciones de IA utilizando Bedrock: Se pueden utilizar los modelos fundacionales proporcionados por Bedrock para construir varias aplicaciones de IA, como generación de texto, reconocimiento de imágenes, reconocimiento de voz, etc.
- Prestar atención a la memoria y el aprendizaje continuo de LLM: Prestar atención a los últimos avances en la investigación de LLM, como la memoria y el aprendizaje continuo de LLM, puede ayudar a construir aplicaciones de IA más inteligentes.
6. Seguridad y cumplimiento: Prestar atención a las interrupciones del servicio de AWS
Las discusiones en X/Twitter mencionaron los eventos de interrupción del servicio de AWS, lo que nos recuerda que debemos prestar atención a la seguridad y el cumplimiento de AWS.
- Implementación en múltiples regiones: Implementar aplicaciones en diferentes regiones de AWS puede evitar que una falla en una sola región haga que la aplicación no esté disponible.
- Monitoreo y alertas: Configurar el monitoreo y las alertas para detectar problemas y tomar medidas a tiempo.
- Copia de seguridad y recuperación: Realizar copias de seguridad de los datos periódicamente y probar los procesos de recuperación.
- Cumplimiento: Comprender y cumplir con los requisitos de cumplimiento relevantes, como GDPR, HIPAA, etc.





