Pratique AWS : De l'architecture globale aux applications Serverless, améliorez vos compétences cloud de manière globale
Pratique AWS : De l'architecture globale aux applications Serverless, améliorez vos compétences cloud de manière globale
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, nous pouvons voir que les domaines couverts par AWS sont très vastes, notamment l'infrastructure, la sécurité, l'IA/ML, 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 prendre en compte la latence, les exigences de conformité et les 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 le 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 due à une panne dans 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 comprennent :
- Users (Utilisateurs) : Représentent des individus ou des applications, 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 Roles au lieu des utilisateurs IAM : Essayez d'utiliser des Roles 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 MFA (Multi-Factor Authentication) : Activer 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 DevOps Bash 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 des scripts Bash pour déployer automatiquement des fonctions Lambda ou des instances EC2.
- Utiliser GitHub Actions pour créer 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 Serverless : AWS Lambda + S3 + DynamoDBLes discussions sur X/Twitter ont mentionné un exemple de construction d'un Bot de citation X (Twitter) Serverless 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 à la demande : 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 stages 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 des principales entreprises d'IA.
- AWS AI Lab : Se concentre sur la recherche en IA/ML et offre des opportunités de stages aux étudiants.
Orientations pratiques :
- Utiliser Bedrock pour créer des applications d'IA : 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é : Surveiller les interruptions de service AWS
Les discussions sur X/Twitter ont mentionné les incidents d'interruption de service AWS, ce qui nous rappelle de surveiller 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 alertes : Configurer la surveillance et les alertes pour détecter rapidement les problèmes 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.





