Lambda 함수 테스트와 실행

만들어진 새 Lambda 함수를 테스트하고 포함된 소스코드를 활용해 새로운 기능을 추가해 실행 해 봅니다.

Lambda 함수를 처음 만들면, 기본 템플릿 코드와 함께 함수를 구성하는 모든 정보를 한 눈에 볼 수 있는 상세 페이지로 이동할 수 있습니다. 개발의 관점에서 Lambda 에 접근하는 의미로, 우선 코드의 구성에 대해서 살펴보겠습니다.

Node.js, Python 등의 인터프리터 언어들은 Lambda 에서 내장 코드 에디터를 사용할 수 있습니다. 그러나 Java, Go 등의 언어는 컴파일의 결과로 얻어지는 Binary 파일이 Lambda 로 배포되기 때문에, 코드 에디터를 사용할 수 없습니다.

Node.js 런타임을 선택해 만들어진 Lambda 함수는 index.mjs 파일 한 개만 포함 되어 있습니다. dependency 관리를 위한 package.json 등의 지원용 파일은 보이지 않습니다.

확장자 .mjs 는 Node.js 런타임에게 이 파일이 ES6 코드 규칙을 적용하였음을 알려줍니다. CommonJS 코드 규칙을 사용하려면 index.mjs 파일의 이름을 index.js 로 바꾸어 사용하면 됩니다.

우선기본으로 탑재된 템플릿 코드를 Test 버튼을 눌러 실행해 봅니다. 이벤트 이름은 test1 으로 입력하고, 나머지는 그대로 두고 저장 버튼을 누릅니다. 각 테스트 마다 다른 입력값을 두고 여러 각도로 테스트를 수행할 수 있습니다.

테스트 항목 생성 및 수행

처음으로 테스트 항목을 만들었기 때문에, 아래 그림과 같이 Test 버튼 드롭다운에 test1 항목이 생겼습니다. 이것을 마우스로 선택 해 둔 상태에서, Test 버튼을 눌러 테스트를 수행해 봅니다.

실행의 결과는 아래와 같이 코드에서 적은 "Hello from Lamba!" 구문이 보이고 있습니다.

이 내용의 주변이 JSON 구문으로 구성돼 있는데, 실제 소스코드가 상태 코드 200 과 함께 body 로 JSON 구문의 문자열을 출력하는 것으로 돼 있습니다. 이 템플릿에서는 JSON.stringify() 함수에 일반 문자열을 입력 했기 때문에, 코드를 조금 수정하여 json 객체를 직접 넣어보도록 하겠습니다.

// index.mjs
export const handler = async (event) => {
  // TODO implement
  const data = {
    "name" : "홍길동",
    "address" : "남대문"
  };
  
  const response = {
    statusCode: 200,
    body: JSON.stringify(data),
  };
  return response;
};

내장 에디터에서 코드를 수정하면, Deploy 버튼을 눌러 먼저 코드를 배포하고 잠시 뒤에 Test 버튼을 수행합니다.

새로 고친 코드를 배포하여 테스트 해보니 코드 내용의 json 타입 데이터가 아래와 같이 출력되어 변경이 잘 반영되고 있음을 보여줍니다. 참고로 실행 시간과 이 일을 처리하기 위해 배정된 서버가 사용한 메모리의 크기 등이 함께 출력 됩니다.

파라미터 전달

외부에서 파라미터를 전달받는 경우 이를 사용하는 방법을 알아봅니다. 위에서 생성한 test1 테스트 케이스는 다음과 같은 기본 파라미터를 전달하도록 지정되었습니다.

// Parameter body of test1 
{
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}

이 파라미터를 받은 뒤 내용을 확인 하기 위해 코드를 다음과 같이 수정하고 Deploy 한 뒤에 Test 버튼을 눌러 코드를 실행해 봅니다.

// index.mjs
export const handler = async (event) => {
  // TODO implement
  console.log("event", event);
  
  const data = {
    "name" : "홍길동",
    "address" : "남대문"
  };
  
  const response = {
    statusCode: 200,
    body: JSON.stringify(data),
  };
  return response;
};

실행 결과는 아래와 같은데, console.log() 함수는 Function Logs 라는 섹션에 출력이 표시됨에 주의 해야합니다. 아래의 결과로써, 입력된 파라미터 전체는 handle( event ) 함수의 event 파라미터를 통해 전달되는 것을 알 수 있으며, 이것은 json 객체 형태라는 것을 알 수 있습니다.

이로써 Lambda 코드를 가볍게 수정하고 수정된 내용을 테스트하여 변경된 결과를 확인할 수 있게 되었습니다. 내장 에디터는 간단한 소스코드의 수정과 배포를 하는 데는 충분한 기능을 제공합니다. 그러나 소스코드의 크기가 커지면 사용할 수 없게 됩니다. 따라서 Lambda 코드 편집과 관리는 별도의 개발 도구를 활용해야 합니다.

Last updated