AWS CDK(Python)를 사용하여 API Gateway + Lambda에서 POST 수신
10120 단어 aws-cdk람다파이썬APIGatewayAWS
이 기사에서는 POST 된 JSON을 API Gateway를 통해 Lambda에서 처리하는 간단한 흐름을 Python을 사용하여 구현합니다.
AWS CDK를 사용할 수 있도록 설정하려면 아래 공식 문서 등을 참조하십시오.
AWS CDK Workshop
절차
먼저 적절한 디렉토리를 만들고 다음
cdk.json
를 만듭니다.cdk.json
{
"app": "python3 app.py"
}
그런 다음 그 디렉토리에 새로운 디렉토리 (예 :
lambda
)를 만들고 그 안에 Lambda의 함수를 만듭니다 (여기서는 webhook.py
). 단순히 요청 본문 부분의 JSON을 그대로 반환하는 함수입니다.lambda/webhook.py
import json
def handler(event, content):
try:
body = event.get("body")
print(body)
status_code = 200
except Exception as e:
status_code = 500
body = {"description": str(e)}
return {
"statusCode": status_code,
"headers": {
"Content-Type": "text/plain"
},
"body": json.dumps(body)
}
마지막으로 원래 디렉토리로 돌아가서 혼마루의 앱을 정의해 갑니다(
app.py
).app.py
import os
from aws_cdk import (
core,
aws_lambda as _lambda,
aws_apigateway as apigw
)
class PrintPostStack(core.Stack):
def __init__(self, scope: core.App, name: str, **kwargs) -> None:
super().__init__(scope, name, **kwargs)
lambda_func = _lambda.Function(
self, "PrintPostFunc",
code=_lambda.Code.from_asset("lambda"),
handler="webhook.handler",
runtime=_lambda.Runtime.PYTHON_3_7,
)
api = apigw.RestApi(self, "PrintPostApi")
api.root.add_method("POST", apigw.LambdaIntegration(lambda_func))
app = core.App()
PrintPostStack(
app, "PrintPostStack",
env={
"region": os.environ["CDK_DEFAULT_REGION"],
"account": os.environ["CDK_DEFAULT_ACCOUNT"]
}
)
app.synth()
lambda_func
에서 Lambda 함수를 설정합니다.code=_lambda.Code.from_asset("lambda")
는 Lambda 함수 파일이 lambda
디렉토리에 있다는 것을 handler="webhook.handler"
는 webhook.py
의 handler
runtime=_lambda.Runtime.PYTHON_3_7
는 파이썬 3.7을 사용합니다.api
에서 API Gateway를 구성 중입니다.api.root.add_method("POST", apigw.LambdaIntegration(lambda_func))
에서 POST 메서드를 추가, lambda_func와 통합 이상입니다. 그리고는 아래의 명령으로 배포할 뿐.
$ cdk deploy
성공하면 엔드포인트 URL이 표시됩니다. cURL 명령으로 적절한 JSON을 POST하고 응답을 확인해 봅시다.
$ curl -X POST \
> -H "Content-Type: application/json" \
> -d '{"Key1":"Value1", "Key2":"Value2"}' \
> https://xxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/prod/
"{\"Key1\":\"Value1\", \"Key2\":\"Value2\"}"
위와 같이 JSON이 그대로 돌아오면 성공입니다.
또,
webhook.py
에서는 리퀘스트 바디부를 print(body)
하고 있습니다. 이 로그는 CloudWatch에서 확인할 수 있습니다. AWS 콘솔 > 서비스에서 CloudWatch를 찾아 클릭한 다음 로그 > 로그 그룹에서 PrintPostStack
라는 이름의 로그를 확인합니다. 다음과 같이 JSON이 표시되어야합니다.이상입니다! 매우 간단한 API Gateway + Lambda를 통해 AWS CDK를 소개해 보았습니다.
이하의 공식의 예도 참고가 된다고 생각하므로 봐 주세요.
Reference
이 문제에 관하여(AWS CDK(Python)를 사용하여 API Gateway + Lambda에서 POST 수신), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ken_yoshi/items/5f558c0cf516a97e8cde텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)