AWS CDK를 사용하는 AWS Lambda 함수 URL
함수 URL은 Lambda 함수에 대한 작업
HTTP GET
을 수행하는 더 간단한 방법을 허용하므로 패턴을 대체할 것을 약속합니다.Github repository can be found here.
CDK 초기화 및 배포
CDK 설정 및 환경 부트스트래핑은 다루지 않겠습니다. 해당 정보를 찾을 수 있습니다here..
CDK를 설정했으면 프로젝트를 설정해야 합니다.
mkdir CDK_Lambda_URL && cd CDK_Lambda_URL
cdk init --language python
source .venv/bin/activate
aws-cdk.aws-lambda-python-alpha
를 추가합니다. pip install -r requirements.txt && pip install -r requirements-dev.txt
이제 빈 스택을 AWS에 배포합니다.
cdk deploy
스택 설계
이 스택은 도커 컨테이너를 사용하여 모든 추가 라이브러리로 함수를 빌드하기 위해
aws-lambda-python-alpha
를 사용하여 람다 함수를 배포합니다. 실행하기 전에 Docker가 설치되어 있고 데몬이 실행 중인지 확인하십시오cdk deploy
.from aws_cdk import CfnResource, Stack
from aws_cdk import aws_lambda as _lambda
from aws_cdk import aws_lambda_python_alpha as _lambda_python
from constructs import Construct
class LambdaStack(Stack):
def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
# in __init__ I like to initialize the infrastructure I will be creating
self.example_lambda = None
self.build_infrastructure()
def build_infrastructure(self):
# For convenience, consolidate infrastructure construction
self.build_lambda()
def build_lambda(self):
self.example_lambda = _lambda_python.PythonFunction(
scope=self,
id="ExampleLambda",
# entry points to the directory
entry="lambda_funcs/LambdaURL",
# index is the file name
index="URL_lambda.py",
# handler is the function entry point name in the lambda.py file
handler="handler",
runtime=_lambda.Runtime.PYTHON_3_9,
# name of function on AWS
function_name="ExampleLambdaFunctionURL",
)
# Set up the Lambda Function URL
CfnResource(
scope=self,
id="lambdaFuncUrl",
type="AWS::Lambda::Url",
properties={
"TargetFunctionArn": self.example_lambda.function_arn,
"AuthType": "NONE",
"Cors": {"AllowOrigins": ["*"]},
},
)
# Give everyone permission to invoke the Function URL
CfnResource(
scope=self,
id="funcURLPermission",
type="AWS::Lambda::Permission",
properties={
"FunctionName": self.example_lambda.function_name,
"Principal": "*",
"Action": "lambda:InvokeFunctionUrl",
"FunctionUrlAuthType": "NONE",
},
)
# Get the Function URL as output
Output(
scope=self,
id="funcURLOutput",
value=cfnFuncUrl.get_att(attribute_name="FunctionUrl").to_string(),
)
최소 작동 Lambda 함수
API 게이트웨이가 예상하는 응답 형식의 예here를 볼 수 있습니다.
from logging import getLogger
logger = getLogger()
logger.setLevel(level="DEBUG")
def handler(event, context):
logger.debug(msg=f"Initial event: {event}")
response = {
"isBase64Encoded": False,
"statusCode": 200,
"headers": {
"Access-Control-Allow-Origin": "*",
},
"body": f"Nice! You said {event['queryStringParameters']['q']}",
}
return response
이제 할 수 있습니다
cdk deploy
. Lambda 함수는 도커를 사용하여 빌드되고 부트스트랩된 ECR 리포지토리에 업로드됩니다. 프로젝트가 빌드되면 CloudFormation
템플릿을 합성하고 인프라 배포를 시작합니다. AWS CloudFormation
에서 스택 배포를 볼 수 있습니다. 인프라가 상대적으로 단순하기 때문에 신속해야 합니다.스택의 URL 출력을 사용하거나
AWS Console
에서 Lambda 함수로 이동하여 Lambda Function URL
를 찾을 수 있습니다.함수 URL 쿼리
Function URL
를 쿼리하고 람다 함수에서 다시 응답을 받으려면 GET
또는 requests
를 사용하여 Postman
요청을 보내십시오.Reference
이 문제에 관하여(AWS CDK를 사용하는 AWS Lambda 함수 URL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/wesleycheek/aws-lambda-function-urls-with-aws-cdk-58ih텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)