Da es viele Fälle von TypeScript gibt, ein Memorandum, als ich es mit Python versuchte.
--TypeScript-Vergleich
setup.py
hinzu (im Gegensatz zu npm install --save
schreiben Sie direkt in die Datei).language = typescript
).
- https://github.com/aws/aws-cdk/blob/m1aster/packages/aws-cdk/lib/init-templates/app/python/.gitignore
--AllgemeinesDas Verfahren zur Überprüfung des Vorgangs.
$ npm install -g aws-cdk
$ cdk --version
1.19.0 (build 5597bbe)
Initialisieren Sie die Anwendung mit cdk-init
. Aktivieren Sie außerdem "virtualenv" mit dem Befehl "source".
$ mkdir lambda-sample && cd $_
$ cdk init --language=python
$ source .env/bin/activate
setup.py Abhängige Bibliotheksdefinitionen (standardmäßig ist nur "aws-cdk.core" vorhanden, fügen Sie also "aws-lambda" und "aws-apigateway" hinzu).
...
install_requires=[
"aws-cdk.core",
"aws-cdk.aws-lambda",
"aws-cdk.aws-apigateway",
],
...
Installieren Sie abhängige Bibliotheken basierend auf der Definition.
$ pip install -r requirements.txt
Skriptimplementierung.
$ mkdir lambda
$ touch lambda/handler.py
lambdahandler.py
import json
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def main(event, context):
logger.info(json.dumps(event))
return {
'statusCode': 200,
'body': 'Hello World'
}
lamba_sample/lambda_sample.py
Stack-Definitionen für Lambda und API Gateway wurden zu Stack hinzugefügt.
from aws_cdk import (
aws_lambda,
aws_apigateway,
core
)
class LambdaSampleStack(core.Stack):
def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
handler = aws_lambda.Function(
self, "backend",
runtime=aws_lambda.Runtime.PYTHON_3_7,
handler="handler.main",
code=aws_lambda.AssetCode(path="./lambda"))
api = aws_apigateway.LambdaRestApi(self, "SampleLambda", handler=handler)
Stellen Sie den definierten Stapel bereit. Wenn Sie den API-Gateway-Endpunkt aufrufen, der im Feld "Ausgaben" ausgegeben wird, wird das Lamba-Ausgabeergebnis zurückgegeben.
$ cdk deploy
...
Outputs:
lambda-sample.SampleLambdaEndpoint9FAA5D96 = https://4rtjc3pjfh.execute-api.ap-northeast-1.amazonaws.com/prod/
$ curl https://4rtjc3pjfh.execute-api.ap-northeast-1.amazonaws.com/prod/
Hello World