Golang: CDK를 사용한 AWS Lambda 구축 및 배포🚀

7361 단어 awscdkgolambda
내 이전 글을 읽으면 Golang과 AWS와 자주 협력하는 것을 발견할 수 있기 때문에 이 글은 AWS Lambda에 서버 없는 API를 배치하고 API 스위치를 사용해서 접근하는 방법을 소개할 것이다.
나는 GOgo-chi/chi 컴파일러 API를 사용하여 http 루트층을 처리할 것이다.

TL;박사 01 명


모든 소스 코드는 thomaspoignant/cdk-golang-lambda-deployment 저장소에서 찾을 수 있습니다.

토마스 포이그난트 / cdk golang lambda 배포



GO에 서버 없는 API 만들기


그래서 우리가 해야 할 첫 번째 일은 go-chiaws-lambda-goSDK를 사용하여 API를 만드는 것이다. 그래서 우리는 이러한 의존항을 가져와야 한다.
go get github.com/aws/aws-lambda-go
go get github.com/awslabs/aws-lambda-go-api-proxygo get github.com/go-chi/chi
go get github.com/go-chi/render
보시다시피, 이 프레임워크는 github.com/awslabs/aws-lambda-go-api-proxy lambda 프로세서와 함께 사용할 수 있도록 가져왔습니다.
이제 API 로직을 포함하는 go-chi 파일을 생성할 수 있습니다.

이 파일에서 우리는 두 가지 중요한 함수가 있는데 main.gomain()


이것은 이해handler() 함수가 lambda가 시작될 때만 호출되는 것을 매우 중요하기 때문에 모든 API 요청이 이 동작을 실행하기를 원한다면 main()에서 어떤 조작도 실행하지 마십시오


main() 함수는 lambda를 호출하는 곳이기 때문에 요청이 들어올 때마다 이 함수를 사용합니다. 저희가 사용하는chiadapter이기 때문에 처리 프로그램은 handler() 공유기를 사용하여 요청을 처리합니다.


이 어댑터를 사용하면 http층의 프레임워크를 처리하는 모든 장점을 보존할 수 있습니다. 이 어댑터는 더 좋은 경로를 제공할 수 있지만, 특이한 조수를 사용하여 파라미터를 가져오거나 응답 (repo에서 go-chirender를 사용합니다)


👇환매 프로토콜을 볼 수 있고, lambda의 전체 코드를 볼 수 있습니다.👇




토마스 포이그난트 / cdk golang lambda 배포





CDK를 사용하여 lambda 구축 및 배포


lambda 함수가 준비되었으니 구축하고 배치해야 합니다


따라서 CDK 스택에는


  • lambda
  • 에서 사용할 GO 바이너리 파일 만들기
  • 코드를 lambda 함수로 배치
  • 인터넷에서 이 API를 방문하기 위해 AWS API 인터페이스를 배치한다.

GO 바이너리 생성 및 배포


CDK를 사용하기 때문에 저희 infra에서 코드로 lambda를 서비스하고 구축합니다





보시다시피go-chi 대상은 세 가지 파라미터가 있습니다:


  • lambda.Function: lambda 언어에 대한 정보(여기서 GO 사용)
  • runtime: go 바이너리 파일의 이름
  • handler: lambda에서 실행할 코드입니다. 보시다시피 code 코드의 위치를 가져와 코드에서 바이너리 파일을 만들고 있습니다.
    구축을 실행하기 위해서, CDK는 현재 CDK를 실행하는 기계에 의존하지 않고, docker 이미지를 시작하고,makefile을 사용하여 바이너리 파일을 구축합니다.

Add an API Gateway to access the lambda


lambda 함수는 HTTP를 통해 직접 접근할 수 없기 때문에, lambda 함수 앞에 API 스위치를 추가합니다



CDK를 사용하여 이 점을 실현하는 것은 매우 간단합니다. 이것은 lambda.Code.fromAsset의 대상에 대한 호출일 뿐입니다. 방금 만든 lambda와 설명을 사용하십시오





API 게이트웨이와 관련 배치에 LambdaRestApi 루트를 만들면 모든 것을 할 수 있습니다. 이것은 모든 루트가 lambda 함수로 바로 넘어갈 수 있음을 의미합니다. 코드에서 루트를 관리해야 합니다. 이것이 바로 우리가 하고 싶은 일입니다




Conclusion


보시다시피 저희가 구축/배치한 코드가 많지 않고 서버 없는 API를 공개했습니다


당신은 완전한 환매 프로토콜here을 검사하고 이를 예로 들어 API에서 더욱 복잡한 논리를 구축할 수 있습니다<

스택에서 여러 개의 lambda 함수를 관리하는 것도 매우 쉽습니다. CDK 함수를 여러 번 호출하기만 하면 됩니다✌️





cdk-golang-lambda-deployment


본 리포는 AWS CDK를 사용하여 AWS Lambda에 서버 없는 API를 배치하는 방법에 대한 예입니다


관련 기사https://faun.pub/golang-build-and-deploy-an-aws-lambda-using-cdk-b484fe99304b


Lambda


GO Lambda 함수는 간단한 API로 /{proxy+} http 요청을 처리합니다

코드는 go-chi/chi 폴더에 있습니다


Deployment with CDK


CDK 스택도 간단합니다. 이것은 lambda의 바이너리 파일을 구축하고 HTTP를 통해 접근할 수 있도록 lambda 앞에 API 스위치를 설치합니다.

코드는 /lambda/api 폴더에 있습니다











좋은 웹페이지 즐겨찾기