이 저장소는 Go 언어를 사용하여 AWS Lambda 함수를 개발하는 다양한 예제를 제공하는 쿡북입니다.
AWS Lambda는 서버 관리 없이 코드를 실행할 수 있게 해주는 서버리스 컴퓨팅 서비스입니다. 이 저장소는 Go를 사용하여 Lambda 함수를 작성하고 배포하는 실용적인 예제들을 모아두었습니다.
각 예제는 특정 사용 사례를 다루며, 필요한 코드와 함께 간단한 설명을 포함합니다.
현재 다음 예제들을 사용할 수 있습니다:
- 001_qr_generator: 주어진 URL, 크기, 색상 파라미터를 기반으로 QR 코드를 생성하는 Lambda 함수입니다.
- API Gateway를 통해 트리거되며, 생성된 QR 코드 이미지를 Base64 인코딩된 PNG 형식으로 반환합니다.
- 색상 이름 또는 16진수 코드를 지원하며, 배경색과 투명도 설정도 가능합니다.
- API 사용법:
- API Gateway 엔드포인트에 GET 요청을 보냅니다.
- 쿼리 파라미터:
url(필수): QR 코드로 인코딩할 URL.size(선택, 기본값: 256): QR 코드 이미지 크기 (픽셀 단위).color(선택, 기본값: black): QR 코드 색상 (색상 이름 또는 16진수 코드, 예:red,#FF0000).bg(선택, 기본값: white): 배경색 (색상 이름 또는 16진수 코드, 예:blue,#0000FF). 투명 배경은transparent사용.
- 예시:
[YOUR_API_GATEWAY_ENDPOINT]?url=https://example.com&size=512&color=blue&bg=transparent
Go로 작성된 Lambda 함수를 빌드하고 AWS에 배포하는 일반적인 단계는 다음과 같습니다:
-
Go 코드 컴파일: Lambda 함수 코드를 Linux 환경용 실행 파일로 컴파일합니다. 각 예제 디렉토리에서 다음 명령어를 실행합니다:
GOOS=linux GOARCH=amd64 go build -o bootstrap main.go # Mac(Apple Silicon) GOOS=darwin GOARCH=arm64 go build -o bootstrap main.go # Mac(Intel) GOOS=linux GOARCH=arm64 go build -o bootstrap main.go
GOOS=linux: 대상 운영체제를 Linux로 설정합니다.GOARCH=amd64: 대상 아키텍처를 64비트 AMD/Intel로 설정합니다.-o bootstrap: 출력 파일 이름을bootstrap으로 지정합니다. AWS Lambda Go 런타임은 이 이름의 파일을 실행합니다.main.go: 컴파일할 Go 소스 파일입니다.
-
배포 패키지 생성: 컴파일된
bootstrap실행 파일을 ZIP 파일로 압축합니다. 이 ZIP 파일이 Lambda 함수 배포 패키지가 됩니다.zip deployment.zip bootstrap
-
AWS Lambda 함수 생성 및 업로드:
- AWS Management Console, AWS CLI 또는 IaC 도구(예: Terraform, AWS SAM)를 사용하여 Lambda 함수를 생성합니다.
- 함수 설정 시 런타임으로
Amazon Linux 2023을 선택합니다. - 생성된
deployment.zip파일을 Lambda 함수 코드로 업로드합니다. - 핸들러 이름은 일반적으로
bootstrap을 사용하며, 이는 컴파일된 실행 파일의 이름과 일치해야 합니다.
-
트리거 설정 (선택 사항): 필요에 따라 API Gateway, S3 이벤트, CloudWatch Events 등 Lambda 함수를 호출할 트리거를 설정합니다.
-
환경 변수 및 권한 설정: 함수 실행에 필요한 환경 변수(예: API 키)나 AWS 서비스 접근 권한(IAM 역할)을 설정합니다.
각 예제 디렉토리에는 해당 함수를 빌드하고 배포하는 데 필요한 구체적인 지침이나 스크립트가 포함될 수 있습니다.
새로운 Lambda 함수 예제나 기존 예제 개선에 대한 기여를 환영합니다. Pull Request를 생성하거나 이슈를 등록해주세요.
이 프로젝트는 MIT 라이선스 하에 배포됩니다.