본문 바로가기
AWS

[AWS/Docker] 실전 클라우드 서버 구축 올인원 패키지 Online / 패스트캠퍼스 챌린지 25일차

by 원동호 2021. 9. 30.

Ch 04. 서버리스 어플리케이션 개발 2

  • 05. Lambda 함수작성 D - 참가증 이미지 만들기 - 1
  • 06. Lambda 함수작성 E - 참가증 이미지 만들기 - 2

3일간의 강의를 통해 Python Lambda함수를 작성하고 TestCase로 테스트를 하고 Layer를 생성해서 패키지를 사용해보았다. 이번 포스팅에서는 Nodejs로 함수, TestCase, Layer을 생성해서 실습해 보겠다.

 

Lambda 함수 생성

생성한 함수를 클릭해 Test버튼을 클릭한다.

 

TestCase 생성

TestCase로 이벤트 이름을 입력하고 json 형식으로 key, value를 지정해주고 생성 버튼을 클릭한다.

테스트 버튼을 클릭하면 결과를 확인할 수 있다.

Test Event Name : testEvent

Response
{
  "statusCode": 200,
  "body": "\"Hello from Lambda!\""
}

 

다음은 TestCase에서 작성한 값을 확인해 보겠다.

TestCase에서 Request한 값은 event 변수로 넘어오고 event['key name']으로 해당 key 값을 확인할 수 있다.

아래 코드를 추가하고 Deploy(저장) 버튼을 클릭한 후 Test 버튼을 클릭한다.

exports.handler = async (event) => {
    // TODO implement
    let event_list = {
      'key1' : event['key1'],
      'key2' : event['key2'],
      'key3' : event['key3']
    };   
    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
        event_list : event_list
    };
    return response;
};

 

위 TestCase에서 작성한 key의 value들이 출력되는것을 확인할 수 있다.

Response
{
  "statusCode": 200,
  "body": "\"Hello from Lambda!\"",
  "event_list": {
    "key1": "value1",
    "key2": "value2",
    "key3": "value3"
  }
}

 

Lambda Layer 

저번 포스팅에서 설명 했듯이 Layer을 .zip 파일로 업로드 하기위해서는 디렉토리 규칙이 필요하다.

axios module 설치하는 실습을 통해 확인해보자.

Windows 기준 입니다.

1. nodejs .zip 파일을 생성할 디렉토리를 하나 만든다.
mkdir layer_test

 

2. nodejs 디렉토리를 생성한다.
mkdir nodejs

 

3. nodejs 디렉토리에 진입해서 npm 초기화를 진행한다.
cd nodejs & npm init

package.json, package-lock.json 파일은 삭제 한다. ( 파일 같이 포함 시 오류 발생 )

 

4. axios 패키지를 설치한다.
npm install --save axios

 

1~4번을 실행했다면 아래와 같은 디렉토리 구조를 확인할 수 있다.

업로드해야할 형식은 다음과 같다.

  • .zip파일명은 nodejs여야 한다-> nodejs
  • zip 파일 안 디렉토리는 node_modules여야 한다.
layer_test
	-nodejs
	    --node_modules
        	---axios
            	---follow-redirects

 

5. Layer을 적용하고 아래 코드를 입력한고 테스트 케이스를 수행한다.

exports.handler = async (event) => {
    const test =require('axios')
    // TODO implement
    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
    };
    return response;
};


// response
{
  "statusCode": 200,
  "body": "\"Hello from Lambda!\""
}

 

Lambda, Layer 의 개념에 대해 알아보고 실습까지 진행해 보았다. 다음 포스팅에서는 API Gateway와 Lambda를 연동 하는 실습을 진행해 볼 예정이다.

 

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

-> https://bit.ly/37BpXiC

댓글0