Démarrage rapide : Publication d'applications - AWS Serverless Application Repository

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.

Démarrage rapide : Publication d'applications

Ce guide vous accompagne à travers les étapes de téléchargement, de création, de test et de publication d'un exemple d'application sans serveur dans AWS Serverless Application Repository en utilisant l'interface de ligne de commande AWS SAM. Vous pouvez utiliser cet exemple d'application comme point de départ pour développer et publier votre propre application sans serveur.

Présentation

Les étapes suivantes décrivent comment télécharger, créer et publier un exemple d'application sans serveur :

  1. Initialiser. Téléchargez un exemple d'application à partir du modèle à l'aide de sam init.

  2. Testez localement. Testez l'application localement en utilisant sam local invoke et/ou sam local start-api. Notez qu'avec ces commandes, même si votre fonction Lambda est invoquée localement, elle lit et écrit dansAWS des ressources duAWS Cloud.

  3. Package. Lorsque vous êtes satisfait de votre fonction Lambda, regroupez la fonction Lambda, leAWS SAM modèle et toutes les dépendances dans un package deAWS CloudFormation déploiement à l'aide desam package. Dans cette étape, vous allez également inclure des informations sur l'application qui sera téléchargée vers AWS Serverless Application Repository.

  4. Publiez. Publiez l'application sur AWS Serverless Application Repository en utilisant sam publish. À la fin de cette étape, vous pouvez visualiser votre applicationAWS Serverless Application Repository et la déployer dans leAWS cloud à l'aide deAWS Serverless Application Repository.

L'exemple Application Hello World à la section suivante vous guide à travers ces étapes de création et de publication d'une application sans serveur.

Application Hello World

Dans cet exercice, vous téléchargez et testez une application Hello World sans serveur qui représente un back-end d'API simple. Elle possède un point de terminaison Amazon API Gateway qui prend en charge une opération GET et une fonction Lambda. Lorsqu'une requête GET est envoyée au point de terminaison, l'API Gateway appelle la fonction Lambda. Ensuite, AWS Lambda exécute la fonction, qui renvoie simplement un message hello world.

L'application comporte les composants suivants :

  • AWS SAMModèle qui définit deuxAWS ressources pour l'application Hello World : un service API Gateway avec une opération GET et une fonction Lambda. Le modèle définit également le mappage entre l'opération GET d'API Gateway et la fonction Lambda.

  • Code d'application écrit en Python.

Avant de commencer

Assurez-vous que vous avez la configuration requise pour cet exercice :

Étape 1 : Initialiser l'application

Dans cette section, vous téléchargez l'exemple d'application, qui se compose d'un modèle AWS SAM et d'un code d'application.

Pour initialiser l'application
  1. Exécutez la commande suivante à l'invite de commande de la CLI AWS SAM.

    sam init --runtime python3.6
  2. Vérifiez le contenu du répertoire créé par la commande (sam-app/) :

    • template.yaml— Définit deuxAWS ressources requises par l'application Hello World : une fonction Lambda et un point de terminaison API Gateway qui prend en charge une opération GET. Le modèle définit également le mappage entre les deux ressources.

    • Contenu lié au code de l'application Hello World :

      • hello_world/répertoire — Contient le code de l'application, qui est renvoyéhello world lorsque vous l'exécutez.

    Note

    Pour cet exercice, le code de l'application est écrit en Python et vous spécifiez le moteur d'exécution dans la commande init. AWS Lambda prend en charge des langues supplémentaires pour créer du code d'application. Si vous spécifiez un autre moteur d'exécution pris en charge, la commande init fournit le code Hello World dans le langage spécifié et un fichier README.md que vous pouvez suivre pour ce langage. Pour de plus amples informations sur les runtimes pris en charge, veuillez consulter Environnement d'exécution Lambda et bibliothèques disponibles.

Étape 2 : Tester l'application localement

Maintenant que vous avez l'application AWS SAM sur votre machine locale, suivez les étapes ci-dessous pour la tester localement.

Pour tester l'application localement
  1. Démarrez le point de terminaison API Gateway localement. Vous devez exécuter la commande suivante à partir du répertoire qui contient le fichier template.yaml.

    sam-app> sam local start-api --region us-east-1

    La commande renvoie un point de terminaison API Gateway auquel vous pouvez envoyer des demandes pour des tests locaux.

  2. Testez l'application. Copiez l'URL du point de terminaison API Gateway, collez-la dans le navigateur et choisissez Enter. Voici un exemple d'URL de point de terminaison d'API Gatewayhttp://127.0.0.1:3000/hello.

    API Gateway appelle localement la fonction Lambda à laquelle le point de terminaison est mappé. La fonction Lambda s'exécute dans le conteneur Docker local et renvoiehello world. API Gateway renvoie une réponse au navigateur qui contient le texte.

Exercice : Modifier la chaîne de message

Après avoir testé avec succès l'exemple d'application, vous pouvez expérimenter avec une simple modification : modifier la chaîne de message renvoyée.

  1. Modifiez le fichier /hello_world/app.py pour remplacer la chaîne de message 'hello world' par 'Hello World!'.

  2. Rechargez l'URL de test dans votre navigateur et observez la nouvelle chaîne.

