• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 09/03/2023

Interagissez avec le cloud AWS via la CLI ou un SDK

Il est désormais possible de se connecter en tant que développeur ou admin à la console AWS. Cependant, ce support n’est pas adapté pour développer et déployer de façon industrielle l’architecture du site. En effet, Jasmine et Léo, les développeurs de l’équipe, veulent utiliser des outils pour automatiser le plus possible le déploiement des nouvelles fonctionnalités qu’ils développent. Par conséquent, ils préfèrent utiliser des scripts en ligne de commandes, des SDK (Software Development Kit) et des pipelines CI/CD.

Ici, pour l’exemple, nous utiliserons un terminal pour interagir à distance avec les services AWS en ligne de commandes.

Découvrez les options pour se connecter à AWS

Jusqu’à maintenant nous nous sommes connectés à AWS à travers l’outil AWS Management Console (voir image ci-dessous), qui fournit une interface utilisateur accessible depuis un navigateur web. Cet outil permet de créer et gérer vos ressources AWS.

Quelles sont les alternatives à AWS Management Console ?

AWS offre deux autres outils pour vous connectez à un compte :

Voici un exemple de commande pour récupérer la liste de tous les buckets auxquels vous pouvez accéder.

La CLI AWS est open-source et vous pouvez retrouver l’ensemble des lignes de commandes AWS dans la documentation AWS (en anglais) sur les commandes dans le CLI. Elle vous permettra d’écrire des scripts afin de mieux gérer vos ressources. Concernant la commande utilisée en exemple, vous pouvez consulter la page dédiée à la commande ‘ls’ où figure d’autres options à employer.

  • AWS Software Developer Kit (SDK) permet d'interagir avec les API des services AWS de façon programmatique. En effet, c’est un outil qui s’utilise avec un langage de programmation et que vous intégrez dans vos applications. Il permet ainsi d’accéder aux services AWS depuis une application web, Mobile, Back, IoT, etc.

Il supporte plusieurs langages de programmation : C++, Kotlin, Javascript, Python, PHP, .NET, Ruby, Rust, Java, Go, Node.js, Swift.

Il s'intègre également dans les systèmes d’applications mobiles Android, iOS, etc.

Contrairement à l’outil AWS Management Console, où il faut utiliser un mot de passe (et potentiellement une vérification MFA), AWS CLI et AWS SDK sont protégés par des Access Keys (clés d’accès). Ce sont des informations d'identification à long terme d'un utilisateur IAM ou de l’utilisateur racine. Elles se composent de deux parties : 

  • Access Key ID : un ID de clé d'accès, par exemple AKIAIOSFODNN7EXAMPLE ;

  • Secret Access Key : une clé d'accès secrète, par exemple wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY .

Les Access Keys ne peuvent être générées que depuis la console AWS, comme dans l’image suivante :

Installez et configurez la CLI AWS

Pour installer la CLI AWS, reportez vous à la documentation officielle AWS sur l'installation de la CLI, qui vous indique comment faire en fonction de votre système d’exploitation Linux, MacOS ou Windows (voir image ci-dessous).

Puis, comme indiqué dans la section précédente, après avoir créé et récupéré les Access Keys, configurez votre CLI AWS à partir de la commande `aws configure`. En gras se trouve ce que vous devrez renseigner. 

$ aws configure

AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE

AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

Default region name [None]: eu-west-1

Default output format [None]: json

À noter qu’il est également possible d’accéder à la CLI AWS depuis le service AWS CloudShell, disponible depuis l’outil AWS Management Console. L’image suivante montre comment l’utiliser.

Screenshot d'interface 'AWS CloudShell'. En haut à droite on voit l'icone de AWS Management Console avec la note 'cliquez ici'
Utilisation de AWS management console

Vous pouvez regarder l’installation et configuration de la CLI AWS ici :

Écrivez votre infrastructure-as-code

