Pratique AWS : De l'architecture globale aux applications Serverless, améliorez vos compétences cloud de manière exhaustive
Pratique AWS : De l'architecture globale aux applications Serverless, améliorez vos compétences cloud de manière exhaustive
AWS (Amazon Web Services) est devenu un leader dans le domaine du cloud computing, et les grandes entreprises comme les startups utilisent les différents services proposés par AWS pour construire et déployer des applications. D'après les discussions sur X/Twitter, on peut voir que les domaines couverts par AWS sont très vastes, notamment l'infrastructure, la sécurité, l'IA/ML, le DevOps et les applications Serverless. Cet article combinera ces discussions pour vous fournir un guide de pratique AWS plus complet, vous aidant à améliorer vos compétences cloud et à mieux utiliser la plateforme AWS.
1. Comprendre l'infrastructure globale d'AWS : La clé de la haute disponibilité et de la tolérance aux pannes
La maîtrise de l'infrastructure globale d'AWS est la base de la construction d'applications à haute disponibilité et tolérantes aux pannes. L'infrastructure mondiale d'AWS est composée des éléments clés suivants :
- Region (Région) : Région indépendante sur le plan géographique, chaque région contenant plusieurs Availability Zones. Lors du choix d'une région, il est nécessaire de tenir compte de la latence, des exigences de conformité et des coûts.
- Availability Zone (Zone de disponibilité) : Emplacement isolé au sein d'une région, chaque zone de disponibilité étant composée d'un ou plusieurs centres de données. Le déploiement d'applications dans différentes zones de disponibilité permet d'améliorer la tolérance aux pannes.
- Edge Location (Site périphérique) : Serveurs de cache distribués dans le monde entier, utilisés pour accélérer la distribution de contenu. AWS CloudFront utilise des sites périphériques pour mettre en cache du contenu statique et dynamique, améliorant ainsi l'expérience utilisateur.
Conseils pratiques :
- Déploiement multi-Availability Zone : Le déploiement de copies d'applications dans différentes zones de disponibilité permet d'éviter l'indisponibilité des applications en cas de panne d'une seule zone de disponibilité.
- Choisir la région appropriée : Choisir la région appropriée en fonction de la localisation des utilisateurs et des exigences de conformité.
- Utiliser CloudFront pour accélérer la distribution de contenu : Utiliser CloudFront pour mettre en cache le contenu statique et dynamique, améliorant ainsi l'expérience utilisateur.
2. Meilleures pratiques IAM : Principe du moindre privilège
Identity and Access Management (IAM) est au cœur de la sécurité AWS. IAM vous permet de contrôler qui peut accéder à vos ressources AWS et quelles actions ils peuvent effectuer. Les concepts clés d'IAM incluent :
- Users (Utilisateurs) : Représentent une personne ou une application, utilisés pour accéder aux ressources AWS.
- Roles (Rôles) : Peuvent être attribués aux services AWS ou aux instances EC2, leur permettant d'accéder à d'autres ressources AWS.
- Groups (Groupes) : Utilisés pour organiser les utilisateurs, facilitant la gestion des autorisations.
- Policies (Stratégies) : Définissent les autorisations des utilisateurs, des rôles ou des groupes.
Meilleures pratiques :
- Principe du moindre privilège (Least Privilege) : N'accorder aux utilisateurs ou aux rôles que les autorisations minimales requises. Évitez d'utiliser la stratégie
AdministratorAccess, et créez plutôt des stratégies personnalisées en fonction des besoins réels. - Utiliser des rôles au lieu d'utilisateurs IAM : Dans la mesure du possible, utilisez des rôles pour accorder aux instances EC2 ou aux fonctions Lambda l'autorisation d'accéder à d'autres ressources AWS, en évitant de stocker l'Access Key ID et la Secret Access Key dans le code.
- Activer l'authentification MFA (Multi-Factor Authentication) : Activer l'authentification MFA pour tous les utilisateurs IAM afin d'améliorer la sécurité du compte.
- Auditer régulièrement les autorisations IAM : Auditer régulièrement les autorisations IAM pour s'assurer qu'il n'y a pas de sur-autorisation.
Exemple de stratégie :
La stratégie suivante permet aux utilisateurs d'effectuer des opérations GetObject et PutObject dans le bucket S3 my-bucket de la région 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. Automatisation DevOps : Utilisation de scripts Bash et de GitHub Actions
Les discussions sur X/Twitter ont mentionné les référentiels de scripts Bash DevOps et GitHub Actions, qui sont des outils importants pour la mise en œuvre de l’automatisation DevOps.
- Scripts Bash : Vous pouvez utiliser des scripts Bash pour automatiser diverses tâches DevOps, telles que le déploiement d’applications, la configuration de serveurs, la surveillance de systèmes, etc.
- GitHub Actions : GitHub Actions est un outil CI/CD qui peut automatiquement construire, tester et déployer des applications.
Conseils pratiques :
- Utiliser des scripts Bash pour automatiser les tâches courantes : Par exemple, vous pouvez utiliser un script Bash pour déployer automatiquement une fonction Lambda ou une instance EC2.
- Utiliser GitHub Actions pour construire des pipelines CI/CD : Vous pouvez utiliser GitHub Actions pour construire, tester et déployer automatiquement des applications.
- Contrôle de version : Stocker les scripts Bash et les configurations GitHub Actions dans un système de contrôle de version, tel que Git.
Exemple de flux de travail GitHub Actions :
Le flux de travail GitHub Actions suivant construit, teste et déploie automatiquement une fonction Lambda chaque fois que du code est soumis à la branche 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. Applications sans serveur : AWS Lambda + S3 + DynamoDBLes discussions sur X/Twitter ont mentionné un exemple de construction d'un Serverless X (Twitter) Quote Bot en utilisant AWS Lambda, S3 et DynamoDB. Cela démontre la puissance de l'architecture Serverless.
- AWS Lambda : Service de calcul sans serveur qui permet d'exécuter du code sans avoir à gérer les serveurs.
- Amazon S3 : Service de stockage d'objets utilisé pour stocker différents types de données.
- Amazon DynamoDB : Service de base de données NoSQL utilisé pour stocker des données structurées et semi-structurées.
Étapes pour construire une application Serverless :
- Choisir le déclencheur approprié : Choisir l'événement qui déclenche la fonction Lambda, tel qu'une requête HTTP, un chargement d'objet S3, une mise à jour de données DynamoDB, etc.
- Écrire le code de la fonction Lambda : Écrire le code de la fonction Lambda pour traiter l'événement déclencheur et effectuer les opérations correspondantes.
- Configurer le rôle IAM : Configurer le rôle IAM pour accorder à la fonction Lambda l'autorisation d'accéder à d'autres ressources AWS, telles que S3 et DynamoDB.
- Déployer la fonction Lambda : Déployer la fonction Lambda sur AWS.
- Tester la fonction Lambda : Tester la fonction Lambda pour s'assurer qu'elle fonctionne correctement.
Avantages des applications Serverless :
- Pas besoin de gérer les serveurs : Pas besoin de gérer les serveurs, ce qui réduit la charge opérationnelle.
- Mise à l'échelle automatique : Mise à l'échelle automatique en fonction du volume de requêtes, sans configuration manuelle.
- Paiement à l'utilisation : Ne payer que pour les ressources de calcul réellement utilisées, ce qui réduit les coûts.
5. Applications IA/ML : Pratiques avec Bedrock et LLM
Les discussions sur X/Twitter ont également mentionné les opportunités de stage de recherche LLM (Large Language Model) d'AWS AI Lab et l'application de Bedrock. AWS propose une gamme complète de services d'IA/ML qui peuvent vous aider à créer diverses applications d'IA/ML.
- Amazon Bedrock : Service qui fournit une gamme de modèles de base haute performance provenant de sociétés d'IA de premier plan.
- AWS AI Lab : Se concentre sur la recherche en IA/ML et offre des opportunités de stage aux étudiants.
Orientations pratiques :
- Construire des applications d'IA avec Bedrock : Vous pouvez utiliser les modèles de base fournis par Bedrock pour créer diverses applications d'IA, telles que la génération de texte, la reconnaissance d'images, la reconnaissance vocale, etc.
- Se concentrer sur la mémoire et l'apprentissage continu des LLM : Se concentrer sur les dernières avancées de la recherche sur les LLM, telles que la mémoire et l'apprentissage continu des LLM, peut vous aider à créer des applications d'IA plus intelligentes.
6. Sécurité et conformité : Attention aux interruptions de service AWS
Les discussions sur X/Twitter ont mentionné les incidents d'interruption de service AWS, ce qui nous rappelle de prêter attention à la sécurité et à la conformité d'AWS.
- Déploiement multi-régions : Déployer des applications dans différentes régions AWS peut éviter l'indisponibilité des applications causée par une panne dans une seule région.
- Surveillance et alerte : Configurer la surveillance et les alertes pour détecter les problèmes à temps et prendre des mesures.
- Sauvegarde et restauration : Sauvegarder régulièrement les données et tester les processus de restauration.
- Conformité : Comprendre et respecter les exigences de conformité pertinentes, telles que GDPR, HIPAA, etc.





