Aller au contenu

Step-1-0 : Découverte du cloud provider AWS

Un cloud provider est une société tierce fournissant des ressources informatiques que nous pouvons utiliser à la demande afin de répondre à nos besoins : réseau, calcul, stockage de données, analyses...

Ces services clouds sont souvent catégorisés en IaaS (infrastructure as a service), PaaS (platform as a service), or SaaS (Software as a service).

AWS (Amazon Web Services) est le leader des clouds provider devant Azure (Microsoft) et GCP (Google). (source)

Amazon fut l'un des précurseurs du "cloud" et popularisa le terme en lançant AWS et son service EC2 en 2006.

Concepts

Les avantages

L'usage du cloud a beaucoup d'avantages comparé aux approches traditionnelles :

  • Pay as you go : on ne paye que des ressources informatiques que l'on utilise.
  • Économies d'échelle : avec ces milliers de clients AWS bénéficie d'économies d'échelle permettant des prix plus bas.
  • Cesser de deviner la capacité : plus besoin de deviner ou imaginer les charges et consommations puis de payer en avances des serveurs, baies, etc.
  • Augmentez la vitesse et l'agilité : les ressources informatiques sont à portée de clic et même d'API, permettant de réduire les temps de provisioning d'infra/serveurs. Cela nous permet une grande agilité les coûts pour nos développements et déploiements.
  • Réalisez des économies : ne plus gérer leur propre datacenters et infra physiques permet aux entreprises d'investir ailleurs.
  • Passer à l'échelle mondiale facilement : grâces aux interfaces/APIs et à l'infrastructure des clouds providers, on peut déployer rapidement dans d'autres régions du monde rapidement.

Les Services AWS

AWS propose des services qui regroupent un ensemble de ressources par problématiques auxquelles elles répondent.

En général, on pourra classer les services AWS dans différentes grandes thématiques ('High level Services').

Les 3 principales :

  • Compute (EC2/Lambda/EKS/ECS ...)
  • Network (VPC/WAF/VPN/xLB/ ...)
  • Storage (S3/Glacier/EFS/FSx/Storage Gateway )

Bien sûr il y en a d'autres : Management&Governance, Developer tools, satellite, migration, Identity, IOT ...

Chaque service est composé de ressources. C'est l'élément le plus petit que l'on peut créer dans AWS. Dans AWS TOUT est resource.

Note

Dans AWS chaque service a des quotas, souvent par région. Par exemple, nombre d'instances EC2, d'IPs publiques, de VPCs, etc. Il y en a plus de 160 juste pour les EC2. Il faut donc y faire attention afin de e pas se retrouvé bloqué. Il est possible de demander des augmentations sur ces quotas.

Nous commencerons par découvrir l'aspect le plus important de toute plateforme cloud : le Compute

On décrit sous Compute tous les services qui permettent d'avoir de la puissance de calcul. Cela peut aller de la simple VM (serveur virtuel) au FunctionAsAService (Lambda AWS) en passant par les orchestrateurs (EKS/ECS).

Global Infrastructure

AWS continue de se déployer ses infrastructures partout dans le monde et fourni ses services via des Régions.

Region : une zone géographique dans laquelle on peut déployer. Une region contient au minimum 2 AZs.

AZ (Availability Zone) : Chez AWS c'est un datacenter entier (voire plusieurs datacenter physiquement proches) avec une alimentation complement décorrélée et des interconnexions réseau redondées avec forte bande passante et latence basse.

Edge Location : c'est un point d'accès servant de cache pour les services CDN Cloudfront.

Warning

La sécurité et la conformité sont partagées avec ce que AWS appelle le shared responsibility security model. AWS est responsable de protéger les infrastructures, locaux, hardware, network qui font tourner les services. De son côté les clients, nous sommes responsables des services que l'on utilise et comment nous les configurons.

TP

Commençons avec le Hello World du cloud : créer la resource de base, c'est-à-dire une instance EC2. C'est tout simplement un serveur virtuel qui tournera sur le cloud public AWS et qui pourra héberger vos process comme n'importe quel serveur.

Nous allons voir 3 façons de créer d'instancier cette ressource et interagir avec les APIs AWS.

Création de votre première resource AWS

La console

La console AWS, aussi appelée Dashboard (ou moins officiellement Clickodrome 😉), est une interface web permettant de naviguer sur AWS et d'y visualiser et créer nos ressources.

  • Connectez-vous sur la console AWS. Toutes les informations sont fournies dans le mail reçu en début de cours.
  • Vous allez arriver dans la console AWS

AWS Console Home AWS Console

  • Le service qui nous intéresse ici est EC2. Pour trouver ce service, vous pouvez :
  • Soit Rechercher EC2 dans la barre de recherche et cliquer sur EC2
  • Soit aller parcourir l'onglet Services en haut à gauche --> Compute --> EC2

Une fois dans le service EC2, vous retrouverez l'ensemble des ressources AWS qui ont trait au Service EC2. Voici ceux qui vont nous intéresser pour cet Hello World :

  • Instances : la ressource qui correspond à une machine virtuelle (un serveur) qui va tourner dans le cloud
  • Image AMI : L'image de l'instance qui va boot avec les différentes spécifications :
  • OS
  • Architecture (ARM/Mac ARM/x86)
  • Root device disque
  • Storage Volume : Les disques que l'on veut ajouter sur nos EC2
  • Keypair : les clefs SSH que l'on va pouvoir ajouter à notre instance pour avoir un accès SSH par exemple

