내용으로 건너뛰기

레이어를 사용해 JavaScript용 AWS SDK 최신 버전을 Node.js Lambda 함수에 통합하려면 어떻게 해야 하나요?

4분 분량
0

AWS Lambda 런타임 환경에 AWS SDK 최신 버전의 일부 기능이 없습니다. AWS SDK for JavaScript 최신 버전을 Node.js Lambda 함수에 통합하려고 합니다.

간략한 설명

AWS SDK의 최신 버전을 Lambda 함수의 배포 패키지에 통합하려면 Lambda 계층을 생성합니다. 그런 다음, 함수에 계층을 추가합니다.

참고: Node.js 버전 16 이하의 경우 Lambda Node.js 런타임에 AWS SDK for JavaScript 2가 포함되어 있습니다. Node.js 버전 18 이상의 경우에는 Lambda Node.js 런타임에 AWS SDK for JavaScript 3이 포함되어 있습니다. 자세한 내용은 AWS SDK for JavaScript 설명서를 참조하십시오.

전체 런타임 목록 및 Lambda에서 사용하는 AWS SDK 버전은 Lambda 런타임을 참조하십시오.

**참고:**다음 해상도는 함수 배포 패키지의 크기를 증가시킵니다. Lambda 스토리지 할당량에 관한 자세한 내용은, Lambda 할당량을 참고하세요.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

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

다음 단계를 완료하십시오.

참고: 이 방법은 Node.js 버전 16 이하에만 사용하십시오.

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

  2. 함수 코드를 업데이트하여 함수를 호출할 때 함수가 사용하는 AWS SDK 버전을 반환합니다.

    const AWS = require('aws-sdk')   
    exports.handler = async (event) => {  
    return AWS.VERSION;  
    };
  3. 함수를 호출합니다.

  4. 함수가 반환한 AWS SDK 버전을 AWS SDK 설명서에 있는 최신 버전의 AWS SDK와 비교합니다.

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

참고: 배포 패키지는 사용하는 Lambda 런타임과 호환되어야 합니다. Lambda 런타임에 지정된 것과 동일한 운영 체제(OS)를 런타임에 사용하는 것이 가장 좋습니다.

Lambda와 호환되는 개발 환경에서 다음 단계를 완료하십시오.

  1. 다음 명령을 실행하여 디렉터리를 생성합니다.

    mkdir -p aws-sdk-layer/nodejs
  2. 다음 명령을 실행하여 해당 디렉터리로 변경합니다.

    cd aws-sdk-layer/nodejs
  3. Node.js 런타임 버전용 AWS SDK를 설치합니다.
    Node.js 16 이하(AWS SDK 버전 2)
    AWS SDK 버전 2의 최신 버전을 설치하려면 Amazon Linux 2와 호환되는 인스턴스를 사용하여 다음 명령을 실행합니다.

    npm install aws-sdk

    자세한 내용은 자습서: Amazon EC2 인스턴스에 Node.js 설정을 참조하십시오.
    참고: Lambda 리소스를 개발할 때는 Amazon Linux 2 환경을 사용하는 것이 좋습니다.
    -또는-
    Windows 또는 macOS OS를 개발에 사용하는 경우, Docker를 사용하여 다음 명령을 실행합니다.

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

    참고: 명령을 실행하기 전에 Docker 웹사이트에서 최신 버전의 Docker를 사용하고 있는지 확인하십시오.

    Node.js 18 이상(AWS SDK 버전 3)
    AWS SDK 버전 3의 최신 버전을 설치하려면 JavaScript용 SDK 설치를 참조하십시오.

  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 콘솔을 사용하여 Lambda 계층을 생성하고 함수에 추가

AWS CLI

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

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

    참고: node_sdk를 계층 이름으로 바꾸고 My layer를 계층 설명으로 바꾸십시오. 또한 compatible-runtimes 값을 사용하는 런타임으로 바꾸고 region을 함수 및 계층이 있는 AWS 리전으로 바꾸십시오.

  2. 출력에서, 다음 단계에서 사용할 LayerVersionArn 값을 복사합니다.

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

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

    참고: my-function을 함수 이름으로 바꾸고, arn:aws:lambda:us-east-2:123456789012:layer:node_sdk:1을 출력의 LayerVersionArn 값으로 바꾸고, region을 리전으로 바꾸십시오.

자세한 내용은 계층을 사용한 Lambda 종속성 관리를 참조하십시오.

Lambda 콘솔

Lambda 계층을 생성하여 Lambda 콘솔의 함수에 추가하려면 다음 단계를 완료하십시오.

  1. Lambda 콘솔에서 계층 페이지를 엽니다.
  2. 계층 생성을 선택합니다.
  3. 이름에 새 계층의 이름을 입력합니다.
  4. .zip 파일 업로드를 선택한 다음, 배포 패키지 .zip 파일의 이름을 선택합니다.
  5. 생성을 선택합니다.
  6. Lambda 콘솔에서 함수 페이지를 연 다음, 계층을 추가하려는 함수의 이름을 선택합니다.
  7. 계층에서 계층 추가를 선택합니다.
  8. 계층 선택에서 사용자 지정 계층을 선택합니다.
  9. 사용자 지정 계층 드롭다운 목록을 선택한 다음, 사용자 지정 계층을 선택합니다.
  10. 추가를 선택합니다.

(선택 사항) 설정 테스트

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

관련 정보

AWS Lambda 함수 작업의 모범 사례

Node.js용 Lambda 배포 패키지를 빌드하려면 어떻게 해야 합니까?

Lambda Python 함수를 위한 계층을 생성하려면 어떻게 해야 합니까?

AWS 공식업데이트됨 일 년 전