Les premiers pas
Le AWS, tirant son nom de l'abréviation de l'anglicisme Amazon Web Services, est un ensemble de service offert à des clients basé sur un ensemble de logiciel et de service contenu dans centre de données ou de salles de serveurs. L'objectif ultime d'un centre de données ou de salle de serveurs traditionnel réside dans ses précieux serveurs. Mais pour rendre ces serveurs utiles, vous devrez ajouter des racks, des alimentations, du câblage, des commutateurs, des pare-feu et un système de refroidissement.
Les EC2 (Elastic Compute Cloud) d'AWS sont conçus pour reproduire aussi fidèlement que possible l'expérience du centre de données/salle de serveurs. Au centre de tout cela se trouve le serveur virtuel EC2, appelé instance. Mais, à l'instar de la salle de serveurs locale, AWS propose une gamme de services destinés à prendre en charge et à améliorer les opérations de vos charges de travail. Ceux-ci incluent des outils de surveillance et d'administration des ressources, ainsi que des plates-formes conçues pour l'orchestration des conteneurs.
En exploitant pleinement la puissance de l'écosystème EC2, vous pouvez :
- Provisionnez une instance EC2 avec les ressources matérielles adaptées à votre projet.
- Configurez le système d'exploitation de base approprié pour les besoins de votre application.
- Créez un environnement réseau sécurisé et efficace pour votre instance.
- Ajoutez des scripts à exécuter au démarrage de l'instance pour prendre en charge (ou démarrer) votre application.
- Choisissez le meilleur modèle de tarification EC2 pour vos besoins.
- Comprendre comment gérer et exploiter le cycle de vie de l'instance EC2.
- Choisissez le type de disque d'entreposage adapté à vos besoins.
- Sécurisez vos ressources EC2 à l'aide de paires de clefs, de groupes de sécurité, de listes d'accès au réseau et de rôles de gestion des identités et des accès (IAM).
- Augmentez ou réduisez le nombre d'instances pour répondre à l'évolution de la demande grâce à Auto Scaling.
- Accédez à votre instance en tant qu'administrateur ou client utilisateur final.
- Lancez des charges de travail de conteneur via Elastic Container Service (ECS) et Elastic Kubernetes Service (EKS).
Les instances EC2
Une instance EC2 ne peut être qu'un sous-ensemble virtualisé et abstrait d'un serveur physique, mais elle se comporte exactement comme la réalité. Il aura accès au entreposage, à la mémoire et à une interface réseau, et son lecteur d'entreposage principal sera livré avec un système d'exploitation frais et propre en cours d'exécution.
C'est à vous de décider du type de ressources matérielles que vous souhaitez doter de votre instance, du système d'exploitation et de la pile logicielle que vous souhaitez qu'elle exécute et, en fin de compte, combien vous paierez pour cela.
Provisionner votre instance
Vous configurez le système d'exploitation et la pile logicielle de votre instance, les spécifications matérielles (puissance du microprocesseur, mémoire, entreposage principal et performances du réseau) et l'environnement avant de le lancer. Le système d'exploitation est défini par l'Amazon Machine Image (AMI) que vous choisissez et le matériel suit le type d'instance.
Images de machines Amazon EC2
Une AMI n'est en réalité qu'un gabarit de document contenant des informations indiquant à EC2 quel système d'exploitation et quel logiciel d'application inclure sur le volume de données racine de l'instance qu'il est sur le point de lancer. Il existe quatre types d'AMI :
- AMI Amazon Quick Start : L'onglet Quick Start de la page de lancement de l'instance affiche les AMI étant des choix populaires et incluant diverses versions de Linux ou systèmwe d'exploitation Windows Server, et même de macOS ainsi que des images spécialisées pour effectuer des opérations courantes (telles que l'apprentissage en profondeur, les opérations de base de données). Ces AMI sont à jour et officiellement prises en charge.
- AMI AWS Marketplace : Les AMI d'AWS Marketplace sont des images officielles, prêtes pour la production, fournies et prises en charge par des fournisseurs du secteur tels que Splunk et Trend Micro.
- AMI communautaires : Plus de 500 images sont disponibles sous forme d'AMI communautaires. Beaucoup de ces images sont des AMI créées et gérées par des fournisseurs indépendants et sont généralement conçues pour répondre à un besoin spécifique. Il s'agit d'un bon catalogue à rechercher si vous envisagez une application construite sur une combinaison personnalisée de ressources logicielles.
- AMI privées : Vous pouvez également entreposer des images créées à partir de vos propres déploiements d'instances en tant qu'AMI privées. Pourquoi voudriez-vous faire ça ? Vous souhaiterez peut-être, par exemple, pouvoir augmenter le nombre d'instances que vous exécutez pour répondre à une demande croissante. Disposer d'une image d'instance fiable, testée et corrigée en tant qu'AMI facilite l'intégration de la mise à l'échelle automatique. Vous pouvez également partager des images sous forme d'AMI ou importer des machines virtuelles depuis votre infrastructure locale (via AWS S3) à l'aide de l'outil AWS VM Import/Export.
Une AMI particulière ne sera disponible que dans une seule région, bien qu'il y ait souvent des images avec des fonctionnalités identiques dans toutes les régions. Gardez cela à l'esprit lorsque vous planifiez vos déploiements : l'appel de l'ID d'une AMI dans une région tout en travaillant dans une autre région échouera.
Types d'instances
AWS alloue des ressources matérielles à vos instances en fonction du type d'instance (ou profil matériel) que vous sélectionnez. La charge de travail particulière que vous planifiez pour votre instance déterminera le type que vous choisissez. L'idée est d'équilibrer les coûts par rapport à vos besoins en puissance de calcul, en mémoire et en espace d'entreposage. Idéalement, vous trouverez un type offrant exactement la quantité de chacun pour satisfaire à la fois votre application et votre budget.
Si vos besoins évoluent au fil du temps, vous pouvez facilement passer à un autre type d'instance en arrêtant votre instance, en modifiant son type d'instance et en la redémarrant.
Comme indiqué dans le tableau suivant, il existe actuellement plus de 60 types d'instances organisés en cinq familles d'instances, bien qu'AWS mette fréquemment à jour leur sélection. Vous pouvez consulter la collection la plus récente sur http://aws.amazon.com/ec2/instance-types :
Famille de types d'instance | Les types |
---|---|
Usage général | Mac, T4g, T3, T2, M6g, M6i, M6a, M5, M5a, M5n, M5zn, M4, A1 |
Optimisé pour les calculs | C7g, C6g, C6i, C6a, Hpc6a, C5, C5a, C5n, C4 |
Mémoire optimisée | R6g, R6i, R5, R5a, R5b, R5n, R4, X2gd, X2idn, X2iedn, X2iezn, X1e, X1, High Memory, z1d |
Calcul accéléré | P4, P3, P2, DL1, Trn1, Inf1, G5, G5g, G4dn, G4ad, G3, F1, VT1 |
Optimisée pour HPC | Hpc7g, Hpc7a, Hpc6id, Hpc6a |
Optimisé pour l'entreposage | Im4gn, Is4gen, I4i, I3, I3en, D2, D3, D3en, H1 |
La liste suivante décrit brièvement chacune des cinq familles d'instances :
- Usage général : La famille Usage général comprend les types T3, T2, M5 et M4, visant tous à fournir un équilibre entre les ressources de calcul, de mémoire et de réseau. Les types T2, par exemple, vont du t2.nano avec un processeur virtuel (vCPU0) et un demi-gigaoctet de mémoire jusqu'au t2.2xlarge avec ses huit vCPU et 32 Go de mémoire. Parce qu'il est éligible dans le cadre de l'offre gratuite, le t2.micro est souvent un bon choix pour expérimenter. Mais rien ne vous empêche de l'utiliser pour des sites Web à usage léger et divers services liés au développement. Les types d'instances T4g et M6g utilisent le microprocesseur Graviton2 basé sur ARM conçu par AWS. Les instances T4g vont du tf6.nano (0,5 Gio de mémoire et 2 microprocesseurs virtuels) au t4g.2xlarge (32 Gio et 8 vCPU). Les instances Mac sont destinées aux développeurs travaillant sur des applications destinées aux appareils de la plateforme macOS.
- Optimisé pour les calculs : Pour les serveurs Web plus exigeants et les charges de travail d'apprentissage automatique haut de gamme, vous choisirez parmi la famille Compute Optimized qui comprend des machines C6i, disponibles dans des versions entre c6i.large et l'énorme c6i.metal (128 vCPU, 256 GIB, et 50 Gbit/s de bande passante réseau).
- Mémoire optimisée : Les instances à mémoire optimisée (qu'elles soient basées sur ARM, Intel ou AMD) fonctionnent bien pour les opérations intensives de bases de données, d'analyse de données et de mise en cache. Le R6i fonctionne sur des microprocesseurs Intel Xeon Scalable de troisième génération et met l'accent sur une bande passante mémoire plus élevée et des vitesses de mise en réseau supérieures. Les types X1e, X1 et R4 sont disponibles avec jusqu'à 3,9 téraoctets (To) de mémoire basée sur la mémoire vive dynamique (DRAM) et des volumes de stockage de disques SSD (Solid State Drive) à faible latence connectés.
- Calcul accéléré : Vous pouvez obtenir des performances d'unité de traitement graphique à usage général (GPGPU) plus performantes à partir des types P4, P3, G5 et F1 au sein du groupe Calcul accéléré. Ces instances utilisent différentes générations de GPU NVIDIA haut de gamme. Les instances de calcul accéléré sont recommandées pour les charges de travail exigeantes telles que le calcul haute performance (HPC) et les charges de travail haut de gamme dans les domaines de la finance, de l'ingénierie, de l'intelligence artificielle et de la recherche médicale.
- Optimisé pour l'entreposage : Les types H1, I3 et D2 qui composent actuellement la famille Storage Optimized peuvent fournir des lectures/écritures rapides et sont dotés d'un accès à faible latence aux volumes d'entreposage des instances EBS. Ces instances fonctionnent bien avec les systèmes de fichiers distribués et les applications de traitement de données lourdes.
Les détails des spécifications et les noms des types d'instances change fréquemment à mesure qu'AWS continue d'exploiter de nouvelles technologies pour répondre aux demandes informatiques croissantes de ses clients. Mais il est important de connaître au moins les familles de types d'instances et les conventions de dénomination utilisées par AWS pour les identifier.
Explorez attentivement la page des types d'instances avant de provisionner vos projets ; la documentation Amazon décrit bien l'équilibre précis des ressources que chaque option peut fournir dans le contexte de cas d'utilisation de charge de travail spécifiques.
Configuration d'un environnement pour votre instance
Décider où vivra votre instance EC2 est aussi important que choisir une configuration de performances. Ici, il y a trois détails principaux à prendre en compte : la région géographique, l'infonuagique privé virtuel (VPC) et le modèle de location.
Régions AWS
Comme vous l'avez appris précédemment, les serveurs AWS sont hébergés dans des centres de données partout dans le monde et organisés par région géographique. Vous souhaiterez généralement lancer une instance EC2 dans la région physiquement la plus proche de la majorité de vos clients ou, si vous travaillez avec des données soumises à des restrictions légales (comme les exigences de souveraineté des données), dans une juridiction répondant à vos besoins de conformité.
Les ressources EC2 ne peuvent être gérées que lorsque vous êtes «situé dans» leur région. Vous définissez la région active dans la console via le menu déroulant en haut de la page et via les valeurs de configuration par défaut dans l'AWS CLI ou votre SDK. Vous pouvez mettre à jour votre configuration CLI en exécutant aws configure.
Gardez à l'esprit que les coûts et même les fonctionnalités des services et fonctionnalités peuvent varier selon les régions. C'est toujours une bonne idée de consulter la documentation officielle la plus à jour.
VPC
Les infonuagiques privés virtuels (VPC) sont des organisateurs de réseau AWS faciles à utiliser et d'excellents outils pour organiser votre infrastructure. Comme il est si simple d'isoler les instances d'un VPC de tout ce que vous exécutez, vous souhaiterez peut-être créer un nouveau VPC pour chacun de vos projets ou étapes de projet. Par exemple, vous pouvez disposer d'un VPC pour le développement initial d'applications, d'un autre pour les tests bêta et d'un troisième pour la production.
Ajout d'un VPC simple n'intégrant pas de passerelle de traduction d'adresses réseau (NAT) ni d'accès VPN ne vous coûtera rien.
Location
Lors du lancement d'une instance EC2, vous aurez la possibilité de choisir un modèle de location. Le paramètre par défaut est la location partagée, où votre instance s'exécutera en tant que machine virtuelle sur un serveur physique hébergeant simultanément d'autres instances. Ces autres instances pourraient très bien appartenir et être exploitées par d'autres clients AWS, bien que la possibilité de tout type d'interaction non sécurisée entre les instances soit faible.
Pour répondre à des exigences réglementaires particulières, les instances de votre organisation peuvent nécessiter un niveau d'isolation supplémentaire. L'option Instance dédiée garantit que votre instance s'exécutera sur un serveur physique dédié. Cela signifie qu'il ne partagera pas le serveur avec des ressources appartenant à un autre compte client. L'option Hôte dédié vous permet d'identifier et de contrôler le serveur physique vous ayant été attribué afin de répondre à des exigences de licence ou réglementaires plus restrictives.
Naturellement, les instances dédiées et les hôtes dédiés vous coûteront plus cher que les instances utilisant la location partagée.
Configuration du comportement de l'instance
Vous pouvez éventuellement demander à EC2 d'exécuter des commandes sur votre instance lors de son démarrage en pointant vers les données utilisateur dans la configuration de votre instance (c'est ce qu'on appelle parfois le démarrage). Que vous spécifiiez les données lors du processus de configuration de la console ou en utilisant la valeur --user-data avec l'AWS CLI, vous pouvez demander aux fichiers de script d'amener votre instance à n'importe quel état souhaité.
Les données utilisateur peuvent consister en quelques commandes simples pour installer un serveur Web et remplir sa racine Web, ou il peut s'agir d'un script sophistiqué configurant l'instance en tant que noeud de travail au sein d'une plate-forme pilotée par Puppet Enterprise.