Note

L'ID d'une image AMI est valide pour une image dans une région (ID de l'ami Ubuntu 22 est différente d'une région à l'autre)

Lorsque vous vous connectez sur la console AWS, vous allez pouvoir sélectionner une région.

Pour commencer, placez-vous dans la région us-east1 il s'agit de la région Virginia aux US

Info

Les services sont scopés par régions.

La région 'global' concerne les services qui ne sont rattachés spécifiquement à une région. IAM, Route53, Cloudfront, ... sont des services globaux.

Question

Que se passe-t-il au niveau de votre console AWS sur le service EC2

Réponse

Vous devriez avoir des erreur de permission sur le service EC2 sur cette région. En effet la policy IAM associé à votre compte ne vous permet pas d'accéder au service EC2 dans cette région. Vous avez seulement le droit d'accès sur la région eu-west-3 qui est la région de Paris

  • Basculez dans la région eu-west-3 il s'agit de la région Paris. et cliquer sur Instances dans le menu de gauche
  • Cliquez ensuite sur Launch Instance
  • Name : votre_nom-mon-serveur
  • L'image : choisissez l'AMI Ubuntu 22 / L'architecture x86
  • Le type d'instance : Pour ce test choisissez t2.micro
  • Sélectionnez votre clé, 2 options ici :
    • Vous n'avez pas de clé ssh : dans ce cas, créez votre keypair à ensuite récupérer et stocker dans votre ~/.ssh
    • Vous avez déjà une clé ssh : ajoutez-la manuellement dans la partie Network & Security -> Key Pairs -> Actions -> Import
  • Network : laissez la configuration par défault
  • Provisionnez un disque de 10 Go
  • Pour le moment, on ne s'intéresse pas au advanced details

Example

Connectez vous à votre instance via son ip publique.

ssh -i nom_de_ma_clef_ssh ubuntu@IP_PUBLIQUE

AWS CLI (scripting)

Une autre manière de provisionner des ressources est l'utilisation du CLI aws (command line interface).

Pour deployer un ec2 :

aws ec2 run-instances \
  --image-id ami-XXXXXXXXXXXXXXXXX \    # Remplacez par l'ID de l'image que vous souhaitez
  --instance-type t2.micro \            # Remplacez par le type d'instance souhaité
  --key-name VotreCle \
  --region eu-west-3
  --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=votre_nom-mon-serveur}]'

Vous pouvez aussi récupérer les infos avec le CLI, par exemple pour lister les AMIs :

aws ec2 describe-images --region eu-west-3

Ou encore récupérer l'IP public de votre instance :

aws ec2 describe-instances --instance-ids MY_INSTANCE_ID --query 'Reservations[*].Instances[*].PublicIpAddress' --output text

Terraform (IaC)

Enfin 'last but not least', la solution pour déployer des ressources est l'approche Infrastructure as Code. Pour cela, nous allons utiliser l'outil terraform

  • Créez un folder day1-step1, puis un fichier main.tf dans ce fichier, nous allons décrire le strict minimum pour déployer une instance EC2.
Définition du provider
provider "aws" {
  region = "eu-west-3"

  default_tags {
    tags = {
      Owner = "JE_REMPLACE_PAR_MON_NOM"
    }
  }
}

Les tags permettent de pouvoir plus facilement gérer/filtrer ses ressources dans AWS. Mettre default_tags ici lors de la déclaration du provider permettra de ne pas avoir à le mettre sur chaque ressource.

Définition de la ressource EC2
resource "aws_instance" "mon_instance" {
  ami           = "ami-XXXXXXXXXXXX"
  instance_type = "t2.micro"
  key_name      = "VotreCle"
  tags          = {
    Name = "NomDeVotreInstance"  # Remplacez par le nom que vous souhaitez donner à votre instance
  }
}
  • Depuis ce dossier, lancez les commandes terraform suivantes :
terraform init
terraform plan
terraform apply
  • Vérifiez la bonne création de l'instance. Vous pouvez aussi constater qu'un nouveau fichier a été créé dans votre folder. Il s'agit du terraform.tfstate. Regardez le contenu de ce fichier.

Question

Quelle est l'ip public de votre instance EC2 ?

Réponse

Vous pouvez récupérer l'IP publique encore via l'interface ou en output via le provider terraform aws et l'attribut public_ip de la ressource aws_instance

output "instance_public_ip" {
  value = aws_instance.mon_instance.public_ip
}

Info

Le tfstate contient l'ensemble des informations des ressources provionnées par terraform. Il reflète donc l'ensemble des ressources qui sont déployées sur le cloud.

Warning

Pensez bien à détruire votre infra, les instances une fois fini. Une instance non/mal utilisée fait perdre de l'argent à l'entreprise. Optimiser ses coûts fait partie du devops.

terraform destroy

Question

Quelle est le contenu de votre tfstate maintenant ?

Voilà, vous avez fait vos premiers pas dans la découverte du provisioning d'infrastructure sur le cloud AWS. Vous avez même fait un peu d'Infrastructure as Code !