Didacticiel : Création et gestion d'un projet sans serveur dans AWS CodeStar - AWS CodeStar

Le 31 juillet 2024, Amazon Web Services (AWS) cessera de prendre en charge la création et la visualisation de AWS CodeStar projets. Après le 31 juillet 2024, vous ne pourrez plus accéder à la AWS CodeStar console ni créer de nouveaux projets. Toutefois, les AWS ressources créées par AWS CodeStar, y compris vos référentiels sources, vos pipelines et vos versions, ne seront pas affectées par cette modification et continueront de fonctionner. AWS CodeStar Les connexions et AWS CodeStar les notifications ne seront pas affectées par cette interruption.

 

Si vous souhaitez suivre le travail, développer du code et créer, tester et déployer vos applications, Amazon CodeCatalyst propose un processus de démarrage rationalisé et des fonctionnalités supplémentaires pour gérer vos projets logiciels. En savoir plus sur les fonctionnalités et les tarifs d'Amazon CodeCatalyst.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Didacticiel : Création et gestion d'un projet sans serveur dans AWS CodeStar

Dans ce didacticiel, vous allez utiliser AWS CodeStar pour créer un projet qui utilise le modèle d'application sans serveur AWS (AWS SAM) afin de créer et gérer des ressources AWS pour un service web hébergé dans AWS Lambda.

