Comme il existe de nombreux cas de TypeScript, un mémorandum quand je l'ai essayé avec Python.
setup.py (contrairement à npm install --save, écrivez directement dans le fichier)..gitignore n'est pas inclus dans le référentiel généré par cdk dedans. Ajoutez un fichier séparé basé sur ce qui suit (cela ne semble pas se produire lorsque language = dactylographié).
- https://github.com/aws/aws-cdk/blob/m1aster/packages/aws-cdk/lib/init-templates/app/python/.gitignore
--GénéralLa procédure utilisée pour vérifier le fonctionnement.
$ npm install -g aws-cdk
$ cdk --version
1.19.0 (build 5597bbe)
Initialisez l'application avec cdk-init. Activez également virtualenv avec la commande source.
$ mkdir lambda-sample && cd $_
$ cdk init --language=python
$ source .env/bin/activate
setup.py
Définitions de bibliothèques dépendantes (par défaut, seul ʻaws-cdk.core existe, donc ajoutez ʻaws-lambda et ʻaws-apigateway`).
...
install_requires=[
"aws-cdk.core",
"aws-cdk.aws-lambda",
"aws-cdk.aws-apigateway",
],
...
Installez les bibliothèques dépendantes en fonction de la définition.
$ pip install -r requirements.txt
Implémentation de script.
$ 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
Ajout des définitions de déploiement Lambda et API Gateway à Stack.
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)
Déployez la pile définie. Si vous appelez le point de terminaison de la passerelle API qui est sorti dans le champ ʻOutputs`, le résultat de la sortie Lamba sera renvoyé.
$ 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
Recommended Posts