Dans le projet, j'ai décidé de créer une API simple en utilisant Python, donc je préparerai l'environnement pour créer rapidement l'API.
Éditeur ... VS Code OS…Windows10 Python 3.8 installé AWS CLI installé
Installation de l'AWS CLI version 2 sur l'interface de ligne de commande Windows-AWS
Selon le Document officiel
- Configuration de déploiement unique --AWS CloudFormation extensions
- Bonnes pratiques intégrées --Débogage et test locaux
- Intégration étroite avec les outils de développement
C'est un mérite. Personnellement, être capable de déboguer localement lambda était un gros avantage. Étant donné que la situation réelle est CloudFormation, elle est également hautement personnalisable.
Suivez les Documents officiels. En résumé
- Installez docker
- Installer à partir du programme d'installation (fichier .msi) distribué par AWS ou installer avec
pip install aws-sam-cli
- OK si la version est sortie avec
sam --version
docker est installé pour créer un environnement d'exécution pour lambda sur la machine locale.
Il s'agit d'une extension de VS Code pour utiliser AWS SAM à partir de VS Code avec une interface graphique. AWS Toolkit - Visual Studio Marketplace
Suivez les Documents officiels.
hello_world / app.py
et sélectionnez Déboguer localement
pour créer un environnement virtuel dans le docker et exécuter la fonction.
.aws/templates.json
で設定できる
Nous déploierons en fonction de template.yaml.
Deploy SAM Application
dans la palette de commandes
templete.yaml
Vous pouvez voir que le lambda a été créé comme indiqué ci-dessous. Vous pouvez également confirmer que l'API est créée dans API Gateway.
L'API créée par défaut est
GET: / hello
, vous devez donc modifier templete.yaml
pour changer cela.
Ci-dessous se trouve le templete.yaml
par défaut
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
trial-sam
Sample SAM Template for trial-sam
# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst
Globals:
Function:
Timeout: 3
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Properties:
CodeUri: hello_world/
Handler: app.lambda_handler
Runtime: python3.8
Events:
HelloWorld:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
Path: /hello
Method: get
Outputs:
# ServerlessRestApi is an implicit API created out of Events key under Serverless::Function
# Find out more about other implicit resources you can reference within SAM
# https://github.com/awslabs/serverless-application-model/blob/master/docs/internals/generated_resources.rst#api
HelloWorldApi:
Description: "API Gateway endpoint URL for Prod stage for Hello World function"
Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/hello/"
HelloWorldFunction:
Description: "Hello World Lambda Function ARN"
Value: !GetAtt HelloWorldFunction.Arn
HelloWorldFunctionIamRole:
Description: "Implicit IAM Role created for Hello World function"
Value: !GetAtt HelloWorldFunctionRole.Arn
Vous pouvez changer le chemin et la méthode HTTP en réécrivant ceci comme suit
Before
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Properties:
CodeUri: hello_world/
Handler: app.lambda_handler
Runtime: python3.8
Events:
HelloWorld:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
Path: /hello
Method: get
After
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Properties:
CodeUri: hello_world/
Handler: app.lambda_handler
Runtime: python3.8
Events:
HelloWorld:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
Path: /anypath # hello → anypath
Method: post # get → post
POST: J'ai pu changer en ʻanypath`.
Tout ce que vous avez à faire est d'assembler la logique selon vos besoins.
Si vous le déployez à nouveau, les modifications seront reflétées.
Recommended Posts