Golang: CDK를 사용한 AWS Lambda 구축 및 배포🚀
나는
GO
와 go-chi/chi
컴파일러 API를 사용하여 http 루트층을 처리할 것이다.TL;박사 01 명
모든 소스 코드는 thomaspoignant/cdk-golang-lambda-deployment
저장소에서 찾을 수 있습니다.
토마스 포이그난트
/
cdk golang lambda 배포
GO에 서버 없는 API 만들기
그래서 우리가 해야 할 첫 번째 일은 go-chi
와 aws-lambda-go
SDK를 사용하여 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
파일을 생성할 수 있습니다.
그래서 우리가 해야 할 첫 번째 일은
go-chi
와 aws-lambda-go
SDK를 사용하여 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.go
와 main()
이것은 이해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
폴더에 있습니다
Reference
이 문제에 관하여(Golang: CDK를 사용한 AWS Lambda 구축 및 배포🚀), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws-builders/golang-build-and-deploy-an-aws-lambda-using-cdk-4jk3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)