Lambda 함수를 .zip 파일 아카이브로 배포하기
Lambda 함수를 .zip 파일 아카이브로 배포하기
Lambda 함수를 만들 때 함수 코드를 배포 패키지로 묶어요. Lambda는 컨테이너 이미지와 .zip 파일 아카이브라는 두 가지 유형의 배포 패키지를 지원해요. 함수를 만드는 워크플로는 배포 패키지 유형에 따라 달라져요. 컨테이너 이미지로 정의된 함수를 구성하는 방법은 컨테이너 이미지를 사용하여 Lambda 함수 만들기를 참고하세요.
Lambda 콘솔과 Lambda API를 사용해서 .zip 파일 아카이브로 정의된 함수를 만들 수 있어요. 또한 업데이트된 .zip 파일을 업로드해서 함수 코드를 변경할 수도 있어요.
기본적으로 .zip 파일을 업로드하면 Lambda가 소스 코드의 복사본을 Lambda 관리형 스토리지에 저장해요. 자체 관리형 S3 코드 스토리지를 사용하면 Lambda가 함수 생성 및 업데이트 작업 중에 S3 버킷에서 소스 코드를 읽고, 소스 코드의 별도 복사본을 저장하지 않아요. Lambda는 여전히 호출을 위해 코드의 내부 최적화 표현을 만들지만, S3의 소스 코드는 매 콜드 스타트마다 액세스되지는 않아요.
참고 기존 함수의 배포 패키지 유형(.zip 또는 컨테이너 이미지)은 변경할 수 없어요. 예를 들어 컨테이너 이미지 함수를 .zip 파일 아카이브를 사용하도록 변환할 수 없어요. 새 함수를 만들어야 해요.
주제
- 함수 만들기
- 콘솔 코드 편집기 사용
- 함수 코드 업데이트
- 런타임 변경
- 아키텍처 변경
- Lambda API 사용
- 함수 코드 다운로드
- CloudFormation
- Lambda .zip 배포 패키지 암호화
본문
함수 만들기
.zip 파일 아카이브로 정의된 함수를 만들 때 코드 템플릿, 언어 버전, 실행 역할을 선택해요. Lambda가 함수를 만든 후에 함수 코드를 추가해요.
함수를 만들려면
-
Lambda 콘솔의 함수 페이지를 엽니다.
-
함수 생성(Create function)을 선택합니다.
-
처음부터 작성(Author from scratch) 또는 블루프린트 사용(Use a blueprint)을 선택해서 함수를 만듭니다.
-
기본 정보(Basic information)에서 다음을 수행합니다.
-
함수 이름(Function name)에 함수 이름을 입력합니다. 함수 이름은 최대 64자입니다.
-
런타임(Runtime)에서 함수에 사용할 언어 버전을 선택합니다.
-
(선택 사항) 아키텍처(Architecture)에서 함수에 사용할 명령어 집합 아키텍처를 선택합니다. 기본 아키텍처는 x86_64입니다. 함수용 배포 패키지를 빌드할 때 이 명령어 집합 아키텍처와 호환되는지 확인하세요.
-
-
(선택 사항) 권한(Permissions)에서 기본 실행 역할 변경(Change default execution role)을 펼칩니다. 새 실행 역할(Execution role)을 만들거나 기존 역할을 사용할 수 있습니다.
-
(선택 사항) 고급 설정(Advanced settings)을 펼칩니다. 함수에 대한 코드 서명 구성(Code signing configuration)을 선택할 수 있습니다. 또한 함수가 액세스할 (Amazon VPC)을 구성할 수도 있습니다.
-
함수 생성(Create function)을 선택합니다.
Lambda가 새 함수를 만듭니다. 이제 콘솔을 사용해서 함수 코드를 추가하고 다른 함수 매개변수와 기능을 구성할 수 있습니다. 코드 배포 지침은 함수가 사용하는 런타임의 핸들러 페이지를 참고하세요.
Node.js
Node.js Lambda 함수를 .zip 파일 아카이브로 배포
Python
Python Lambda 함수용 .zip 파일 아카이브 작업
Ruby
Ruby Lambda 함수를 .zip 파일 아카이브로 배포
Java
Java Lambda 함수를 .zip 또는 JAR 파일 아카이브로 배포
Go
Go Lambda 함수를 .zip 파일 아카이브로 배포
C#
C# Lambda 함수를 .zip 파일 아카이브로 빌드 및 배포
PowerShell
PowerShell Lambda 함수를 .zip 파일 아카이브로 배포
콘솔 코드 편집기 사용
콘솔은 단일 소스 파일로 Lambda 함수를 만들어요. 스크립팅 언어의 경우 기본 제공 코드 편집기를 사용해서 이 파일을 편집하고 더 많은 파일을 추가할 수 있어요. 변경 사항을 저장하려면 저장(Save)을 선택하세요. 그런 다음 코드를 실행하려면 테스트(Test)를 선택하세요.
함수 코드를 저장하면 Lambda 콘솔이 .zip 파일 아카이브 배포 패키지를 만들어요. 콘솔 밖에서(IDE를 사용해서) 함수 코드를 개발하는 경우 코드를 Lambda 함수에 업로드하려면 배포 패키지를 만들어야 해요.
함수 코드 업데이트
스크립팅 언어(Node.js, Python, Ruby)의 경우 포함된 코드 편집기에서 함수 코드를 편집할 수 있어요. 코드가 3MB보다 크거나, 라이브러리를 추가해야 하거나, 편집기가 지원하지 않는 언어(Java, Go, C#)라면 함수 코드를 .zip 아카이브로 업로드해야 해요. .zip 파일 아카이브가 50MB보다 작으면 로컬 머신에서 업로드할 수 있어요. 파일이 50MB보다 크면 Amazon S3 버킷에서 함수로 업로드하세요.
함수 코드를 .zip 아카이브로 업로드하려면
-
Lambda 콘솔의 함수 페이지를 엽니다.
-
업데이트할 함수를 선택하고 코드(Code) 탭을 선택합니다.
-
코드 소스(Code source)에서 업로드 위치(Upload from)를 선택합니다.
-
.zip 파일(.zip file)을 선택하고 업로드(Upload)를 선택합니다.
- 파일 선택기에서 새 이미지 버전을 선택하고 열기(Open), 저장(Save)을 선택합니다.
-
(4단계의 대안) Amazon S3 위치(Amazon S3 location)를 선택합니다.
-
텍스트 상자에 .zip 파일 아카이브의 S3 링크 URL을 입력합니다.
-
코드 스토리지 모드(Code storage mode)에서 다음 중 하나를 선택합니다.
- 복사 모드 (기본값)(Copy mode (default))
- 참조 모드(Reference mode)
-
저장(Save)을 선택합니다.
-
AWS CLI를 사용해서 Amazon S3 버킷에서 함수 코드를 업데이트할 때 코드 스토리지 모드를 지정할 수 있어요. S3ObjectStorageMode를 REFERENCE로 설정해서 자체 관리형 S3 코드 스토리지를 사용하거나, COPY(기본값)로 설정해서 Lambda 관리형 스토리지를 사용할 수 있어요. 스토리지 모드는 업데이트할 때마다 변경할 수 있어요.
aws lambda update-function-code \
--function-name my-function \
--s3-bucket {{my-bucket}} \
--s3-key {{my-function.zip}} \
--s3-object-version {{abc123}} \
--s3-object-storage-mode REFERENCE
런타임 변경
함수 구성을 새 런타임을 사용하도록 업데이트하면 새 런타임과 호환되도록 함수 코드를 업데이트해야 할 수 있어요. 함수 구성을 다른 런타임을 사용하도록 업데이트하면 런타임과 아키텍처와 호환되는 새 함수 코드를 반드시 제공해야 해요. 함수 코드용 배포 패키지를 만드는 방법은 함수가 사용하는 런타임의 핸들러 페이지를 참고하세요.
Node.js 20, Python 3.12, Java 21, .NET 8, Ruby 3.3 이상 기본 이미지는 Amazon Linux 2023 최소 컨테이너 이미지를 기반으로 해요. 이전 기본 이미지는 Amazon Linux 2를 사용해요. AL2023은 더 작은 배포 공간과 glibc 같은 라이브러리의 업데이트된 버전을 포함해 Amazon Linux 2보다 여러 장점을 제공해요. 자세한 내용은 AWS Compute Blog의 AWS Lambda용 Amazon Linux 2023 런타임 소개를 참고하세요.
런타임을 변경하려면
-
Lambda 콘솔의 함수 페이지를 엽니다.
-
업데이트할 함수를 선택하고 코드(Code) 탭을 선택합니다.
-
코드 편집기 아래에 있는 런타임 설정(Runtime settings) 섹션까지 아래로 스크롤합니다.
-
편집(Edit)을 선택합니다.
-
런타임(Runtime)에서 런타임 식별자를 선택합니다.
-
핸들러(Handler)에서 함수용 파일 이름과 핸들러를 지정합니다.
-
아키텍처(Architecture)에서 함수에 사용할 명령어 집합 아키텍처를 선택합니다.
-
-
저장(Save)을 선택합니다.
아키텍처 변경
명령어 집합 아키텍처를 변경하기 전에 함수 코드가 대상 아키텍처와 호환되는지 확인해야 해요.
Node.js, Python, Ruby를 사용하고 포함된 편집기에서 함수 코드를 편집한다면 기존 코드가 수정 없이 실행될 수 있어요.
하지만 .zip 파일 아카이브 배포 패키지로 함수 코드를 제공한다면 대상 런타임과 명령어 집합 아키텍처에 맞게 컴파일·빌드된 새 .zip 파일 아카이브를 준비해야 해요. 자세한 내용은 함수 런타임의 핸들러 페이지를 참고하세요.
명령어 집합 아키텍처를 변경하려면
-
Lambda 콘솔의 함수 페이지를 엽니다.
-
업데이트할 함수를 선택하고 코드(Code) 탭을 선택합니다.
-
런타임 설정(Runtime settings)에서 편집(Edit)을 선택합니다.
-
아키텍처(Architecture)에서 함수에 사용할 명령어 집합 아키텍처를 선택합니다.
-
저장(Save)을 선택합니다.
Lambda API 사용
.zip 파일 아카이브를 사용하는 함수를 만들고 구성하려면 다음 API 작업을 사용하세요:
함수 코드 다운로드
Lambda 콘솔에서 함수 코드 .zip의 현재 게시되지 않은($LATEST) 버전을 다운로드할 수 있어요. 이렇게 하려면 먼저 다음 IAM 권한이 있어야 해요:
iam:GetPolicyiam:GetPolicyVersioniam:GetRoleiam:GetRolePolicyiam:ListAttachedRolePoliciesiam:ListRolePoliciesiam:ListRoles
함수 코드 .zip을 다운로드하려면
-
Lambda 콘솔의 함수 페이지를 엽니다.
-
함수 코드 .zip을 다운로드할 함수를 선택합니다.
-
함수 개요(Function overview)에서 다운로드(Download) 버튼을 선택한 다음 함수 코드 .zip 다운로드(Download function code .zip)를 선택합니다.
- 또는 AWS SAM 파일 다운로드(Download AWS SAM file)를 선택해서 함수 구성에 기반한 SAM 템플릿을 생성·다운로드할 수 있습니다. 모두 다운로드(Download both)를 선택해서 .zip과 SAM 템플릿을 모두 다운로드할 수도 있습니다.
CloudFormation
CloudFormation을 사용해서 .zip 파일 아카이브를 사용하는 Lambda 함수를 만들 수 있어요. CloudFormation 템플릿에서 AWS::Lambda::Function 리소스가 Lambda 함수를 지정해요. AWS::Lambda::Function 리소스의 속성에 대한 설명은 AWS CloudFormation 사용 설명서의 AWS::Lambda::Function을 참고하세요.
AWS::Lambda::Function 리소스에서 다음 속성을 설정해서 .zip 파일 아카이브로 정의된 함수를 만드세요:
- AWS::Lambda::Function
- PackageType –
Zip으로 설정합니다. - Code –
S3Bucket과S3Key필드에 Amazon S3 버킷 이름과 .zip 파일 이름을 입력합니다. Node.js나 Python의 경우 Lambda 함수의 인라인 소스 코드를 제공할 수 있습니다. - Runtime – 런타임 값을 설정합니다.
- Architecture – AWS Graviton2 프로세서를 사용하려면 아키텍처 값을
arm64로 설정합니다. 기본적으로 아키텍처 값은x86_64입니다. - S3ObjectStorageMode – (선택 사항) 자체 관리형 S3 코드 스토리지를 사용하려면
REFERENCE로 설정합니다. Lambda 관리형 스토리지를 사용하려면COPY(기본값)로 설정합니다.
- PackageType –
더 알아보기 (Learn more)
이 주제는 AWS Lambda 개발자 안내서의 .zip 파일 아카이브 배포 방법을 설명해요. 관련 주제와 배포 패키지 유형 비교는 Lambda 개발자 안내서의 관련 페이지를 참고하세요.