Lambda 함수 URL을 사용하여 DynamoDB에서 지원하는 서버리스 앱 작성
Lambda Function URL은 Lambda 함수에 전용 HTTP(S) 엔드포인트를 제공하는 비교적 새로운 기능(이 블로그 작성 당시)입니다. 기능(예: 웹후크 역할)에 대한 단일 엔드포인트만 필요하고 API 게이트웨이를 설정 및 구성하지 않으려는 경우에 정말 유용합니다. 도저히 감당이 안 될 것 같은데요! 나는 이 주제에 대해 to와 then을 사용하는 실제 예제가 포함된 몇 개의 블로그 게시물을 작성했습니다.
이것은 Lambda 함수 URL을 사용하여 DynamoDB에서 지원하는 간단한 애플리케이션을 작성하는 방법을 보여주는 또 다른 블로그 게시물(짧은 게시물입니다!)입니다. DynamoDB에서 작업(
GetItem
, PutItem
, Scan
)을 실행하는 Lambda 함수 URL에 의해 노출된 API 엔드포인트를 호출할 수 있습니다. 이 함수는 DynamoDB package의 AWS Go SDK을 사용하여 Go로 작성되었으며 AWS Serverless Application Model (SAM)은 솔루션을 빠르게 빌드하고 배포하는 데 사용됩니다.The code is available on GitHub for your reference
바로 시작합시다! 계속 진행하기 전에 다음이 준비되었는지 확인하십시오.
전제 조건
Create an AWS account 아직 없는 경우 로그인하십시오. 사용하는 IAM 사용자는 필요한 AWS 서비스 호출을 수행하고 AWS 리소스를 관리할 수 있는 충분한 권한이 있어야 합니다.
AWS CLI 설치 및 구성됨
Go (
1.16
이상) 설치됨 AWS Serverless Application Model (AWS SAM) 설치됨
전개
Github 리포지토리를 복제하여 시작하고 올바른 디렉터리로 변경합니다.
git clone https://github.com/abhirockzz/lambda-functionurl-dynamodb-sam-go
cd lambda-functionurl-dynamodb-sam-go
AWS SAM을 사용하여 앱을 빌드합니다.
sam build
이제 애플리케이션을 배포할 준비가 되었습니다.
sam deploy --guided
메시지가 표시되면 스택 이름 등과 같은 필수 정보를 입력합니다. 아래 예를 참조하십시오.
Configuring SAM deploy
======================
Looking for config file [samconfig.toml] : Not found
Setting default arguments for 'sam deploy'
=========================================
Stack Name [sam-app]:
AWS Region [us-east-1]:
#Shows you resources changes to be deployed and require a 'Y' to initiate deploy
Confirm changes before deploy [y/N]: y
#SAM needs permission to be able to create roles to connect to the resources in your template
Allow SAM CLI IAM role creation [Y/n]: y
#Preserves the state of previously provisioned resources when an operation fails
Disable rollback [y/N]: n
DemoFunction Function Url may not have authorization defined, Is this okay? [y/N]: y
Save arguments to configuration file [Y/n]:
SAM configuration file [samconfig.toml]:
SAM configuration environment [default]:
Once you have run
sam deploy --guided
mode once and saved arguments to a configuration file (samconfig.toml), you can usesam deploy
in future to use these defaults.
성공하면 이제 다음이 준비되어 있어야 합니다.
users
) PutItem
, GetItem
및 Scan
) Note the output from the SAM deployment process. This contains the HTTP URL endpoint for your function required for testing
애플리케이션 테스트
통합 테스트에는 HTTP 요청을 Lambda 함수 URL로 보내는 작업이 포함됩니다. 이 예에서는 curl CLI를 사용했지만 다른 옵션을 사용할 수도 있습니다.
Lambda 함수 URL 끝점을 환경 변수로 내보냅니다.
export LAMBDA_FUNCTION_URL_ENDPOINT=<SAM deployment output>
e.g. export LAMBDA_FUNCTION_URL_ENDPOINT=https://qfmpu2n74ik7m2m3ipv3m6yw5a0qiwmp.lambda-url.us-east-1.on.aws/
엔드포인트를 호출하여 DynamoDB 테이블에 새 항목을 생성합니다.
curl -i -X POST -H "Content-Type: application/json" -d '{"email":"[email protected]", "username":"user-1"}' $LAMBDA_FUNCTION_URL_ENDPOINT
curl -i -X POST -H "Content-Type: application/json" -d '{"email":"[email protected]", "username":"user-2"}' $LAMBDA_FUNCTION_URL_ENDPOINT
두 경우 모두 HTTP
201 Created
응답을 받아야 합니다. 이는 항목이 DynamoDB의 users
테이블에 추가되었음을 나타냅니다.방금 만든 레코드에 대한 정보를 검색해 보겠습니다(URL에
query
매개변수(이메일)를 추가하여 수행).curl -i $LAMBDA_FUNCTION_URL_ENDPOINT?email=[email protected]
방금 추가한 모든 항목을 검색하려면:
curl -i $LAMBDA_FUNCTION_URL_ENDPOINT
아직 추가하지 않은 항목을 검색해 보세요.
curl -i $LAMBDA_FUNCTION_URL_ENDPOINT?email=[email protected]
이 경우
HTTP 404 Not Found
응답을 받게 됩니다.마지막으로 중복 레코드를 삽입해 봅니다.
curl -i -X POST -d '{"email":"[email protected]", "username":"user-2"}' $LAMBDA_FUNCTION_URL_ENDPOINT
이 경우 Lambda 함수는 Condition Expression (
409 Conflict
)가 기존 항목(동일한 attribute_not_exists(email)
포함)을 email
호출로 덮어쓰는 것을 방지하므로 HTTPPutItem
를 반환합니다.그게 다야! Lambda 함수에 의해 노출된 모든 작업을 시도했습니다.
대청소
완료되면 스택을 삭제하십시오.
sam delete --stack-name STACK_NAME
스택이 삭제되었는지 확인
aws cloudformation list-stacks --query "StackSummaries[?contains(StackName,'STACK_NAME')].StackStatus"
마무리!
이것은 짧지만 유용한 튜토리얼이었습니다! 이를 사용하여 Lambda 함수 URL에 의해 노출된 기능이 있는 DynamoDB 백엔드로 서버리스 앱을 빠르게 부트스트랩할 수 있습니다.
즐거운 코딩하세요!
Reference
이 문제에 관하여(Lambda 함수 URL을 사용하여 DynamoDB에서 지원하는 서버리스 앱 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws/use-lambda-function-url-to-write-a-serverless-app-backed-by-dynamodb-76k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)