-
AWS Lambda Node로 axios require 해보기, 함수 만들기 부터...DEV/aws 2024. 1. 19. 11:32
1. 함수 만들기
우선 Amazon console에서 Lambda를 선택하여 들어가자.
https://console.aws.amazon.com
https://console.aws.amazon.com/console/home
console.aws.amazon.com
Lambda에서 우측 함수 생성 선택 기본정보를 입력하고 원하는 옵션 선택, 본인은 노드 20.x 버전으로 작성하였다. 함수 생성 후 간단한 샘플 코드 작성 완료. axios로 API Post 요청하였다. 문제는 지금부터...
본인은 Node로 Lambda를 구성하던 중 "const axios = require('axios');" 부분이 에러가 발생했다.
ErrorMessage : SyntaxError: Unexpected token 'export' 찾아보니 Lambda에서 외부 패키지를 사용하려면 "node_modules" 폴더를 Lambda의 Layers에 올려야 한다고 함.
(npm install을 한다던가... 자동으로 불러온다던가 하는 방식 X)
https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/nodejs-package.html 의 "종속 항목을 위한 Node.js 계층 생성" 부분 참고
.zip 파일 아카이브를 사용하여 Node.js Lambda 함수 배포 - AWS Lambda
.zip 아카이브를 사용하도록 기존 컨테이너 이미지 함수를 변환할 수는 없습니다. 새로운 함수를 생성해야 합니다.
docs.aws.amazon.com
위 문서나 다른 글을 찾아보면 "nodejs/node_modules" 경로로 구성해서 "nodejs" 폴더를 압축하여 올리라고 되어있다.
문제는 본인은 저 방식으로 해도 똑같은 에러가 계속 발생한다는 점.
그리고 에러 문구에서 root 경로가 이상하게 찍힌다는 점이다...
Layer를 새로 구성해보자.
2. Layer 구성
Lambda 대시보드에서 추가리소스 > 계층 > 계층생성 선택 기본 정보 입력 * 본인은 "nodejs/node_modules"로 구성했을 때, 에러가 발생하여 "node_modules"만 압축해서 올려보았다.
계층(Layer)의 [Add a layer] 클릭 내가 만든 레이어(axios)를 선택 후 추가 자쟌, 정상 작동한다.
Ref.
[1]. Lambda : https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/welcome.html
AWS Lambda란 무엇인가요? - AWS Lambda
이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.
docs.aws.amazon.com
[2]. Lambda pricing : https://aws.amazon.com/ko/lambda/pricing/
서버리스 컴퓨팅 – AWS Lambda 요금 – Amazon Web Services
aws.amazon.com
'DEV > aws' 카테고리의 다른 글
AWS AmazonConnectApp.init() Sample with Typescript (0) 2024.02.20 AWS EventBridge로 Lambda 특정 주기(시간)마다 호출하기 (0) 2024.01.19 AWS Lambda란...? (0) 2024.01.17 AWS Amazon Connect App @amazon-connect/app 설정 (0) 2024.01.15 AWS Bedrock이란..? (0) 2024.01.12