Attardons-nous quelques instants sur la notion d’infrastructure-as-code, une pratique importante de la culture DevOps que Jasmine et Léo souhaiteraient mettre en place pour notre projet The Green Earth Post. Il s’agit d’un paradigme informatique qui décrit dans un langage informatique les logiciels à configurer et à installer sur un système, mais également l’infrastructure nécessaire à leur fonctionnement, comme les bases de données, la puissance de calcul ou les ressources de réseau. Comme pour un logiciel, il faut programmer les composants de l’infrastructure sous forme de code exécutable facile à configurer, à installer et à supprimer.

Dans un projet de site web en entreprise, le déploiement de l’infrastructure et des logiciels se fait par le biais d’un pipeline CI/CD

  • L’équipe de développement programme la partie logiciel, en utilisant AWS SDK, et l’infrastructure, sous forme de code avec AWS CloudFormation

  • L’équipe peut également décrire sous forme de scripts la manière de déployer le tout avec AWS CLI

  • Finalement, l’ensemble du code et des scripts est “poussé” vers un registre git comme GitHub qui déclenche le déploiement par un pipeline CI/CD. 

L’image ci-dessous récapitule ce fonctionnement.

Un chemin mène du développeurs et IDE vers registre Git, puis pipeline CI/CD et finit en AWS.
Principe de développement et déploiement de projets

AWS met à disposition une suite de services pour la gestion du code et des pipelines CI/CD. L’image ci-dessous indique à quel niveau intervient chaque service. Il faut préciser qu’un pipeline CI/CD est généralement découpé en trois étapes :

  1. le Build, pour générer les artefacts du code, ce sont des fichiers au format zip, jar, etc. ; 

  2. le Test, pour tester le code ; 

  3. le Deploy, pour déployer l’infrastructure et les programmes.

AWS CodeArtifact comporte AWS CodeCommit qui correspond au code, AWS CodeBuild et AWS CodeDeploy. Les deux derniers sont l’orchestrateur AWS Code Pipeline.
Principe de gestion de code et de pipelines CI/CD sur AWS
  • AWS CodeCommit met à disposition des registres git pour stocker et gérer les versions du code.

  • AWS CodeBuild est en charge d’exécuter les étapes de Build et de Test.

  • AWS CodeArtifact stocke les artefacts au format zip, jar ou docker produits lors de l’étape de Build d’un pipeline CI/CD.

  • AWS CodeDeploy déploie au sein d’AWS l’infrastructure et les programmes à partir des artefacts.

  • AWS CodePipeline permet d’orchestrer les services AWS CodeBuild, AWS CodeArtifact et AWS CodeDeploy.

Ce chapitre avait pour seul but d’introduire les outils programmatiques AWS dans le cadre de la préparation à l’examen. Pour la suite de la formation, nous utiliserons uniquement la console AWS.

En résumé

  • Il existe 3 outils pour accéder au cloud AWS :

      • AWS Management Console ;

      • AWS CLI ;

      • AWS SDK.

  • Pour utiliser les deux derniers outils, il faut utiliser des access keys.

  • AWS CloudFormation est le service qui permet de faire de l’infrastructure-as-code.

  • AWS met à disposition une suite de services pour la gestion du code et de ses versions :

    • AWS CodeCommit ;

    • AWS CodeBuild ;

    • AWS CodeArtifact ;

    • AWS CodeDeploy ;

    • AWS CodePipeline.

Nous venons d’achever la première partie de cette formation en apprenant comment interagir en tant que développeur avec le cloud AWS. Vous avez configuré le compte AWS de The Green Earth Post en centralisant le contrôle d'accès pour d’autres collaborateurs, la gouvernance et l’authentification d’utilisateurs et d’applications. 

Maintenant, tout est prêt pour construire l’ossature du site web ! Mais avant qu’on passe à cela, je vous invite à tester vos connaissances en répondant aux questions du quiz.

Exemple de certificat de réussite
Exemple de certificat de réussite