Im Projekt habe ich beschlossen, eine einfache API mit Python zu erstellen, damit ich die Umgebung für die schnelle Erstellung der API vorbereiten kann.
Editor ... VS Code OS…Windows10 Python 3.8 installiert AWS CLI installiert
Installieren von AWS CLI Version 2 auf der Windows-AWS-Befehlszeilenschnittstelle
Laut dem offiziellen Dokument
- Einzelne Bereitstellungskonfiguration --AWS CloudFormation-Erweiterungen
- Eingebaute Best Practices
- Lokales Debuggen und Testen
- Enge Integration mit Entwicklungswerkzeugen
Ist ein Verdienst. Persönlich war es ein großer Vorteil, Lambda lokal debuggen zu können. Da es sich bei der tatsächlichen Situation um CloudFormation handelt, ist es auch in hohem Maße anpassbar.
Folgen Sie den offiziellen Dokumenten. Zusammenfassend
- Installieren Sie Docker
- Installieren Sie über das von AWS vertriebene Installationsprogramm (MSI-Datei) oder installieren Sie es mit
pip install aws-sam-cli
- OK, wenn die Version mit
sam --version
ausgegeben wird
Docker wird installiert, um eine Ausführungsumgebung für Lambda auf dem lokalen Computer zu erstellen.
Dies ist eine Erweiterung von VSCode zum Betreiben von AWS SAM von VSCode mit GUI. AWS Toolkit - Visual Studio Marketplace
Folgen Sie dem offiziellen Dokument.
.aws/templates.json
で設定できる
Wir werden basierend auf template.yaml bereitstellen.
templete.yaml
Sie können sehen, dass das Lambda wie unten gezeigt erstellt wurde. Sie können bestätigen, dass die API auch in API Gateway erstellt wurde.
Die standardmäßig erstellte API ist
GET: / hello
, also musst du templete.yaml
bearbeiten, um dies zu ändern.
Unten ist die Standardeinstellung "templete.yaml"
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
Sie können den Pfad und die HTTP-Methode ändern, indem Sie dies wie folgt umschreiben
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: Ich konnte es in "anypath" ändern.
Alles was Sie tun müssen, ist die Logik gemäß Ihren Anforderungen zusammenzustellen.
Wenn Sie es erneut bereitstellen, werden die Änderungen übernommen.