Lambda에서 레이어 만들기·삭제하기

Lambda에서 레이어 만들기·삭제하기 (Creating and deleting layers in Lambda)

Lambda 레이어(layer)는 보충 코드나 데이터를 담은 .zip 파일 아카이브예요. 레이어는 보통 라이브러리 의존성, 커스텀 런타임, 또는 구성 파일을 포함해요.

이 섹션은 Lambda에서 레이어를 만들고 삭제하는 방법을 설명해요. 레이어에 대한 더 개념적인 내용과 사용 이유는 레이어로 Lambda 의존성 관리를 참고하세요. 레이어 콘텐츠를 패키징한 후 다음 단계는 Lambda에서 레이어를 만드는 것이에요. 이 섹션은 Lambda 콘솔이나 Lambda API로만 레이어를 만들고 삭제하는 방법을 보여줘요. AWS CloudFormation으로 레이어를 만들려면 AWS CloudFormation과 레이어 사용을 참고하세요.

출처: AWS Lambda 개발자 안내서

본문

레이어 만들기

레이어를 만들려면 로컬 컴퓨터나 Amazon Simple Storage Service(Amazon S3)에서 .zip 파일 아카이브를 업로드할 수 있어요. Amazon S3에서 업로드할 때 Lambda가 코드를 Lambda 관리형 저장소로 복사할지, 아니면 S3 버킷에서 직접 참조할지 선택할 수 있어요.

Lambda는 함수의 실행 환경을 설정할 때 레이어 콘텐츠를 /opt 디렉토리에 추출해요.

레이어는 하나 이상의 레이어 버전을 가질 수 있어요. 레이어를 만들 때 Lambda는 레이어 버전을 버전 1로 설정해요. 기존 레이어 버전의 권한은 언제든지 변경할 수 있어요. 하지만 코드를 업데이트하거나 다른 구성 변경을 하려면 레이어의 새 버전을 만들어야 해요.

레이어 만들기(콘솔)

  1. Lambda 콘솔의 Layers 페이지를 엽니다.
  2. Create layer를 선택합니다.
  3. Layer configuration 아래에서 Name에 레이어 이름을 입력합니다.
  4. (선택 사항) Description에 레이어 설명을 입력합니다.
  5. 레이어 코드를 업로드하려면 다음 중 하나를 수행합니다.
    • 컴퓨터에서 .zip 파일을 업로드하려면 Upload a .zip file을 선택한 다음 Upload로 로컬 .zip 파일을 선택합니다.
    • Amazon S3에서 파일을 업로드하려면 Upload a file from Amazon S3을 선택한 다음 Amazon S3 link URL에 파일 링크를 입력합니다.
  6. Amazon S3에서 업로드하도록 선택했다면 Code storage mode 아래에서 다음 중 하나를 선택합니다.
    • Copy mode(기본값)
    • Reference mode
  7. (선택 사항) Compatible architectures에서 하나 또는 두 값을 선택합니다.
  8. (선택 사항) Compatible runtimes에서 레이어와 호환되는 런타임을 선택합니다.
  9. (선택 사항) License에 필요한 라이선스 정보를 입력합니다.
  10. Create를 선택합니다.

또는 publish-layer-version AWS Command Line Interface(CLI) 명령을 실행할 수 있어요. Amazon S3에서 업로드할 때 자체 관리형 S3 코드 저장소를 사용하려면 S3ObjectStorageMode=REFERENCE를 포함하고, Lambda 관리형 저장소를 사용하려면 생략합니다(기본값은 COPY). 예시:

aws lambda publish-layer-version --layer-name my-layer --zip-file fileb://layer.zip --compatible-runtimes python3.14

publish-layer-version을 실행할 때마다 Lambda는 레이어의 새 버전을 만들어요.

레이어 버전 삭제

레이어 버전을 삭제하려면 DeleteLayerVersion API 작업을 사용해요. 예를 들어 레이어 이름과 레이어 버전을 지정해 delete-layer-version AWS CLI 명령을 실행해요.

aws lambda delete-layer-version --layer-name my-layer --version-number 1

레이어 버전을 삭제하면 더 이상 새 함수에서 사용하도록 구성할 수 없어요. 하지만 이미 삭제된 레이어 버전을 참조하는 함수는 그 레이어 콘텐츠로 계속 실행돼요. Lambda는 레이어 이름에 대해 버전 번호를 절대 재사용하지 않아요.

레이어 삭제의 저장소 할당량 영향

레이어 버전을 삭제할 때의 저장소 할당량 영향은 레이어와 이를 참조하는 함수가 사용하는 저장소 모드에 따라 달라져요.

  • 레이어가 Lambda 관리형 저장소(COPY) 사용: Lambda 관리형 저장소를 사용하는 레이어 버전을 삭제하면 레이어 코드가 계정의 Lambda 관리형 저장소 할당량에서 제거돼요. 하지만 삭제된 레이어 버전을 여전히 참조하는 함수는 레이어 콘텐츠에 계속 접근할 수 있어요. 레이어 콘텐츠는 함수의 배포 패키지 크기 할당량(압축 해제 시 250MB)에 계속 계산되지만, 계정 수준의 Lambda 관리형 저장소 할당량에는 더 이상 계산되지 않아요.
  • 레이어가 자체 관리형 S3 저장소(REFERENCE) 사용: 자체 관리형 S3 코드 저장소를 사용하는 레이어는 Lambda 관리형 저장소를 소비하지 않으므로, 이들을 삭제해도 Lambda 관리형 저장소 할당량에는 영향이 없어요. 삭제된 자체 관리형 레이어 버전을 참조하는 함수는 계속 정상 실행돼요. 하지만 S3 버킷에서 소스 객체도 삭제하거나 Lambda의 접근을 해지하면 더 이상 그 레이어로 함수 구성을 업데이트할 수 없어요.

참고

레이어 버전을 삭제해도 이를 참조하는 함수가 비활성화되지는 않아요. 레이어가 Lambda 관리형 또는 자체 관리형 S3 저장소를 사용했는지와 무관하게 함수는 Active 상태를 유지해요. Inactive 상태는 Lambda가 자체 관리형 S3 버킷에 저장된 함수 자체 소스 코드에 접근할 수 없을 때만 적용돼요.

더 알아보기 (Learn more)