AWS CDK-Lambda + API Gateway (Python)

Comme il existe de nombreux cas de TypeScript, un mémorandum quand je l'ai essayé avec Python.

Aperçu

Impressions

procédure

La procédure utilisée pour vérifier le fonctionnement.

supposition

$ 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

la mise en oeuvre

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

référence

Recommended Posts

AWS CDK-Lambda + API Gateway (Python)
LINE BOT avec Python + AWS Lambda + API Gateway
Version Amazon API Gateway et AWS Lambda Python
[AWS] Créer une API avec API Gateway + Lambda
Créez rapidement une API avec Python, lambda et API Gateway à l'aide d'AWS SAM
[Python] J'ai écrit une API REST en utilisant AWS API Gateway et Lambda.
[AWS SAM] Créer une API avec DynamoDB + Lambda + API Gateway
[AWS] Essayez de tracer API Gateway + Lambda avec X-Ray
Essayez d'implémenter un robot Cisco Spark avec AWS Lambda + Amazon API Gateway (Python)
API Evernote en Python
Liste des API Python pour OpenCV3
API C en Python 3
Mémo de l'API TensorFlow (Python)
Hit API de Mastodon en Python
Utiliser l'API Trello avec python
[Python] Scraping dans AWS Lambda
Prenez rapidement une chaîne de requête avec API Gateway-> Lambda (Python)
API Web EXE par Python
Utiliser l'API Twitter avec Python
API Web avec Python + Falcon
API Blender Python dans Houdini (Python 3)
Appelez l'API avec python3.
Utiliser l'API subsonique avec python3
Conseils relatifs aux API Google Drive (Python)
(Python) Obtenir le montant de facturation AWS
Utilisez l'API e-Stat de Python
Hit API Gateway pour l'authentification IAM. Créer un en-tête de signature SigV4 (python)
Envoyer les images prises avec ESP32-WROOM-32 vers AWS (API Gateway → Lambda → S3)
Faire une demande de Device Farm (appium python) à API Gateway
J'ai essayé ChatOps avec Slack x API Gateway x Lambda (Python) x RDS
Créer Awaitable avec l'API Python / C
Récapitulatif si vous utilisez AWS Lambda (Python)
Acquisition de données à l'aide de l'API googlemap de python
Frappez l'API Sesami en Python
Exécutez Rotrics DexArm avec l'API Python
[Python] Accédez à l'API Google Translation
[Python3] Google translate google translation sans utiliser l'API
Extraction de texte avec AWS Textract (Python3.6)
Ecrire une fonction AWS Lambda en Python
Quine Post avec l'API Qiita (Python)
Gestion des exceptions lors de la communication de l'API Python
Essayez d'utiliser l'API de Pleasant (python / FastAPI)
Exécutez Python selon la planification sur AWS Lambda
Exemple d'API Boto3 (Python) que j'utilise souvent
Coopération entre le module python et l'API
Accédez à l'API Etherpad-lite avec Python
Créez Gmail en Python sans utiliser l'API
Remarque sur boto3 (AWS SDK for Python)
Utilisez l'API kabu Station® de Python
Accédez à l'API Web en Python
Comment utiliser l'API Python d'OpenPose
Utilisez l'API Flickr de Python
Script de création de couche AWS pour python
python Obtenez la météo à venir de l'API météo
Essayez d'utiliser l'API d'action de Python argparse
Implémentez rapidement l'API REST en Python