계층을 사용하여 JavaScript용 AWS SDK의 최신 버전을 Node.js Lambda 함수에 통합하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 4월 30일

AWS Lambda 실행 환경에 최신 버전의 AWS SDK에서 제공하는 특정 기능이 없습니다. Node.js Lambda 함수의 계층을 사용하여 JavaScript용 AWS SDK의 최신 버전을 통합하려면 어떻게 해야 합니까?

간략한 설명

Lambda 실행 환경에 구축된 AWS SDK 버전이 항상 최신 상태인 것은 아니므로 일부 새로운 SDK 기능을 사용하지 못할 수 있습니다. Lambda 계층을 사용하여 AWS SDK의 최신 버전을 Lambda 함수 배포 패키지에 통합하십시오.

참고: 이 솔루션은 함수 배포 패키지의 크기를 늘립니다. Lambda 스토리지 리소스에 대한 자세한 내용은 AWS Lambda 제한을 참조하십시오.

다음 지침에서는 Node.js 10.x 런타임을 예로 사용합니다. Node.js 및 기타 언어의 런타임 목록과 현재 Lambda에 사용되는 AWS SDK 버전은 AWS Lambda 런타임을 참조하십시오.

​해결 방법

(선택 사항) AWS SDK 버전 확인

AWS SDK의 현재 버전을 확인하려면 다음을 수행합니다.

1.    Lambda 콘솔에서 함수를 생성합니다.

2.    함수 코드를 업데이트하여 AWS SDK 버전을 출력합니다. Node.js 10x 런타임을 사용하는 경우 다음 예제 코드를 사용할 수 있습니다.

const AWS = require('aws-sdk')

exports.handler = async (event) => {
return AWS.VERSION;
};

3.    함수를 실행합니다. AWS SDK의 버전이 반환됩니다.

4.    함수에서 반환되는 AWS SDK 버전을 AWS SDK 설명서에서 확인한 최신 버전과 비교합니다.

최신 AWS SDK 버전 설치 및 패키징

참고: 배포 패키지는 Lambda 환경과 호환되어야 합니다. 다음 단계에서는 AWS Lambda 런타임에 지정된 런타임과 일치하는 운영 체제를 사용하는 것이 모범 사례입니다.

로컬 Lambda 호환 개발 환경에서 다음을 수행합니다.

1.    작업 디렉터리를 생성합니다.

mkdir -p aws-sdk-layer/nodejs

2.    작업 디렉터리로 변경합니다.

cd aws-sdk-layer/nodejs

3.    AWS SDK의 최신 버전을 설치합니다.

npm install aws-sdk

4.    계층에 업로드할.zip 파일을 생성합니다.

zip -r ../package.zip ../

5.    (선택 사항) 설치한 AWS SDK의 버전을 확인합니다.

cat package-lock.json

출력은 다음과 같습니다.

{
"requires": true,
"lockfileVersion": 1,
"dependencies": {
"aws-sdk": {
"version": "2.633.0",
...

계층을 생성하여 Lambda 함수에 추가(AWS CLI)

참고: Lambda 콘솔을 사용하여 계층을 생성하고 함수에 추가할 수도 있습니다. 콘솔 지침은 다음 섹션을 참조하십시오.

1.    AWS Command Line Interface(AWS CLI)에서 Lambda publish-layer-version 명령을 실행합니다.

참고: node_sdk를 계층에 지정하려는 이름으로 바꿉니다. 필요한 경우 "My layer"를 계층에 대한 설명으로 바꿉니다.

aws lambda publish-layer-version --layer-name node_sdk --description "My layer" --license-info "MIT" --compatible-runtimes nodejs10.x --zip-file fileb://../package.zip

출력에서 LayerVersionArn을 기록해 둡니다. 자세한 내용은 계층 관리를 참조하십시오.

2.    Lambda update-function-configuration 명령을 실행합니다.

참고: my-function을 함수의 이름으로 바꿉니다. arn:aws:lambda:us-east-2:123456789012:layer:node_sdk:1을 이전 단계의 LayerVersionArn으로 바꿉니다.

aws lambda update-function-configuration --function-name my-function --layers arn:aws:lambda:us-east-2:123456789012:layer:node_sdk:1

자세한 내용은 계층을 사용하기 위한 함수 구성을 참조하십시오.

계층을 생성하여 함수에 추가(Lambda 콘솔)

1.    Lambda 콘솔의 [계층] 페이지를 엽니다.

2.    [계층] 페이지에서 [계층 생성]을 선택합니다.

3.    [계층 생성] 페이지에서 다음을 수행합니다.
[이름]에 계층 이름을 입력합니다.
(선택 사항) [설명 - 선택 사항]에 계층에 대한 설명을 입력합니다.
[.zip 파일 업로드]를 선택합니다.
[업로드]를 선택한 다음 배포 패키지 .zip 파일을 선택합니다.
[호환되는 런타임 - 선택 사항]에서 하나 이상의 호환되는 런타임을 선택합니다. Node.js 10x 예제에서는 Node.js 10x를 선택합니다.
(선택 사항) [라이선스 -선택 사항]에 계층의 소프트웨어 라이선스 정보를 입력합니다.
[생성]을 선택합니다.

4.    Lambda 콘솔의 [함수] 페이지에서 함수를 선택합니다.

5.    [디자이너]의 함수 이름 아래에서 [계층]을 선택합니다.

6.    [계층]에서 [계층 추가]를 선택합니다.

7.    [함수에 계층 추가] 페이지의 [계층 선택]에서 [런타임 호환 계층 목록에서 선택]을 선택합니다.

8.    [호환되는 계층]에서 다음을 수행합니다.
[이름]에서 앞서 생성한 계층을 선택합니다.
[버전]에서 [1]을 선택합니다.

9.    [추가]를 선택합니다.

10.    [저장]을 선택합니다.

(선택 사항) AWS SDK 버전 확인

Lambda 함수를 다시 실행합니다. 이전에 npm을 사용하여 설치한 AWS SDK의 최신 버전이 반환됩니다.

사용 중인 AWS SDK의 CHANGELOG 파일에서 최신 버전을 확인할 수 있습니다. 예를 들어 GitHub에서 Changelog for AWS SDK for JavaScript를 참조하십시오.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?