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

4분 분량
0

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

간략한 설명

최신 버전의 AWS SDK를 Lambda 함수의 배포 패키지에 통합하려면 Lambda 계층을 생성한 다음 함수에 추가합니다. AWS CLI(AWS 명령줄 인터페이스) 또는 Lambda 콘솔을 사용하여 Lambda 계층을 생성하고 이를 함수에 추가할 수 있습니다.

다음 절차에서는 Node.js 14x 런타임을 예로 사용합니다. Lambda가 현재 사용하는 런타임 및 AWS SDK 버전의 전체 목록은 AWS Lambda 런타임을 참조하세요.

참고: 다음 솔루션은 함수 배포 패키지의 크기를 늘립니다. Lambda 스토리지 제한에 대한 자세한 내용은 Lambda 할당량을 참조하세요.

해결 방법

참고: AWS CLI(AWS 명령줄 인터페이스) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.

(선택 사항) 함수에서 사용 중인 AWS SDK 버전 확인

함수에서 사용하는 AWS SDK 버전을 확인하려면 다음을 수행합니다.

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

2.    함수가 호출될 때 사용 중인 AWS SDK 버전을 반환하도록 함수 코드를 업데이트합니다.

Lambda 함수가 사용 중인 AWS SDK 버전을 출력하도록 하는 Node.js 코드

const AWS = require('aws-sdk')
 
exports.handler = async (event) => {
return AWS.VERSION;
};

3.    함수를 호출합니다. 함수는 사용 중인 AWS SDK의 버전을 반환합니다.

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

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

참고: 배포 패키지는 사용 중인 Lambda 런타임과 호환되어야 합니다. AWS Lambda 런타임에 지정된 운영 체제를 해당 런타임에 사용하는 것이 모범 사례입니다. 예를 들어 호환되는 Amazon EC2(Amazon Elastic Compute Cloud) 인스턴스를 시작합니다.

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

1.    다음 CLI(명령줄 인터페이스) 명령을 실행하여 작업 디렉토리를 생성합니다.

mkdir -p aws-sdk-layer/nodejs

2.    다음 명령을 실행하여 작업 디렉터리로 이동합니다.

cd aws-sdk-layer/nodejs

3.    최신 버전의 AWS SDK를 설치하려면 Amazon Linux 2 호환 인스턴스를 사용하여 다음 명령을 실행합니다.

npm install aws-sdk

자세한 내용은 자습서: Amazon EC2 인스턴스에서 Node.js 설정을 참조하세요.

참고: Lambda 리소스를 개발할 때는 Amazon Linux 2 환경을 사용하는 것이 모범 사례입니다.

-또는-

Windows 또는 macOS 운영 체제를 사용하여 개발하는 경우, Docker를 사용하여 다음 명령을 실행할 수 있습니다.

docker run --entrypoint "" -v "$PWD":/var/task "public.ecr.aws/lambda/nodejs:14" /bin/sh -c "npm install aws-sdk; exit"

참고: 명령을 실행하기 전에 Docker의 최신 버전을 사용하고 있는지 확인하세요.

4.    다음 명령을 실행하여 Lambda 계층에 업로드할 .zip 파일을 생성합니다.

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

5.    (선택 사항) 다음 명령을 실행하여 설치한 AWS SDK의 버전을 확인합니다.

cat package-lock.json

명령 출력 예

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

AWS CLI를 사용하여 Lambda 계층을 생성하고 이를 함수에 추가

1.    사용할 AWS SDK의 최신 버전이 포함된 새 Lambda 계층을 생성하려면 다음 publish-layer-version AWS CLI 명령을 실행합니다.

참고: node_sdk를 계층에 지정하려는 이름으로 바꿉니다. My layer를 계층에 대한 설명으로 바꿉니다. compatible-runtimes 값을 사용 중인 런타임으로 바꿉니다. egion 값을 함수와 계층이 있는 AWS 리전으로 바꿉니다.

aws lambda publish-layer-version --layer-name node_sdk --description "My layer" --license-info "MIT" --compatible-runtimes nodejs14.x --zip-file fileb://../package.zip --region <specify a region>

다음 단계를 완료하려면 명령 출력에 있는 LayerVersionArn 값이 필요합니다.

2.    함수에 계층을 추가하려면 다음 update-function-configuration 명령을 실행합니다.

참고: my-function을 함수의 이름으로 바꿉니다. arn:aws:lambda:us-east-2:123456789012:layer:node_sdk:1을 publish-layer-version 명령의 출력에 있던 LayerVersionArn 값으로 바꿉니다.

aws lambda update-function-configuration --function-name my-function --layers arn:aws:lambda:us-east-2:123456789012:layer:node_sdk:1 --region <specify a region>

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

Lambda 콘솔을 사용하여 Lambda 계층을 생성하고 이를 함수에 추가

1.    Lambda 콘솔의 레이더(Layers) 페이지를 엽니다.

2.    **계층 생성(Create layer)**을 선택합니다. 그러고 나서 다음 작업을 수행합니다.
**이름(Name)**에 새 계층의 이름을 입력합니다.
(선택 사항) **설명 - 선택 사항(Description - optional)**에 계층에 대한 설명을 입력합니다.
**.zip 파일 업로드(Upload a .zip file)**를 선택합니다.
**업로드(Upload)**를 선택합니다. 그런 다음 배포 패키지.zip 파일의 이름을 선택합니다.
**호환되는 런타임 - 선택 사항(Compatible runtimes - optional)**에서 하나 이상의 호환되는 런타임을 선택합니다. 예를 들어, 이 문서의 경우 Node.js 14X를 선택합니다.
(선택 사항) **라이선스 -선택 사항(License - optional)**에 계층에 적용되는 소프트웨어 라이선스 정보를 입력합니다.
**생성(Create)**을 선택합니다.

3.    Lambda 콘솔에서 함수(Functions)페이지를 엽니다. 그런 다음 계층을 추가할 함수의 이름을 선택합니다.

4.    **함수 개요(Function overview)**아래에서 **계층(Layers)**을 선택합니다.

5.    **계층 추가(Add a layer)**를 선택합니다.

6.    **계층 선택(Choose a layer)**에서 **사용자 지정 계층(Custom layers)**을 선택합니다. 그러고 나서 다음 작업을 수행합니다.
앞서 생성한 계층 이름을 선택합니다.
**버전(Version)**에서 사용할 계층의 버전을 선택합니다. 예를 들어, 이 예에서는 1을 선택합니다.
**추가(Add)**를 선택합니다.

(선택 사항) 설정 테스트

(선택 사항) (선택 사항) 함수에서 사용 중인 AWS SDK 버전 확인 섹션의 단계를 따라 함수를 호출합니다. 함수는 사용 중인 AWS SDK의 버전을 반환합니다.

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


관련 정보

프로그래밍 모델(AWS Lambda 개발자 안내서)

AWS Lambda 함수 작업의 모범 사례

Node.js용 Lambda 배포 패키지는 어떻게 구축하나요?

AWS 공식
AWS 공식업데이트됨 2년 전