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를 사용하면 실제 람다가 동작하는 것과 같은 환경을 테스트해보는 게 가능합니다.

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

서버리스(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이네요.

도커(Docker), 쿠버네티스(Kubernetes) 통합 도커 데스크톱을 스테이블 채널에 릴리즈

새소식, 2018-08-13 - 2018년 7월 25일 도커(Docker)에서는 쿠버네티스(Kubernetes) 통합 도커 데스크탑을 스테이블 채널로 릴리즈하였습니다.

컨테이너 기초 - 정적 링크 프로그램을 chroot와 도커(Docker) scratch 이미지로 실행하기

기사, 2018-12-10 - C 프로그램을 작성하고 이를 동적 링크 컴파일한 경우와 정적 링크 컴파일한 경우로 나눠서 chroot로 실행해봅니다. 그리고 도커(Docker)의 scratch 이미지를 기반으로 같은 방식을 적용하는 법을 소개합니다.

AWS 람다 레이어(AWS Lambda Layers)를 다른 계정이나 조직과 공유하기

기사, 2019-01-03 - 리인벤트(re:Invent) 2018에서는 AWS 람다의 새로운 기능으로 람다 함수들 간의 공통 부분을 공유할 수 있는 람다 레이어를 발표했습니다. 람다 레이어는 하나의 계정에서 공통 부분을 분리하는 데 사용할 수도 있지만 다른 조직이나 계정과 공유해서 사용하는 것도 가능합니다. 이 글에서는 람다 레이어를 다른 계정과 공유하는 방법에 대해서 알아봅니다.