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