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 :
-
Initialiser. Téléchargez un exemple d'application à partir du modèle à l'aide de
sam init
. -
Testez localement. Testez l'application localement en utilisant
sam local invoke
et/ousam 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. -
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 de
sam package
. Dans cette étape, vous allez également inclure des informations sur l'application qui sera téléchargée vers AWS Serverless Application Repository. -
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 :
-
Vous devez disposer d'unAWS compte auprès d'un utilisateur IAM qui dispose d'autorisations d'administrateur. Consultez la section Créer unAWS compte.
-
Vous devez avoir l'interface de ligne de commande AWS SAM installée. Veuillez consulter Installation de l’interface de ligne de commande AWS SAM.
-
Vous devez disposer de la version 1.16.77 ou ultérieure de la version AWS CLI installée. Veuillez consulter Installation de AWS Command Line Interface.
É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
-
Exécutez la commande suivante à l'invite de commande de la CLI AWS SAM.
sam init --runtime python3.6
-
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 commandeinit
fournit le code Hello World dans le langage spécifié et un fichierREADME.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
-
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.
-
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 Gateway
http://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 renvoie
hello 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.
-
Modifiez le fichier
/hello_world/app.py
pour remplacer la chaîne de message'hello world'
par'Hello World!'
. -
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
-
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 sectionMetadata
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
Les
ReadmeUrl
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. -
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
-
Créez le package de déploiement de la fonction Lambda en exécutant la commande
package
AWS 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 du
aws-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-bucket
option. -
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 : leCodeUri
LicenseUrl
, 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èlepackaged.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 la
sam 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.