AWS 람다, 프로그래밍 언어 최신 버전 추가 지원
파이썬 3.8, 노드 12.0, 자바 11

AWS 람다AWS Lambda는 별도의 컴퓨팅 환경을 준비하지 않고 프로그램을 실행할 수 있는 AWSAmazon Web Service를 대표하는 서비리스 서비스입니다. 현재 AWS 람다에서는 자바Java, 노드jsNode.js, 파이썬Python, 루비Ruby, 고Go, 닷넷.NET를 공식 지원하고 있습니다. 또한 커스텀 런타임을 사용해 공식 지원하지 않는 언어나 버전을 사용하는 것도 가능합니다.

지난 11월 18일 AWS에서는 AWS 람다에서 자바Java 11, 노드jsNode.js 12, 파이썬Python 3.8을 공식 지원한다고 발표했습니다.

새로운 버전 지원과 함께 주요한 변화 중 하나는 람다가 실행되는 환경이 아마존 리눅스Amazon Linux에서 아마존 리눅스 2Amazon Linux 2로 변경되고 있다는 점입니다. 이미 노드js의 경우는 이전 지원 버전인 10 버전부터 아마존 리눅스 기반에서 동작하고 있었습니다. 이번에 지원되는 새로운 버전들은 모두 아마존 리눅스 2기반에서 동작합니다. 아마존 리눅스 2기반 람다가 실행되는 환경은 다음과 같습니다.

  • AMI – amzn2-ami-hvm-2.0.20190313-x86_64-gp2, Linux kernel – 4.14.123-95.109.amzn2.x86_64

위의 AMI를 사용하면 실제 람다가 동작하는 것과 같은 환경을 테스트해보는 게 가능합니다.

람다 실행환경에 대한 더 자세한 내용은 런타임 문서를 확인해주세요.

서버리스(Serverless) 프레임워크로 노드js(Node.js) 12 코드 실행해보기

서버리스Serverless 프레임워크로 새로운 버전의 노드js를 실행하는 간단한 예제를 만들어보겠습니다. AWS 설정과 서버리스는 이미 준비되어있다고 가정하겠습니다.

먼저 serverless 명령어로 프로젝트를 생성합니다.

$ serverless create -t aws-nodejs -p node12
            Serverless: Generating boilerplate...
            Serverless: Generating boilerplate in "/Users/ben/Dropbox/workspace/hubtee/perpetual/node12"
             _______                             __
            |   _   .-----.----.--.--.-----.----|  .-----.-----.-----.
            |   |___|  -__|   _|  |  |  -__|   _|  |  -__|__ --|__ --|
            |____   |_____|__|  \___/|_____|__| |__|_____|_____|_____|
            |   |   |             The Serverless Application Framework
            |       |                           serverless.com, v1.54.0
             -------'

            Serverless: Successfully generated boilerplate for template: "aws-nodejs"

프로젝트에는 handler.jsserverless.yml 파일이 생성됩니다. 먼저 serverless.yml 파일에서 프로바이더provider의 런타임runtime을 노드js 12 버전으로 지정해줍니다.

service: node12
            
            provider:
              name: aws
              runtime: nodejs12.x
            
            functions:
              hello:
                handler: handler.hello

다음으로 handler.js 파일을 수정해줍니다. process 라이브러리를 사용해서 코드 생애서 버전을 반환하도록 하겠습니다. 이를 통해 람다에서 실제로 실행되는 노드js의 버전을 확인할 수 있습니다.

'use strict';
            
            const process = require('process')
            
            module.exports.hello = async event => {
              return {
                statusCode: 200,
                body: `Node.js Runtime Version: ${ process.version }`
              };
            };

이제 준비는 끝났습니다. 람다 함수를 배포하고 실행해봅니다.

$ sls deploy
            $ sls invoke --function hello | jq .
            {
              "statusCode": 200,
              "body": "Node.js Runtime Version: v12.13.0"
            }

body에 노드js의 버전이 출력된 것을 확인할 수 있습니다. 현재 코드를 실행하고 있는 노드js 버전은 12.13이네요.

44BITS 로고

아마존 웹 서비스(AWS, Amazon Web Serivce)란?

🏷️ 키워드, 2020-01-20 - 아마존 웹 서비스는 아마존의 자회사로 같은 이름으로 퍼블릭 클라우드 컴퓨팅 서비스를 제공하고 있습니다. 대표적인 서비스로는 컴퓨팅 자원을 제공하는 EC2, 오브젝트 스토리지 S3, 프라이빗 클라우드 VPC, 권한 제어 IAM, 컨테이너 오케스트레이션 ECS, EKS 등이 있습니다.
44BITS 로고

AWS 람다(AWS Lambda)란?

🏷️ 키워드, 2020-02-08 - AWS 람다(AWS Lambda)는 아마존 웹서비스에서 제공하는 서버리스 컴퓨팅 서비스입니다. 2014년 AWS 리인벤트(AWS re:Invent)에서 처음 발표되었습니다. 서버리스 컴퓨팅은 애플리케이션을 실행하기 위핸 별도의 서버 준비 없이, 곧바로 코드를 실행해주는 서비스입니다.

당근마켓의 경영정보시스템 팀에서 일하고 있습니다.