Vous remarquerez que votre nouveau code est chargé dynamiquement, sans que vous ayez redémarré le processus sam local.

Étape 3 : Créer le package de l'application

Après avoir testé votre application localement, vous utilisez l'interface de ligne de commande AWS SAM pour créer un package de déploiement et un modèle AWS SAM empaqueté.

Note

Au cours des étapes suivantes, vous créez un fichier .zip pour le contenu du répertoire hello_world/, qui contient le code de l'application. Ce fichier .zip est le package de déploiement de votre application sans serveur. Pour plus d'informations, consultez la section Création d'un Package de déploiement (Python) dans le Guide duAWS Lambda développeur.

Pour créer un package de déploiement Lambda
  1. Ajoutez une section Metadata à votre fichier de modèle AWS SAM fournissant les informations requises sur l'application. Pour de plus amples informations sur la section Metadata des modèles AWS SAM, veuillez consulter Propriétés de la section des métadonnées de modèles AWS SAM dans le Guide du développeur AWS Serverless Application Model.

    Voici un exemple de section Metadata :

    Metadata: AWS::ServerlessRepo::Application: Name: my-app Description: hello world Author: user1 SpdxLicenseId: Apache-2.0 LicenseUrl: LICENSE.txt ReadmeUrl: README.md Labels: ['tests'] HomePageUrl: https://github.com/user1/my-app-project SemanticVersion: 0.0.1 SourceCodeUrl: https://github.com/user1/my-app-project

    LesReadmeUrl propriétésLicenseUrl et peuvent être des références à des fichiers locaux (comme dans l'exemple ci-dessus) ou des liens vers des compartiments Amazon S3 qui hébergent déjà ces artefacts.

  2. Créez un compartiment S3 à l'emplacement où vous souhaitez enregistrer le code empaqueté. Si vous souhaitez utiliser un compartiment S3 existant, ignorez cette étape.

    sam-app> aws s3 mb s3://bucketname
  3. Créez le package de déploiement de la fonction Lambda en exécutant la commandepackageAWS SAM CLI suivante.

    sam-app> sam package \ --template-file template.yaml \ --output-template-file packaged.yaml \ --s3-bucket bucketname

    La commande exécute les opérations suivantes :

    • Comprime le contenu duaws-sam/hello_world/ répertoire et le charge sur Amazon S3.

    • Télécharge le package de déploiement, le fichier README et le fichier LICENSE dans le compartiment Amazon S3 spécifié par l'--s3-bucketoption.

    • Affiche un nouveau fichier modèle, appelé packaged.yaml, que vous utilisez à l'étape suivante pour publier l'application AWS Serverless Application Repository. Le fichier depackaged.yaml modèle est similaire au fichier de modèle original (template.yaml) mais présente une différence significative : leCodeUriLicenseUrl, et lesReadmeUrl propriétés pointent vers le compartiment Amazon S3 et les objets qui contiennent les artefacts respectifs. L'extrait suivant d'un exemple de fichier de modèle packaged.yaml montre la propriété CodeUri :

      HelloWorldFunction: Type: AWS::Serverless::Function # For more information about function resources, see https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction Properties: CodeUri: s3://bucketname/fbd77a3647a4f47a352fcObjectGUID ...

Étape 4 : Publier l'application

Maintenant que vous avez créé le package de déploiement, vous l'utilisez pour publier l'application sur AWS Serverless Application Repository.

Pour publier l'application sans serveur dans le répertoire AWS Serverless Application Repository
  • Exécutez la commande suivante pour publier la nouvelle application AWS Serverless Application Repository avec la première version créée en tant que 0.0.1.

    sam-app> sam publish \ --template packaged.yaml \ --region us-east-1
Note

L'application sera créée comme privée par défaut. Vous devez partager l'application avant que d'autresAWS comptes soient autorisés à visualiser et à déployer l'application. Consultez Étapes suivantes ci-dessous pour plus de détails sur le partage de votre application.

Étapes suivantes

Maintenant que vous avez publié votre exemple d'application, voici comme vous pouvez l'utiliser.

  • Afficher votre application dansAWS Serverless Application Repository : la sortie de lasam publish commande inclura un lienAWS Serverless Application Repository vers la page détaillée de votre application. Vous pouvez également accéder à la page de destination AWS Serverless Application Repository et rechercher votre application.

  • Partagez votre application : votre application étant définie comme privée par défaut, elle n'est pas visible par les autresAWS comptes. Pour partager votre application avec d'autres utilisateurs, vous devez soit la rendre publique, soit accorder l'autorisation d'accéder à une liste spécifique deAWS comptes. Pour de plus amples informations sur le partage de votre application à l'aide de AWS CLI, veuillez consulter AWS Serverless Application RepositoryExemples de politiques d'application. Pour de plus amples informations sur le partage de votre application à l'aide de la console, veuillez consulter Suppression d'une application.

En savoir plus

Pour de plus amples informations sur la section Metadata des modèles AWS SAM, et les commandes sam package et sam publish de l'interface de ligne de commande AWS SAM, veuillez consultez Publication d'applications à l'aide de l'interface de ligne de commande AWS SAM dans le Guide du développeur AWS Serverless Application Model.