AWS CodeStarutilise AWS SAM, qui s'appuie surAWS CloudFormation, pour simplifier la création et la gestion des AWS ressources prises en charge, notamment les API, les AWS Lambda fonctions et les tables Amazon DynamoDB d'Amazon API Gateway. (Ce projet n'utilise aucune table Amazon DynamoDB.)

Pour plus d'informations, consultez la section Modèle d'application AWS sans serveur (AWSSAM) sur GitHub.

Prérequis : Effectuez les étapes détaillées dans Configuration AWS CodeStar.

Note

Des coûts liés à ce didacticiel peuvent être facturés sur votre compte AWS, dont des frais pour les services AWS utilisés par AWS CodeStar. Pour plus d'informations, consultez AWS CodeStar Pricing (Tarification CTlong).

Présentation

Dans ce tutoriel :

  1. Vous utilisez AWS CodeStar pour créer un projet qui utilise AWS SAM afin de générer et déployer un service web basé sur Python. Ce service Web est hébergé dans Amazon API Gateway AWS Lambda et est accessible via Amazon API Gateway.

  2. Vous parcourez les ressources principales du projet, qui incluent :

    • Le référentiel AWS CodeCommit où le code source du projet est stocké. Ce code source inclut la logique du service web et définit les ressources AWS connexes.

    • Le pipeline AWS CodePipeline qui automatise la génération du code source. Ce pipeline utilise AWS SAM pour créer et déployer une fonctionAWS Lambda, créer une API associée dans Amazon API Gateway et connecter l'API à la fonction.

    • La fonction qui est déployée sur AWS Lambda.

    • L'API créée dans Amazon API Gateway.

  3. Vous testez le service web pour vérifier qu'AWS CodeStar a généré et déployé le service web comme prévu.

  4. Vous configurez votre poste de travail local afin qu'il fonctionne avec le code source du projet.

  5. Vous modifiez le code source du projet à l'aide de votre poste de travail local. Lorsque vous ajoutez une fonction au projet, puis transmettez vos modifications au code source, AWS CodeStar recrée et redéploie le service web.

  6. Vous testez à nouveau le service web pour vérifier qu'AWS CodeStar a recréé et redéployé le service web comme prévu.

  7. Vous écrivez un test unitaire à l'aide de votre poste de travail local pour remplacer certains de vos tests manuels par un test automatisé. Lorsque vous transmettez le test unitaire, AWS CodeStar recrée et redéploie le service web, puis exécute le test unitaire.

  8. Vous affichez les résultats des tests unitaires.

  9. Vous nettoyez le projet. Cette étape permet d'éviter que ne soient facturés sur votre compte AWS les coûts liés à ce didacticiel.

Étape 1 : création du projet

Au cours de cette étape, vous utilisez la console AWS CodeStar pour créer un projet.

  1. Connectez-vous à la AWS CodeStar console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/codestar/.

    Note

    Vous devez vous connecter à l'AWS Management Consoleaide des informations d'identification associées à l'utilisateur IAM que vous avez créé ou dans Configuration AWS CodeStar lequel vous vous êtes identifié. Cet utilisateur doit disposer de la stratégie gérée AWSCodeStarFullAccess attachée.

  2. Choisissez la région AWS dans laquelle vous souhaitez créer le projet et ses ressources.

    Pour plus d'informations sur les régions AWS dans lesquelles AWS CodeStar est disponible, consultez Régions et points de terminaison dans le document Référence générale AWS.

  3. Sélectionnez Create a project (Créer un projet).

  4. Sur la page Choisir un modèle de projet :

    • Pour Type d'application, sélectionnez Service Web.

    • Dans Langage de programmation, sélectionnez Python.

    • Pour le AWSservice, sélectionnez AWS Lambda.

  5. Choisissez la case qui contient vos sélections. Choisissez Suivant.

  6. Pour Nom du projet, entrez un nom pour le projet (par exemple, My SAM Project). Si vous utilisez un nom différent de celui de l'exemple, veillez à l'utiliser tout au long de ce didacticiel.

    Pour ID de projet, AWS CodeStar choisit un identifiant associé pour ce projet (par exemple, my-sam-project). Si un ID de projet différent vous est proposé, veillez à l'utiliser tout au long de ce didacticiel.

    Laissez AWS CodeCommit sélectionné et ne modifiez pas la valeur Nom du référentiel.

  7. Choisissez Suivant.

  8. Vérifiez vos paramètres, puis choisissez Créer un projet.

    Si c'est la première fois que vous l'utilisez AWS CodeStar dans cette AWS région, dans Nom d'affichage et e-mail, entrez le nom d'affichage et l'adresse e-mail que vous AWS CodeStar souhaitez utiliser pour votre utilisateur IAM. Choisissez Suivant.

  9. Attendez qu'AWS CodeStar crée le projet. Cela peut prendre plusieurs minutes. Ne poursuivez pas tant que la bannière provisionnée du projet ne s'affiche pas lorsque vous actualisez.

Étape 2 : Parcourir les ressources du projet

Au cours de cette étape, vous parcourez quatre des ressources AWS du projet pour comprendre la façon dont celui-ci fonctionne.

  • Le AWS CodeCommit référentiel dans lequel le code source du projet est stocké. AWS CodeStardonne le nom au dépôt my-sam-project, où my-sam-projectest le nom du projet.

  • Le AWS CodePipeline pipeline qui utilise CodeBuild AWS SAM pour automatiser la création et le déploiement de la fonction Lambda et de l'API du service Web dans API Gateway. AWS CodeStardonne au pipeline le nom my-sam-project--Pipeline, où my-sam-projectest l'ID du projet.

  • Fonction Lambda qui contient la logique du service Web. AWS CodeStardonne à la fonction le nom awscodestar-my-sam-project-lambda- HelloWorld - RANDOM_ID, où :

    • my-sam-projectest l'ID du projet.

    • HelloWorldest l'ID de fonction tel que spécifié dans le template.yaml fichier du AWS CodeCommit référentiel. Vous parcourrez ce fichier ultérieurement.

    • ID_ALÉATOIRE est un ID aléatoire attribué par AWS SAM à la fonction pour garantir son caractère unique.

  • L'API d'API Gateway qui facilite l'appel de la fonction Lambda. AWS CodeStardonne à l'API le nom awscodestar-my-sam-project--lambda, où my-sam-projectest l'ID du projet.

Pour explorer le référentiel de code source dans CodeCommit
  1. Votre projet étant ouvert dans la AWS CodeStar console, dans la barre de navigation, choisissez Repository.

  2. Choisissez le lien vers votre CodeCommit dépôt (My-SAM-Project) dans Détails du dépôt.

  3. Dans la CodeCommit console, sur la page Code, les fichiers de code source du projet sont affichés :

    • buildspec.yml, qui CodePipeline indique CodeBuild à utiliser pendant la phase de construction pour empaqueter le service Web à l'aide de AWS SAM.

    • index.py, qui contient la logique de la fonction Lambda. Cette fonction génère simplement la chaîne Hello World, ainsi qu'un horodatage au format ISO.

    • README.md, qui contient des informations générales sur le référentiel.

    • template-configuration.json, qui contient l'ARN du projet avec des espaces réservés utilisés pour marquer les ressources avec l'ID du projet

    • template.yml, que AWS SAM utilise pour empaqueter le service Web et créer l'API dans API Gateway.

    Les fichiers de code source du projet dans CodeCommit

    Pour afficher le contenu d'un fichier, sélectionnez ce dernier dans la liste.

    Pour plus d'informations sur l'utilisation de la CodeCommit console, consultez le guide de AWS CodeCommit l'utilisateur.

Pour explorer le pipeline dans CodePipeline
  1. Pour afficher des informations sur le pipeline, avec votre projet ouvert dans la AWS CodeStar console, dans la barre de navigation, choisissez Pipeline et vous verrez que le pipeline contient :

    • Une phase Source pour obtenir le code source à partir d' CodeCommit.

    • Une phase Création pour générer le code source avec CodeBuild.

    • Une phase Déploiement pour déployer le code source généré et les ressources AWS avec AWS SAM.

  2. Pour afficher plus d'informations sur le pipeline, dans Détails du pipeline, choisissez votre pipeline pour l'ouvrir dans la CodePipeline console.

Pour plus d'informations sur l'utilisation de la CodePipeline console, consultez le guide de AWS CodePipeline l'utilisateur.

Pour explorer les activités du projet et les ressources AWS de service sur la page de présentation
  1. Ouvrez votre projet dans la AWS CodeStar console et dans la barre de navigation, sélectionnez Vue d'ensemble.

  2. Consultez les listes des activités du projet et des ressources du projet.

Pour explorer la fonction dans Lambda
  1. Votre projet étant ouvert dans la AWS CodeStar console, dans la barre de navigation latérale, choisissez Vue d'ensemble.

  2. Dans Ressources du projet, dans la colonne ARN, choisissez le lien pour la fonction Lambda.

    Le code de la fonction est affiché dans la console Lambda.

Pour plus d'informations sur l'utilisation de la console Lambda, consultez le manuel du AWS Lambdadéveloppeur.

Pour explorer l'API dans API Gateway
  1. Votre projet étant ouvert dans la AWS CodeStar console, dans la barre de navigation latérale, choisissez Vue d'ensemble.

  2. Dans Ressources du projet, dans la colonne ARN, choisissez le lien vers l'API Amazon API Gateway.

    Les ressources de l'API sont affichées dans la console API Gateway.

Pour plus d'informations sur l'utilisation de la console API Gateway, consultez le guide du développeur d'API Gateway.

Étape 3 : Tester le service web

Au cours de cette étape, vous testez le service web qu'AWS CodeStar vient de générer et de déployer.

  1. Votre projet étant toujours ouvert par rapport à l'étape précédente, dans la barre de navigation, choisissez Pipeline.

  2. Assurez-vous que le message Succeded est affiché pour les étapes Source, Build et Deploy avant de continuer. Cela peut prendre plusieurs minutes.

    Note

    Si la mention Échec est affichée pour l'une des phases, consultez les ressources de dépannage suivantes :

  3. Choisissez Afficher l'application.

Dans le nouvel onglet qui s'ouvre dans votre navigateur web, le service web affiche la sortie de réponse suivante :

{"output": "Hello World", "timestamp": "2017-08-30T15:53:42.682839"}

Étape 4 : Configurer votre poste de travail local pour modifier le code du projet

Dans cette étape, vous configurez votre poste de travail local pour modifier le code source dans le projet AWS CodeStar. Votre poste de travail local peut être un ordinateur physique ou virtuel exécutant macOS, Windows ou Linux.

  1. Votre projet étant toujours ouvert depuis l'étape précédente :

    • Dans la barre de navigation, choisissez IDE, puis développez Accédez au code de votre projet.

    • Choisissez Afficher les instructions sous Interface de ligne de commande.

      Si Visual Studio ou Eclipse est installé, choisissez plutôt Afficher les instructions sous Visual Studio ou Eclipse, suivez les instructions, puis passez àÉtape 5 : Ajouter la logique au service web.

  2. Suivez les instructions pour réaliser les tâches suivantes :

    1. Configurez Git sur votre poste de travail local.

    2. Utilisez la console IAM pour générer des informations d'identification Git pour votre utilisateur IAM.

    3. Clonez le CodeCommit dépôt du projet sur votre poste de travail local.

  3. Dans le menu de navigation de gauche, choisissez Projet pour revenir à l'aperçu de votre projet.

Étape 5 : Ajouter la logique au service web

Au cours de cette étape, vous utilisez votre poste de travail local pour ajouter la logique au service web. Plus précisément, vous ajoutez une fonction Lambda, puis vous la connectez à l'API dans API Gateway.

  1. Sur votre poste de travail local, accédez au répertoire qui contient le référentiel de code source cloné.

  2. Dans ce répertoire, créez un fichier nommé hello.py. Ajoutez le code suivant, puis enregistrez le fichier :

    import json def handler(event, context): data = { 'output': 'Hello ' + event["pathParameters"]["name"] } return { 'statusCode': 200, 'body': json.dumps(data), 'headers': {'Content-Type': 'application/json'} }

    Le code précédent génère la chaîne Hello en sortie, ainsi que la chaîne envoyée par l'auteur de l'appel à la fonction.

  3. Dans le même répertoire, ouvrez le fichier template.yml. Ajoutez le code suivant à la fin du fichier, puis enregistrez ce dernier :

    Hello: Type: AWS::Serverless::Function Properties: FunctionName: !Sub 'awscodestar-${ProjectId}-lambda-Hello' Handler: hello.handler Runtime: python3.7 Role: Fn::GetAtt: - LambdaExecutionRole - Arn Events: GetEvent: Type: Api Properties: Path: /hello/{name} Method: get

    AWSSAM utilise ce code pour créer une fonction dans Lambda, ajouter une nouvelle méthode et un nouveau chemin vers l'API dans API Gateway, puis connecter cette méthode et ce chemin à la nouvelle fonction.

    Note

    Il est très important de mettre en retrait le code qui précède. Si vous n'ajoutez pas le code exactement tel qu'il est affiché, le projet risque de ne pas être généré correctement.

  4. Exécutez git add . pour ajouter les modifications apportées au fichier dans la zone de transit du référentiel cloné. N'oubliez pas le point (.), qui ajoute tous les fichiers modifiés.

    Note

    Si vous utilisez Visual Studio ou Eclipse au lieu de la ligne de commande, les instructions pour l'utilisation de Git peuvent être différentes. Consultez la documentation de Visual Studio ou d'Eclipse.

  5. Exécutez git commit -m "Added hello.py and updated template.yaml." pour valider vos fichiers intermédiaires dans le référentiel cloné

  6. Exécutez git push pour publier votre validation dans le référentiel distant.

    Note

    Il se peut que vous soyez invité à saisir les informations de connexion générées précédemment. Pour éviter d'être invité à réaliser cette opération chaque fois que vous interagissez avec le référentiel distant, vous pouvez installer et configurer un gestionnaire d'informations d'identification Git. Par exemple, sous macOS ou Linux, vous pouvez exécuter git config credential.helper 'cache --timeout 900' dans le terminal pour laisser un intervalle d'au moins 15 minutes entre chaque invite. Vous pouvez aussi exécuter git config credential.helper 'store --file ~/.git-credentials' pour ne plus jamais voir d'invitation. Git stocke vos informations d'identification en texte clair dans un fichier brut de votre répertoire de base. Pour plus d'informations, consultez Git Tools - Credential Storage sur le site web de Git.

Une fois le push AWS CodeStar détecté, il demande CodePipeline à AWS SAM de reconstruire CodeBuild et de redéployer le service Web. Vous pouvez suivre la progression du déploiement sur la page Pipeline.

AWSSAM donne à la nouvelle fonction le nom awscodestar-my-sam-project-Lambda-Hello- RANDOM_ID, où :

  • my-sam-projectest l'ID du projet.

  • Hello est l'ID de fonction, tel que spécifié dans le fichier template.yaml.

  • ID_ALÉATOIRE est un ID aléatoire attribué par AWS SAM à la fonction pour garantir son caractère unique.

Étape 6 : Tester le service web amélioré

Au cours de cette étape, vous avez l'occasion de tester le service web amélioré qu'AWS CodeStar a généré et déployé, à partir de la logique que vous avez ajoutée lors de l'étape précédente.

  1. Votre projet étant toujours ouvert dans la AWS CodeStar console, dans la barre de navigation, choisissez Pipeline.

  2. Assurez-vous que le pipeline a été réexécuté et que le message Succeded est affiché pour les étapes Source, Build et Deploy avant de continuer. Cela peut prendre plusieurs minutes.

    Note

    Si la mention Échec est affichée pour l'une des phases, consultez les ressources de dépannage suivantes :

  3. Choisissez Afficher l'application.

    Dans le nouvel onglet qui s'ouvre dans votre navigateur web, le service web affiche la sortie de réponse suivante :

    {"output": "Hello World", "timestamp": "2017-08-30T15:53:42.682839"}
  4. Dans la zone d'adresse de l'onglet, ajoutez le chemin d'accès /hello/ et votre prénom à la fin de l'URL, (par exemple, https://ID_API.execute-api.ID_RÉGION.amazonaws.com/Prod/hello/VOTRE_PRÉNOM), puis appuyez sur Entrée.

Si votre prénom est Mary, le service web affiche la sortie de réponse suivante :

{"output": "Hello Mary"}

Étape 7 : Ajouter un test unitaire pour le service web

Au cours de cette étape, vous utilisez votre poste de travail local pour ajouter un test qu'AWS CodeStar exécute sur le service web. Ce test remplace les tests manuels que vous avez effectués précédemment.

  1. Sur votre poste de travail local, accédez au répertoire qui contient le référentiel de code source cloné.

  2. Dans ce répertoire, créez un fichier nommé hello_test.py. Ajoutez le code suivant, puis enregistrez le fichier.

    from hello import handler def test_hello_handler(): event = { 'pathParameters': { 'name': 'testname' } } context = {} expected = { 'body': '{"output": "Hello testname"}', 'headers': { 'Content-Type': 'application/json' }, 'statusCode': 200 } assert handler(event, context) == expected

    Ce test vérifie si la sortie de la fonction Lambda est au format attendu. Si tel est le cas, le test est réussi. Dans le cas contraire, le test échoue.

  3. Dans le même répertoire, ouvrez le fichier buildspec.yml. Remplacez le contenu du fichier par le code suivant, puis enregistrez le fichier.

    version: 0.2 phases: install: runtime-versions: python: 3.7 commands: - pip install pytest # Upgrade AWS CLI to the latest version - pip install --upgrade awscli pre_build: commands: - pytest build: commands: # Use AWS SAM to package the application by using AWS CloudFormation - aws cloudformation package --template template.yml --s3-bucket $S3_BUCKET --output-template template-export.yml # Do not remove this statement. This command is required for AWS CodeStar projects. # Update the AWS Partition, AWS Region, account ID and project ID in the project ARN on template-configuration.json file so AWS CloudFormation can tag project resources. - sed -i.bak 's/\$PARTITION\$/'${PARTITION}'/g;s/\$AWS_REGION\$/'${AWS_REGION}'/g;s/\$ACCOUNT_ID\$/'${ACCOUNT_ID}'/g;s/\$PROJECT_ID\$/'${PROJECT_ID}'/g' template-configuration.json artifacts: type: zip files: - template-export.yml - template-configuration.json

    Cette spécification de construction indique d' CodeBuild installer pytest, le framework de test Python, dans son environnement de construction. CodeBuild utilise pytest pour exécuter le test unitaire. Le reste de la spécification de génération reste identique.

  4. Utilisez Git pour transmettre ces modifications au référentiel distant.

    git add . git commit -m "Added hello_test.py and updated buildspec.yml." git push

Étape 8 : Afficher les résultats du test unitaire

Au cours de cette étape, vous pouvez voir si le test unitaire a réussi ou échoué.

  1. Votre projet étant toujours ouvert dans la AWS CodeStar console, dans la barre de navigation, choisissez Pipeline.

  2. Assurez-vous que le pipeline a été réexécuté avant de continuer. Cela peut prendre plusieurs minutes.

    Si le test unitaire a réussi, la mention Réussi s'affiche pour la phase Création.

  3. Pour afficher les détails des résultats du test unitaire, dans la phase de construction, cliquez CodeBuildsur le lien.

  4. Dans la CodeBuild console, sur la my-sam-project page Build Project :, dans l'historique des builds, cliquez sur le lien dans la colonne Build run du tableau.

  5. Sur la page my-sam-project: BUILD_ID, dans Build logs, cliquez sur le lien Afficher l'intégralité du log.

  6. Dans la console Amazon CloudWatch Logs, recherchez dans la sortie du journal un résultat de test similaire au suivant. Pour les résultats suivants, le test a été réussi :

    ... ============================= test session starts ============================== platform linux2 -- Python 2.7.12, pytest-3.2.1, py-1.4.34, pluggy-0.4.0 rootdir: /codebuild/output/src123456789/src, inifile: collected 1 item hello_test.py . =========================== 1 passed in 0.01 seconds =========================== ...

    Si le test a échoué, il devrait y avoir des détails dans la sortie de journal afin de vous aider à résoudre le problème.

Étape 9 : Nettoyer

Au cours de cette étape, vous nettoyez le projet afin d'éviter des frais permanents liés à ce projet.

Si vous souhaitez continuer à utiliser ce projet, vous pouvez ignorer cette étape, mais votre compte AWS risque d'être encore facturé.

  1. Votre projet étant toujours ouvert dans la AWS CodeStar console, dans la barre de navigation, sélectionnez Paramètres.

  2. Dans Détails du projet, choisissez Supprimer le projet.

  3. Entrezdelete, maintenez la case Supprimer les ressources sélectionnée, puis choisissez Supprimer.

    Important

    Si vous désactivez cette case, l'enregistrement du projet est supprimé d'AWS CodeStar, mais la plupart des ressources AWS du projet sont conservées. Votre compte AWS risque de continuer à être facturé.

Si un compartiment Amazon S3 a toujours AWS CodeStar été créé pour ce projet, procédez comme suit pour le supprimer. :

  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans la liste des buckets, choisissez l'icône à côté de aws-codestar- REGION_ID - ACCOUNT_ID - --pipe, où : my-sam-project

    • ID_RÉGION est l'ID de la région AWS du projet que vous venez de supprimer.

    • ID_COMPTE est votre ID de compte AWS.

    • my-sam-projectest l'ID du projet que vous venez de supprimer.

  3. Choisissez Vider le compartiment. Entrez le nom du compartiment, puis choisissez Confirmer.

  4. Choisissez Supprimer le compartiment. Entrez le nom du compartiment, puis choisissez Confirmer.

Étapes suivantes

Maintenant que vous avez terminé ce didacticiel, nous vous suggérons de consulter les ressources suivantes :