AWS Lambda 함수 URL
6066 단어 lambdaawscloudformation
Lambda 함수 URL이란?
이전에는 HTTP 엔드포인트가 있는 Lambda를 노출하려는 경우 일반적으로 완전 관리형 API 게이트웨이 서비스를 사용했지만 이 새로운 기능을 사용하면 대신 Lambda 함수에 직접 연결된 HTTPS URL을 사용하여 API 게이트웨이를 제거할 수 있습니다. 중개자.
한 가지 큰 특징은 가격입니다. Lambda 함수 URL은 완전히 "무료"입니다. 일반 Lambda와 같이 호출 및 메모리 시간에 대해서만 비용을 지불하면 됩니다. 이것은 통합 비용이 드는 API 게이트웨이에 비해 한 가지 이점입니다.
그러나 이것이 API 게이트웨이를 직접 대체한다는 의미는 아닙니다. 대신 API Gateway는 JWT/사용자 지정 권한 부여자, 요청-응답 검증 및 변환, 사용 계획, 직접 내장된 AWS 방화벽 지원 등과 같은 고급 기능을 제공합니다.
작동 방식
각 URL은 최신 버전의 함수를 호출하는 함수의 별칭 또는 함수 ARN에 대해 고유합니다. 이를 통해 테스트 및 반복 개발을 위해 서로 다른 URL을 사용하여 함수의 여러 버전을 배포할 수 있습니다.
요청 처리는 간단하며 Lambda에서 일반적으로 사용하는 이벤트 객체도 HTTP 요청과 관련된 속성으로 채워집니다.
예를 들어 requestContext에서 메서드를 추출할 수 있습니다.
const method = event.requestContext.http.method;
URL의 모든 쿼리 매개변수는 queryStringParameters 속성을 통해 액세스할 수 있습니다.
const queryParam = event.querySTringParameters.myParam;
마지막으로 body 속성에서 요청 본문에 액세스할 수 있습니다.
const body = event.body;
1. ClickOps를 통해 Lambda URL 생성
Lambda를 생성할 때 UI에서 함수 URL을 활성화할 수 있습니다.
먼저 고급 옵션을 선택한 다음 기능 URL 활성화를 선택합니다.
이렇게 하면 인증 설정을 보고 CORS 옵션을 구성할 수 있는 새로운 옵션 세트가 나타납니다.
함수 옵션의 오른쪽에 있는 새로운 함수 URL 매개변수가 표시됩니다. 이것이 함수 URL입니다.
이제 APIGateway를 설정하지 않고도 웹 요청을 통해 코드를 호출할 수 있습니다!
2. Cloudformation을 통해 Lambda URL 생성
클릭 대신 Cloudformation을 사용하여 URL에 액세스할 수 있는 Lambda를 생성할 수 있습니다. Cloudformation은 Amazon의 코드형 인프라이며 이를 통해 프로그래밍 방식으로 "스택"을 생성하고 AWS에 배포할 수 있습니다.
AWSTemplateFormatVersion: "2010-09-09"
Description: "Cloudformation template for Lambda"
Resources:
MattsLambda:
Type: AWS::Lambda::Function
Properties:
Description: my lambda with a url
FunctionName: MattsTestLambda
Handler: index.handler
MemorySize: 128
Runtime: nodejs14.x
Timeout: 5
Role: {{ ADD YOUR ROLE ARN HERE }}
Code:
S3Bucket: mybucket
S3Key: mycode.js
이전에 Lambda를 생성했다면 위의 필드 대부분을 인식할 것입니다. 속성에 Lambda 함수 URL 필드를 추가하지 않았음을 알 수 있습니다. 이는 Lambda 함수 URL이 Lambda 함수 리소스에 직접 있는 필드가 아니라 새로운 유형의 리소스이기 때문입니다.
대신, 하나를 만들려면 리소스를 추가하고 만들고 있는 URL을 다시 참조해야 합니다.
AWSTemplateFormatVersion: "2010-09-09"
Description: "Cloudformation template for Lambda"
Resources:
MyLambda:
Type: AWS::Lambda::Function
Properties:
Description: my lambda with a url
FunctionName: MattsTestLambda
Handler: index.handler
MemorySize: 128
Runtime: nodejs14.x
Timeout: 5
Role: {{ ADD YOUR ROLE ARN HERE }}
Code:
S3Bucket: mybucket
S3Key: mycode.js
### Lets create the URL ###
MattsLambdaURL:
Type: AWS::Lambda::Url
DependsOn: MyLambda
Properties:
AuthType: NONE
TargetFunctionArn: !GetAtt MyLambda.Arn
Lambda::Url 유형의 새 리소스를 추가했습니다. 그러나 주의해야 할 점은 DependsOnattribute도 추가하고 있다는 것입니다. 이 속성은 Lambda 함수가 생성될 때까지 CloudFormation이 URL 리소스를 배포하지 않도록 합니다. Lambda ARN에 의존하기 때문에 마지막 줄에서 이를 참조하고 있음을 알 수 있습니다.
터미널에서 다음 명령을 실행하면 Cloudformation에 스택이 생성되고 람다와 URL이 생성됩니다.
aws cloudformation create-stack --stack-name MyStackName --template-body file://my-file.yaml
또는 AWS 대시보드를 통해 스택을 Cloudformation에 직접 업로드할 수 있습니다.
이제 AWS Lambda 함수 URL의 최신 기능과 이를 직접 구현하는 방법에 대한 간략한 설명이 있습니다.
소스 코드:
https://github.com/MattBidewell/snippets/tree/main/aws/cloudformation/lambda
추가 자료
AWS 발표:
https://aws.amazon.com/blogs/aws/announcing-aws-lambda-function-urls-built-in-https-endpoints-for-single-function-microservices/
Cloudformation 람다 함수:
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html
Cloudformation 람다 URL:
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-url.html
아마존 API 게이트웨이
https://aws.amazon.com/api-gateway/
내 트위터:
https://matty.dev
Reference
이 문제에 관하여(AWS Lambda 함수 URL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mattbidewell/aws-lambda-function-urls-3bob텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)