SlideShare a Scribd company logo
1 of 48
Download to read offline
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
내 입맛에 맞는 프로그래밍 언어로
Lambda 함수 만들기
정창훈


당근마켓
당근마켓
CTO
정창훈
@seapy
유튜버
팟캐스트
당근마켓
Seapy
루비
A
W
S
람
다
Node.js
Fotran
VB.net
GraalVM
Swift
Pascal
Common Lisp
Haskell
Vim
Crystal
AWS Lambda Custom Runtimes芸⼈ Advent Calendar 2018
커스텀 런타임
(Custom Runtime)
• 커스텀 런타임은 bootstrap 파일을 실행
• bootstrap 을 만들어서 정해진 위치에 두면 끝
커스텀 런타임 실행 구조
bootstrap
에러 발생시 핸들링
이벤트 데이터
(SNS, S3, API GW )
컨텍스트
(파일이름, 함수 이름…)
루비파일의 함수 실행
실행결과
Lambda Runtime API
커스텀 런타임에서 해야 할 일
bootstrap 만들기
#!/bin/sh
cd $LAMBDA_TASK_ROOT
./node-v11.1.0-linux-x64/bin/node runtime.js
일반적인 bootstrap
#!/bin/sh
set -euo pipefail
source $LAMBDA_TASK_ROOT/"$(echo $_HANDLER | cut -d. -f1).sh"
while true
do
HEADERS="$(mktemp)"
EVENT=$(curl -sS -LD "$HEADERS" -X GET "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/
runtime/invocation/next")
REQ_ID=$(grep -Fi Lambda-Runtime-Aws-Request-Id "$HEADERS" | tr -d '[:space:]' | cut -d: -f2)
RESPONSE=$($(echo "$_HANDLER" | cut -d. -f2) "$EVENT")
curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQ_ID/
response" -d “$RESPONSE"
done
bootstrap 코드에 Runtime 구현
http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01
AWS Lambda Runtime API
#!/bin/sh
set -euo pipefail
source $LAMBDA_TASK_ROOT/"$(echo $_HANDLER | cut -d. -f1).sh"
while true
do
HEADERS="$(mktemp)"
EVENT=$(curl -sS -LD "$HEADERS" -X GET "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/
runtime/invocation/next")
REQ_ID=$(grep -Fi Lambda-Runtime-Aws-Request-Id "$HEADERS" | tr -d '[:space:]' | cut -d: -f2)
RESPONSE=$($(echo "$_HANDLER" | cut -d. -f2) "$EVENT")
curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQ_ID/
response" -d “$RESPONSE"
done
이벤트 데이터 가져오기
• /runtime/invocation/next
• 람다 실행과 함께 전달된 이벤트 데이터 조회
• Request ID
• Client Context
• X-Ray Trace ID
• Lambda Function ARN
• Deadline ms
• Cognito Identity
API : Next Invocation
#!/bin/sh
set -euo pipefail
source $LAMBDA_TASK_ROOT/"$(echo $_HANDLER | cut -d. -f1).sh"
while true
do
HEADERS="$(mktemp)"
EVENT=$(curl -sS -LD "$HEADERS" -X GET "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/
runtime/invocation/next")
REQ_ID=$(grep -Fi Lambda-Runtime-Aws-Request-Id "$HEADERS" | tr -d '[:space:]' | cut -d: -f2)
RESPONSE=$($(echo "$_HANDLER" | cut -d. -f2) "$EVENT")
curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQ_ID/
response" -d “$RESPONSE"
done
람다 함수 실행
#!/bin/sh
set -euo pipefail
source $LAMBDA_TASK_ROOT/"$(echo $_HANDLER | cut -d. -f1).sh"
while true
do
HEADERS="$(mktemp)"
EVENT=$(curl -sS -LD "$HEADERS" -X GET "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/
runtime/invocation/next")
REQ_ID=$(grep -Fi Lambda-Runtime-Aws-Request-Id "$HEADERS" | tr -d '[:space:]' | cut -d: -f2)
RESPONSE=$($(echo "$_HANDLER" | cut -d. -f2) "$EVENT")
curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQ_ID/
response" -d “$RESPONSE"
done
함수 실행 결과 전달
• /runtime/invocation/{RequestId}/response
• 람다 함수 실행 결과를 전달
API : Invocation Response
• Invocation Error
• /runtime/invocation/{RequestId}/error
• Initialization Error
• /runtime/init/error
해야되는데 안한것
귀찮다…
귀찮음을 극복한 이야기
AWS Lambda 루비 버전
2.5
매년 크리스마스
새로운 루비 버전 릴리즈
• 2.6.0 - 2018-12-25
• 2.5.0 - 2017-12-25
• 2.4.0 - 2016-12-25
• 2.3.0 - 2015-12-25
• 2.2.0 - 2014-12-25
• 2.1.0 - 2013-12-25
2.6.0이 나왔는데
2.5.0을 사용하기는 찝찝하다.
혹은 내가 좋아하는 언어를 지원 안해준다
(ex. Fortran)
루비 2.5 람다 어딘가 bootstrap이 있겠네!
def lambda_handler(event:, context:)
`tar -cvf /tmp/runtime.tar /var/runtime`
result = `curl -F "file=@/tmp/runtime.tar" https://file.io`
{ statusCode: 200, body: result }
end
루비 2.5 람다 런타임에 있는 bootstrap 및 관련 파일 다운로드
압축을 풀면 bootstrap 파일 및 관련된 lib 폴더가 같이 있음
def lambda_handler(event:, context:)
`tar -cvf /tmp/runtime.tar /var/runtime`
result = `curl -F "file=@/tmp/runtime.tar" https://file.io`
{ statusCode: 200, body: result }
end
루비 2.5 람다 런타임에 있는 bootstrap 및 관련 파일 다운로드
압축을 풀면 bootstrap 파일 및 관련된 lib 폴더가 같이 있음
def lambda_handler(event:, context:)
`tar -cvf /tmp/runtime.tar /var/runtime`
result = `curl -F "file=@/tmp/runtime.tar" https://file.io`
{ statusCode: 200, body: result }
end
루비 2.5 람다 런타임에 있는 bootstrap 및 관련 파일 다운로드
압축을 풀면 bootstrap 파일 및 관련된 lib 폴더가 같이 있음
• /var/runtime 을 /var/task/ruby 로 변경(Lambda
Layer 라면 /opt/ruby)
bootstrap 파일 수정
# 주요 변경 예시
export GEM_HOME=/var/task/vendor/bundle/ruby/2.6.0
export GEM_PATH=/var/task/vendor/bundle/ruby/2.6.0:/var/task/ruby/gems/
2.6.0:/var/task/ruby/lib/ruby/gems/2.6.0
export RUBYLIB=/var/task:/var/task/ruby/lib:$RUBYLIB
export PATH=/var/task/ruby/bin:$PATH
/var/task/lib/runtime.rb
• Lambda 가 실행되는 환경에서 빌드
• Operating system ‒ Amazon Linux
• AMI ‒ amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2
• Linux kernel ‒ 4.14.77-70.59.amzn1.x86_64
• EC2에서 빌드하기 번거로우니까 

lambci/lambda-base:build 도커 이미지 사용
루비 2.6.0 빌드
$ docker run -it --rm -v $(pwd):/var/task lambci/lambda-base:build /bin/bash
bash# yum install -y git bzip2 openssl-devel libyaml-devel libffi-devel 
readline-devel zlib-devel gdbm-devel ncurses-devel 
gcc gcc-c++ autoconf automake libtool bison
bash# git clone https://github.com/rbenv/ruby-build.git
bash# PREFIX=/usr/local ./ruby-build/install.sh
bash# ruby-build 2.6.0 /var/task/ruby
루비 2.6.0 빌드
/var/task/ruby
Lambda 실행시 루비 2.6.0이 설치될 경로
/opt/ruby
Lambda Layer 사용시
require 'json'
def lambda_handler(event:, context:)
r = {
version: "Current lambda ruby versions is #{RUBY_VERSION}",
endless: [0, 1, 2][0..]
}
{ statusCode: 200, body: JSON.generate(r) }
end
lambda_function.rb
준비된 파일들을 zip
.
├─ bootstrap 기존 람다에서 받은 파일. 루비 경로 변경
├─ lib 기존 람다에서 받은 파일
├─ ruby 빌드한 루비 2.6.0 폴더
└─ lambda_function.rb 실행될 람다 함수
$ zip -r ruby_260.zip bootstrap lib ruby lambda_function.rb
실행!
$ aws lambda create-function 
--function-name "aws-lambda-ruby-260" 
--zip-file "fileb://ruby_260.zip" 
--handler "lambda_function.lambda_handler" 
--runtime provided 
--role arn:aws:iam::xxxxxx:role/lambda_basic_execution
$ aws lambda invoke 
--function-name "aws-lambda-ruby-260" 
--payload '{"text":"Hello"}' 
response.txt
$ cat response.txt
{"statusCode":200,"body":"{"version":"Current lambda ruby
versions is 2.6.0","endless":[0,1,2]}"}
이것도 귀찮다!
루비 2.6.0을 쉽게 사용하는 방법
arn:aws:lambda:<region>:350831304703:layer:ruby-260:1
Ex) Seoul Region
arn:aws:lambda:ap-northeast-2:350831304703:layer:ruby-260:1
미리 만들어둔 람다 레이어 사용
루비 2.6 버전 커스텀 런타임에 대한
자세한 내용은 블로그 참고
AWS 람다(AWS Lambda) 커스텀 런타임 만들기

(feat. 루비 2.6.0) | 44bits.io
루비 2.6.0 빌드 및 람다 레이어 배포 소스 코드
https://github.com/seapy/aws-lambda-custom-
runtime-builder-for-ruby
내가 만들어서 다른사람을 이롭게 하자
루비처럼 람다에 루비 지원해달라고
청원 사이트 만들 필요 없다!



https://www.serverless-ruby.org/
AWS가 언어의 새로운 버전 적용 해주기를
기다릴 필요가 없다.
루비 1.0 버전을 실행하고 싶을때 AWS가 해줄리가 없음.
Fotran
VB.net
GraalVM
Swift
Pascal
Common Lisp
Haskell
Vim
Crystal
AWS Lambda Custom Runtimes芸⼈ Advent Calendar 2018
당근마켓 채용중
https://dngn.kr/join-us

More Related Content

What's hot

개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020
개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020
개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020AWSKRUG - AWS한국사용자모임
 
AWS 보안서비스 소개
AWS 보안서비스 소개AWS 보안서비스 소개
AWS 보안서비스 소개GS Neotek
 
AWS Summit 2019 - GS네오텍
AWS Summit 2019 - GS네오텍AWS Summit 2019 - GS네오텍
AWS Summit 2019 - GS네오텍GS Neotek
 
Aws summit 2017_이상오_fn
Aws summit 2017_이상오_fnAws summit 2017_이상오_fn
Aws summit 2017_이상오_fnLEE Kevin
 
게임업계 IT 관리자를 위한 7가지 유용한 팁 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임업계 IT 관리자를 위한 7가지 유용한 팁 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming게임업계 IT 관리자를 위한 7가지 유용한 팁 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임업계 IT 관리자를 위한 7가지 유용한 팁 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingAmazon Web Services Korea
 
DevOps with AWS Edge
DevOps with AWS EdgeDevOps with AWS Edge
DevOps with AWS EdgeGS Neotek
 
데브옵스(DevOps)의 현재와 미래 - ChatOps & VoiceOps (윤석찬)
데브옵스(DevOps)의 현재와 미래 - ChatOps & VoiceOps (윤석찬)데브옵스(DevOps)의 현재와 미래 - ChatOps & VoiceOps (윤석찬)
데브옵스(DevOps)의 현재와 미래 - ChatOps & VoiceOps (윤석찬)Amazon Web Services Korea
 
AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD/CI) 사례 - AWS Summit Seoul 2017
AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD/CI) 사례 - AWS Summit Seoul 2017AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD/CI) 사례 - AWS Summit Seoul 2017
AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD/CI) 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
20180124 naver labs aws network and security
20180124 naver labs aws network and security20180124 naver labs aws network and security
20180124 naver labs aws network and securityJongwon Han
 
초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정Seonghun Kang
 
Amazon Redshift로 데이터웨어하우스(DW) 구축하기
Amazon Redshift로 데이터웨어하우스(DW) 구축하기Amazon Redshift로 데이터웨어하우스(DW) 구축하기
Amazon Redshift로 데이터웨어하우스(DW) 구축하기Amazon Web Services Korea
 
Amazon Echo 기반 IoT 서비스 개발을 위한 Alexa Skills Kit 및 AWS Lambda 활용 (윤석찬)
Amazon Echo 기반 IoT 서비스 개발을 위한 Alexa Skills Kit 및 AWS Lambda 활용 (윤석찬) Amazon Echo 기반 IoT 서비스 개발을 위한 Alexa Skills Kit 및 AWS Lambda 활용 (윤석찬)
Amazon Echo 기반 IoT 서비스 개발을 위한 Alexa Skills Kit 및 AWS Lambda 활용 (윤석찬) Amazon Web Services Korea
 
[AWS Migration Workshop] SQL Server Performance on AWS
[AWS Migration Workshop]  SQL Server Performance on AWS[AWS Migration Workshop]  SQL Server Performance on AWS
[AWS Migration Workshop] SQL Server Performance on AWSAmazon Web Services Korea
 
AWS 기반 Kubernetes 정복하기::정영준:: AWS Summit Seoul 2018
AWS 기반 Kubernetes 정복하기::정영준:: AWS Summit Seoul 2018 AWS 기반 Kubernetes 정복하기::정영준:: AWS Summit Seoul 2018
AWS 기반 Kubernetes 정복하기::정영준:: AWS Summit Seoul 2018 Amazon Web Services Korea
 
Basics for understanding the cloud
Basics for understanding the cloudBasics for understanding the cloud
Basics for understanding the cloud재성 고
 
Lag 없는 실시간 데이터 파이프라인을 위한 아키텍처 개선기
Lag 없는 실시간 데이터 파이프라인을 위한 아키텍처 개선기Lag 없는 실시간 데이터 파이프라인을 위한 아키텍처 개선기
Lag 없는 실시간 데이터 파이프라인을 위한 아키텍처 개선기productab180
 
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
성능 최대화를 위한 CloudFront 설정 Best Practice
성능 최대화를 위한 CloudFront 설정 Best Practice성능 최대화를 위한 CloudFront 설정 Best Practice
성능 최대화를 위한 CloudFront 설정 Best PracticeGS Neotek
 

What's hot (20)

개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020
개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020
개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020
 
AWS 보안서비스 소개
AWS 보안서비스 소개AWS 보안서비스 소개
AWS 보안서비스 소개
 
AWS Summit 2019 - GS네오텍
AWS Summit 2019 - GS네오텍AWS Summit 2019 - GS네오텍
AWS Summit 2019 - GS네오텍
 
Aws summit 2017_이상오_fn
Aws summit 2017_이상오_fnAws summit 2017_이상오_fn
Aws summit 2017_이상오_fn
 
게임업계 IT 관리자를 위한 7가지 유용한 팁 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임업계 IT 관리자를 위한 7가지 유용한 팁 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming게임업계 IT 관리자를 위한 7가지 유용한 팁 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임업계 IT 관리자를 위한 7가지 유용한 팁 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
 
DevOps with AWS Edge
DevOps with AWS EdgeDevOps with AWS Edge
DevOps with AWS Edge
 
데브옵스(DevOps)의 현재와 미래 - ChatOps & VoiceOps (윤석찬)
데브옵스(DevOps)의 현재와 미래 - ChatOps & VoiceOps (윤석찬)데브옵스(DevOps)의 현재와 미래 - ChatOps & VoiceOps (윤석찬)
데브옵스(DevOps)의 현재와 미래 - ChatOps & VoiceOps (윤석찬)
 
AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD/CI) 사례 - AWS Summit Seoul 2017
AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD/CI) 사례 - AWS Summit Seoul 2017AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD/CI) 사례 - AWS Summit Seoul 2017
AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD/CI) 사례 - AWS Summit Seoul 2017
 
20180124 naver labs aws network and security
20180124 naver labs aws network and security20180124 naver labs aws network and security
20180124 naver labs aws network and security
 
초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정
 
Amazon Redshift로 데이터웨어하우스(DW) 구축하기
Amazon Redshift로 데이터웨어하우스(DW) 구축하기Amazon Redshift로 데이터웨어하우스(DW) 구축하기
Amazon Redshift로 데이터웨어하우스(DW) 구축하기
 
CloudFront 활용하기
CloudFront 활용하기CloudFront 활용하기
CloudFront 활용하기
 
Amazon Echo 기반 IoT 서비스 개발을 위한 Alexa Skills Kit 및 AWS Lambda 활용 (윤석찬)
Amazon Echo 기반 IoT 서비스 개발을 위한 Alexa Skills Kit 및 AWS Lambda 활용 (윤석찬) Amazon Echo 기반 IoT 서비스 개발을 위한 Alexa Skills Kit 및 AWS Lambda 활용 (윤석찬)
Amazon Echo 기반 IoT 서비스 개발을 위한 Alexa Skills Kit 및 AWS Lambda 활용 (윤석찬)
 
[AWS Migration Workshop] SQL Server Performance on AWS
[AWS Migration Workshop]  SQL Server Performance on AWS[AWS Migration Workshop]  SQL Server Performance on AWS
[AWS Migration Workshop] SQL Server Performance on AWS
 
AWS 기반 Kubernetes 정복하기::정영준:: AWS Summit Seoul 2018
AWS 기반 Kubernetes 정복하기::정영준:: AWS Summit Seoul 2018 AWS 기반 Kubernetes 정복하기::정영준:: AWS Summit Seoul 2018
AWS 기반 Kubernetes 정복하기::정영준:: AWS Summit Seoul 2018
 
Basics for understanding the cloud
Basics for understanding the cloudBasics for understanding the cloud
Basics for understanding the cloud
 
Lag 없는 실시간 데이터 파이프라인을 위한 아키텍처 개선기
Lag 없는 실시간 데이터 파이프라인을 위한 아키텍처 개선기Lag 없는 실시간 데이터 파이프라인을 위한 아키텍처 개선기
Lag 없는 실시간 데이터 파이프라인을 위한 아키텍처 개선기
 
모바일을 위한 (AWS) 클라우드 기술 동향
모바일을 위한 (AWS) 클라우드 기술 동향 모바일을 위한 (AWS) 클라우드 기술 동향
모바일을 위한 (AWS) 클라우드 기술 동향
 
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
 
성능 최대화를 위한 CloudFront 설정 Best Practice
성능 최대화를 위한 CloudFront 설정 Best Practice성능 최대화를 위한 CloudFront 설정 Best Practice
성능 최대화를 위한 CloudFront 설정 Best Practice
 

Similar to 내 입맞에 맞는 프로그래밍 언어로 Lambda 함수 만들기 :: 정창훈 - AWS Community Day 2019

Digging into helm
Digging into helmDigging into helm
Digging into helm상준 윤
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...Amazon Web Services Korea
 
AWS Innovate: Infrastructure Automation on AWS - Seungdo Yang
AWS Innovate: Infrastructure Automation on AWS - Seungdo YangAWS Innovate: Infrastructure Automation on AWS - Seungdo Yang
AWS Innovate: Infrastructure Automation on AWS - Seungdo YangAmazon Web Services Korea
 
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중Amazon Web Services Korea
 
성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3Amazon Web Services Korea
 
PHP Log Tracking with ELK & Filebeat part#2
PHP Log Tracking with ELK & Filebeat part#2PHP Log Tracking with ELK & Filebeat part#2
PHP Log Tracking with ELK & Filebeat part#2Juwon Kim
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXpressEngine
 
AWS의 하둡 관련 서비스 - EMR/S3
AWS의 하둡 관련 서비스 - EMR/S3AWS의 하둡 관련 서비스 - EMR/S3
AWS의 하둡 관련 서비스 - EMR/S3Keeyong Han
 
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)LanarkSeung
 
Node.js 팀 스터디 발표자료.
Node.js 팀 스터디 발표자료.Node.js 팀 스터디 발표자료.
Node.js 팀 스터디 발표자료.SeungWoo Lee
 
리스펙토링 6월 세미나, AWS로 개인서버 구축하기
리스펙토링 6월 세미나, AWS로 개인서버 구축하기리스펙토링 6월 세미나, AWS로 개인서버 구축하기
리스펙토링 6월 세미나, AWS로 개인서버 구축하기JungHoon Lee
 
Hadoop security DeView 2014
Hadoop security DeView 2014Hadoop security DeView 2014
Hadoop security DeView 2014Gruter
 
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018Amazon Web Services Korea
 
고급 서버리스 앱 개발 자세히 살펴보기::김필중:: AWS Summit Seoul 2018
고급 서버리스 앱 개발 자세히 살펴보기::김필중:: AWS Summit Seoul 2018고급 서버리스 앱 개발 자세히 살펴보기::김필중:: AWS Summit Seoul 2018
고급 서버리스 앱 개발 자세히 살펴보기::김필중:: AWS Summit Seoul 2018Amazon Web Services Korea
 
Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1성일 한
 

Similar to 내 입맞에 맞는 프로그래밍 언어로 Lambda 함수 만들기 :: 정창훈 - AWS Community Day 2019 (20)

Digging into helm
Digging into helmDigging into helm
Digging into helm
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
 
Amazed by aws 2nd session
Amazed by aws 2nd sessionAmazed by aws 2nd session
Amazed by aws 2nd session
 
AWS Innovate: Infrastructure Automation on AWS - Seungdo Yang
AWS Innovate: Infrastructure Automation on AWS - Seungdo YangAWS Innovate: Infrastructure Automation on AWS - Seungdo Yang
AWS Innovate: Infrastructure Automation on AWS - Seungdo Yang
 
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
 
성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3
 
PHP Log Tracking with ELK & Filebeat part#2
PHP Log Tracking with ELK & Filebeat part#2PHP Log Tracking with ELK & Filebeat part#2
PHP Log Tracking with ELK & Filebeat part#2
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
 
2015 oce garuda
2015 oce garuda2015 oce garuda
2015 oce garuda
 
AWS의 하둡 관련 서비스 - EMR/S3
AWS의 하둡 관련 서비스 - EMR/S3AWS의 하둡 관련 서비스 - EMR/S3
AWS의 하둡 관련 서비스 - EMR/S3
 
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
 
Eclipse RAP
Eclipse RAPEclipse RAP
Eclipse RAP
 
Node.js 팀 스터디 발표자료.
Node.js 팀 스터디 발표자료.Node.js 팀 스터디 발표자료.
Node.js 팀 스터디 발표자료.
 
리스펙토링 6월 세미나, AWS로 개인서버 구축하기
리스펙토링 6월 세미나, AWS로 개인서버 구축하기리스펙토링 6월 세미나, AWS로 개인서버 구축하기
리스펙토링 6월 세미나, AWS로 개인서버 구축하기
 
Hadoop security DeView 2014
Hadoop security DeView 2014Hadoop security DeView 2014
Hadoop security DeView 2014
 
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
 
KAFKA 3.1.0.pdf
KAFKA 3.1.0.pdfKAFKA 3.1.0.pdf
KAFKA 3.1.0.pdf
 
고급 서버리스 앱 개발 자세히 살펴보기::김필중:: AWS Summit Seoul 2018
고급 서버리스 앱 개발 자세히 살펴보기::김필중:: AWS Summit Seoul 2018고급 서버리스 앱 개발 자세히 살펴보기::김필중:: AWS Summit Seoul 2018
고급 서버리스 앱 개발 자세히 살펴보기::김필중:: AWS Summit Seoul 2018
 
Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1
 

More from AWSKRUG - AWS한국사용자모임

IaC로 AWS인프라 관리하기 - 이진성 (AUSG) :: AWS Community Day Online 2021
IaC로 AWS인프라 관리하기 - 이진성 (AUSG) :: AWS Community Day Online 2021IaC로 AWS인프라 관리하기 - 이진성 (AUSG) :: AWS Community Day Online 2021
IaC로 AWS인프라 관리하기 - 이진성 (AUSG) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021
Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021
Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
보안을 위한 AWS Network 구성 - 우수연 (AUSG) :: AWS Community Day Online 2021
보안을 위한 AWS Network 구성 - 우수연 (AUSG) :: AWS Community Day Online 2021보안을 위한 AWS Network 구성 - 우수연 (AUSG) :: AWS Community Day Online 2021
보안을 위한 AWS Network 구성 - 우수연 (AUSG) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
자연어 처리 ML모델을 활용한 이커머스 문제 해결하기 - 진현두 (카카오스타일) :: AWS Community Day Online 2021
자연어 처리 ML모델을 활용한 이커머스 문제 해결하기 - 진현두 (카카오스타일) :: AWS Community Day Online 2021자연어 처리 ML모델을 활용한 이커머스 문제 해결하기 - 진현두 (카카오스타일) :: AWS Community Day Online 2021
자연어 처리 ML모델을 활용한 이커머스 문제 해결하기 - 진현두 (카카오스타일) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
Athena & Step Function 으로 통계 파이프라인 구축하기 - 변규현 (당근마켓) :: AWS Community Day Onl...
Athena & Step Function 으로 통계 파이프라인 구축하기 - 변규현 (당근마켓) :: AWS Community Day Onl...Athena & Step Function 으로 통계 파이프라인 구축하기 - 변규현 (당근마켓) :: AWS Community Day Onl...
Athena & Step Function 으로 통계 파이프라인 구축하기 - 변규현 (당근마켓) :: AWS Community Day Onl...AWSKRUG - AWS한국사용자모임
 
자바개발자가 최대한 빠르게 서비스를 오픈하는 방법 - 최진환 (드라마앤컴퍼니) :: AWS Community Day Online 2021
자바개발자가 최대한 빠르게 서비스를 오픈하는 방법 - 최진환 (드라마앤컴퍼니) :: AWS Community Day Online 2021자바개발자가 최대한 빠르게 서비스를 오픈하는 방법 - 최진환 (드라마앤컴퍼니) :: AWS Community Day Online 2021
자바개발자가 최대한 빠르게 서비스를 오픈하는 방법 - 최진환 (드라마앤컴퍼니) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...AWSKRUG - AWS한국사용자모임
 
커뮤니티 빌더를 아시나요? - 윤평호(AWSKRUG) :: AWS Community Day Online 2021
커뮤니티 빌더를 아시나요? - 윤평호(AWSKRUG) :: AWS Community Day Online 2021커뮤니티 빌더를 아시나요? - 윤평호(AWSKRUG) :: AWS Community Day Online 2021
커뮤니티 빌더를 아시나요? - 윤평호(AWSKRUG) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
복잡한 기존 시스템에 피쳐 애드업 후기 - 김태웅(브랜디) :: AWS Community Day Online 2021
복잡한 기존 시스템에 피쳐 애드업 후기 - 김태웅(브랜디) :: AWS Community Day Online 2021복잡한 기존 시스템에 피쳐 애드업 후기 - 김태웅(브랜디) :: AWS Community Day Online 2021
복잡한 기존 시스템에 피쳐 애드업 후기 - 김태웅(브랜디) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...AWSKRUG - AWS한국사용자모임
 
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
[AWS Hero 스페셜] 서버리스 기반 검색 서비스 구축하기 - 이상현(스마일벤처스) :: AWS Community Day Online ...
[AWS Hero 스페셜] 서버리스 기반 검색 서비스 구축하기 - 이상현(스마일벤처스) :: AWS Community Day Online ...[AWS Hero 스페셜] 서버리스 기반 검색 서비스 구축하기 - 이상현(스마일벤처스) :: AWS Community Day Online ...
[AWS Hero 스페셜] 서버리스 기반 검색 서비스 구축하기 - 이상현(스마일벤처스) :: AWS Community Day Online ...AWSKRUG - AWS한국사용자모임
 
초기 스타트업의 AWS - 김지훈(투어라이브) :: AWS Community Day Online 2020
초기 스타트업의 AWS - 김지훈(투어라이브) :: AWS Community Day Online 2020초기 스타트업의 AWS - 김지훈(투어라이브) :: AWS Community Day Online 2020
초기 스타트업의 AWS - 김지훈(투어라이브) :: AWS Community Day Online 2020AWSKRUG - AWS한국사용자모임
 
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...AWSKRUG - AWS한국사용자모임
 
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020AWSKRUG - AWS한국사용자모임
 
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020AWSKRUG - AWS한국사용자모임
 
엔터프라이즈 기업을 위한 Digital 플랫폼 구축 사례 - 권낙주(SK C&C) :: AWS Community Day Online 2020
엔터프라이즈 기업을 위한 Digital 플랫폼 구축 사례 - 권낙주(SK C&C)  :: AWS Community Day Online 2020엔터프라이즈 기업을 위한 Digital 플랫폼 구축 사례 - 권낙주(SK C&C)  :: AWS Community Day Online 2020
엔터프라이즈 기업을 위한 Digital 플랫폼 구축 사례 - 권낙주(SK C&C) :: AWS Community Day Online 2020AWSKRUG - AWS한국사용자모임
 

More from AWSKRUG - AWS한국사용자모임 (20)

IaC로 AWS인프라 관리하기 - 이진성 (AUSG) :: AWS Community Day Online 2021
IaC로 AWS인프라 관리하기 - 이진성 (AUSG) :: AWS Community Day Online 2021IaC로 AWS인프라 관리하기 - 이진성 (AUSG) :: AWS Community Day Online 2021
IaC로 AWS인프라 관리하기 - 이진성 (AUSG) :: AWS Community Day Online 2021
 
Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021
Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021
Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021
 
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
 
보안을 위한 AWS Network 구성 - 우수연 (AUSG) :: AWS Community Day Online 2021
보안을 위한 AWS Network 구성 - 우수연 (AUSG) :: AWS Community Day Online 2021보안을 위한 AWS Network 구성 - 우수연 (AUSG) :: AWS Community Day Online 2021
보안을 위한 AWS Network 구성 - 우수연 (AUSG) :: AWS Community Day Online 2021
 
자연어 처리 ML모델을 활용한 이커머스 문제 해결하기 - 진현두 (카카오스타일) :: AWS Community Day Online 2021
자연어 처리 ML모델을 활용한 이커머스 문제 해결하기 - 진현두 (카카오스타일) :: AWS Community Day Online 2021자연어 처리 ML모델을 활용한 이커머스 문제 해결하기 - 진현두 (카카오스타일) :: AWS Community Day Online 2021
자연어 처리 ML모델을 활용한 이커머스 문제 해결하기 - 진현두 (카카오스타일) :: AWS Community Day Online 2021
 
Athena & Step Function 으로 통계 파이프라인 구축하기 - 변규현 (당근마켓) :: AWS Community Day Onl...
Athena & Step Function 으로 통계 파이프라인 구축하기 - 변규현 (당근마켓) :: AWS Community Day Onl...Athena & Step Function 으로 통계 파이프라인 구축하기 - 변규현 (당근마켓) :: AWS Community Day Onl...
Athena & Step Function 으로 통계 파이프라인 구축하기 - 변규현 (당근마켓) :: AWS Community Day Onl...
 
자바개발자가 최대한 빠르게 서비스를 오픈하는 방법 - 최진환 (드라마앤컴퍼니) :: AWS Community Day Online 2021
자바개발자가 최대한 빠르게 서비스를 오픈하는 방법 - 최진환 (드라마앤컴퍼니) :: AWS Community Day Online 2021자바개발자가 최대한 빠르게 서비스를 오픈하는 방법 - 최진환 (드라마앤컴퍼니) :: AWS Community Day Online 2021
자바개발자가 최대한 빠르게 서비스를 오픈하는 방법 - 최진환 (드라마앤컴퍼니) :: AWS Community Day Online 2021
 
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
 
커뮤니티 빌더를 아시나요? - 윤평호(AWSKRUG) :: AWS Community Day Online 2021
커뮤니티 빌더를 아시나요? - 윤평호(AWSKRUG) :: AWS Community Day Online 2021커뮤니티 빌더를 아시나요? - 윤평호(AWSKRUG) :: AWS Community Day Online 2021
커뮤니티 빌더를 아시나요? - 윤평호(AWSKRUG) :: AWS Community Day Online 2021
 
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021
 
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021
 
복잡한 기존 시스템에 피쳐 애드업 후기 - 김태웅(브랜디) :: AWS Community Day Online 2021
복잡한 기존 시스템에 피쳐 애드업 후기 - 김태웅(브랜디) :: AWS Community Day Online 2021복잡한 기존 시스템에 피쳐 애드업 후기 - 김태웅(브랜디) :: AWS Community Day Online 2021
복잡한 기존 시스템에 피쳐 애드업 후기 - 김태웅(브랜디) :: AWS Community Day Online 2021
 
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
 
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
 
[AWS Hero 스페셜] 서버리스 기반 검색 서비스 구축하기 - 이상현(스마일벤처스) :: AWS Community Day Online ...
[AWS Hero 스페셜] 서버리스 기반 검색 서비스 구축하기 - 이상현(스마일벤처스) :: AWS Community Day Online ...[AWS Hero 스페셜] 서버리스 기반 검색 서비스 구축하기 - 이상현(스마일벤처스) :: AWS Community Day Online ...
[AWS Hero 스페셜] 서버리스 기반 검색 서비스 구축하기 - 이상현(스마일벤처스) :: AWS Community Day Online ...
 
초기 스타트업의 AWS - 김지훈(투어라이브) :: AWS Community Day Online 2020
초기 스타트업의 AWS - 김지훈(투어라이브) :: AWS Community Day Online 2020초기 스타트업의 AWS - 김지훈(투어라이브) :: AWS Community Day Online 2020
초기 스타트업의 AWS - 김지훈(투어라이브) :: AWS Community Day Online 2020
 
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...
 
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
 
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
 
엔터프라이즈 기업을 위한 Digital 플랫폼 구축 사례 - 권낙주(SK C&C) :: AWS Community Day Online 2020
엔터프라이즈 기업을 위한 Digital 플랫폼 구축 사례 - 권낙주(SK C&C)  :: AWS Community Day Online 2020엔터프라이즈 기업을 위한 Digital 플랫폼 구축 사례 - 권낙주(SK C&C)  :: AWS Community Day Online 2020
엔터프라이즈 기업을 위한 Digital 플랫폼 구축 사례 - 권낙주(SK C&C) :: AWS Community Day Online 2020
 

내 입맞에 맞는 프로그래밍 언어로 Lambda 함수 만들기 :: 정창훈 - AWS Community Day 2019

  • 1. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. 내 입맛에 맞는 프로그래밍 언어로 Lambda 함수 만들기 정창훈 
 당근마켓
  • 4.
  • 5.
  • 6.
  • 9. • 커스텀 런타임은 bootstrap 파일을 실행 • bootstrap 을 만들어서 정해진 위치에 두면 끝 커스텀 런타임 실행 구조
  • 10. bootstrap 에러 발생시 핸들링 이벤트 데이터 (SNS, S3, API GW ) 컨텍스트 (파일이름, 함수 이름…) 루비파일의 함수 실행 실행결과 Lambda Runtime API 커스텀 런타임에서 해야 할 일
  • 13. #!/bin/sh set -euo pipefail source $LAMBDA_TASK_ROOT/"$(echo $_HANDLER | cut -d. -f1).sh" while true do HEADERS="$(mktemp)" EVENT=$(curl -sS -LD "$HEADERS" -X GET "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/ runtime/invocation/next") REQ_ID=$(grep -Fi Lambda-Runtime-Aws-Request-Id "$HEADERS" | tr -d '[:space:]' | cut -d: -f2) RESPONSE=$($(echo "$_HANDLER" | cut -d. -f2) "$EVENT") curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQ_ID/ response" -d “$RESPONSE" done bootstrap 코드에 Runtime 구현
  • 15. #!/bin/sh set -euo pipefail source $LAMBDA_TASK_ROOT/"$(echo $_HANDLER | cut -d. -f1).sh" while true do HEADERS="$(mktemp)" EVENT=$(curl -sS -LD "$HEADERS" -X GET "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/ runtime/invocation/next") REQ_ID=$(grep -Fi Lambda-Runtime-Aws-Request-Id "$HEADERS" | tr -d '[:space:]' | cut -d: -f2) RESPONSE=$($(echo "$_HANDLER" | cut -d. -f2) "$EVENT") curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQ_ID/ response" -d “$RESPONSE" done 이벤트 데이터 가져오기
  • 16. • /runtime/invocation/next • 람다 실행과 함께 전달된 이벤트 데이터 조회 • Request ID • Client Context • X-Ray Trace ID • Lambda Function ARN • Deadline ms • Cognito Identity API : Next Invocation
  • 17. #!/bin/sh set -euo pipefail source $LAMBDA_TASK_ROOT/"$(echo $_HANDLER | cut -d. -f1).sh" while true do HEADERS="$(mktemp)" EVENT=$(curl -sS -LD "$HEADERS" -X GET "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/ runtime/invocation/next") REQ_ID=$(grep -Fi Lambda-Runtime-Aws-Request-Id "$HEADERS" | tr -d '[:space:]' | cut -d: -f2) RESPONSE=$($(echo "$_HANDLER" | cut -d. -f2) "$EVENT") curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQ_ID/ response" -d “$RESPONSE" done 람다 함수 실행
  • 18. #!/bin/sh set -euo pipefail source $LAMBDA_TASK_ROOT/"$(echo $_HANDLER | cut -d. -f1).sh" while true do HEADERS="$(mktemp)" EVENT=$(curl -sS -LD "$HEADERS" -X GET "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/ runtime/invocation/next") REQ_ID=$(grep -Fi Lambda-Runtime-Aws-Request-Id "$HEADERS" | tr -d '[:space:]' | cut -d: -f2) RESPONSE=$($(echo "$_HANDLER" | cut -d. -f2) "$EVENT") curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQ_ID/ response" -d “$RESPONSE" done 함수 실행 결과 전달
  • 19. • /runtime/invocation/{RequestId}/response • 람다 함수 실행 결과를 전달 API : Invocation Response
  • 20. • Invocation Error • /runtime/invocation/{RequestId}/error • Initialization Error • /runtime/init/error 해야되는데 안한것
  • 23. AWS Lambda 루비 버전 2.5
  • 24. 매년 크리스마스 새로운 루비 버전 릴리즈 • 2.6.0 - 2018-12-25 • 2.5.0 - 2017-12-25 • 2.4.0 - 2016-12-25 • 2.3.0 - 2015-12-25 • 2.2.0 - 2014-12-25 • 2.1.0 - 2013-12-25
  • 25. 2.6.0이 나왔는데 2.5.0을 사용하기는 찝찝하다. 혹은 내가 좋아하는 언어를 지원 안해준다 (ex. Fortran)
  • 26.
  • 27. 루비 2.5 람다 어딘가 bootstrap이 있겠네!
  • 28. def lambda_handler(event:, context:) `tar -cvf /tmp/runtime.tar /var/runtime` result = `curl -F "file=@/tmp/runtime.tar" https://file.io` { statusCode: 200, body: result } end 루비 2.5 람다 런타임에 있는 bootstrap 및 관련 파일 다운로드 압축을 풀면 bootstrap 파일 및 관련된 lib 폴더가 같이 있음
  • 29. def lambda_handler(event:, context:) `tar -cvf /tmp/runtime.tar /var/runtime` result = `curl -F "file=@/tmp/runtime.tar" https://file.io` { statusCode: 200, body: result } end 루비 2.5 람다 런타임에 있는 bootstrap 및 관련 파일 다운로드 압축을 풀면 bootstrap 파일 및 관련된 lib 폴더가 같이 있음
  • 30. def lambda_handler(event:, context:) `tar -cvf /tmp/runtime.tar /var/runtime` result = `curl -F "file=@/tmp/runtime.tar" https://file.io` { statusCode: 200, body: result } end 루비 2.5 람다 런타임에 있는 bootstrap 및 관련 파일 다운로드 압축을 풀면 bootstrap 파일 및 관련된 lib 폴더가 같이 있음
  • 31. • /var/runtime 을 /var/task/ruby 로 변경(Lambda Layer 라면 /opt/ruby) bootstrap 파일 수정 # 주요 변경 예시 export GEM_HOME=/var/task/vendor/bundle/ruby/2.6.0 export GEM_PATH=/var/task/vendor/bundle/ruby/2.6.0:/var/task/ruby/gems/ 2.6.0:/var/task/ruby/lib/ruby/gems/2.6.0 export RUBYLIB=/var/task:/var/task/ruby/lib:$RUBYLIB export PATH=/var/task/ruby/bin:$PATH /var/task/lib/runtime.rb
  • 32. • Lambda 가 실행되는 환경에서 빌드 • Operating system ‒ Amazon Linux • AMI ‒ amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2 • Linux kernel ‒ 4.14.77-70.59.amzn1.x86_64 • EC2에서 빌드하기 번거로우니까 
 lambci/lambda-base:build 도커 이미지 사용 루비 2.6.0 빌드
  • 33. $ docker run -it --rm -v $(pwd):/var/task lambci/lambda-base:build /bin/bash bash# yum install -y git bzip2 openssl-devel libyaml-devel libffi-devel readline-devel zlib-devel gdbm-devel ncurses-devel gcc gcc-c++ autoconf automake libtool bison bash# git clone https://github.com/rbenv/ruby-build.git bash# PREFIX=/usr/local ./ruby-build/install.sh bash# ruby-build 2.6.0 /var/task/ruby 루비 2.6.0 빌드
  • 34. /var/task/ruby Lambda 실행시 루비 2.6.0이 설치될 경로 /opt/ruby Lambda Layer 사용시
  • 35. require 'json' def lambda_handler(event:, context:) r = { version: "Current lambda ruby versions is #{RUBY_VERSION}", endless: [0, 1, 2][0..] } { statusCode: 200, body: JSON.generate(r) } end lambda_function.rb
  • 36. 준비된 파일들을 zip . ├─ bootstrap 기존 람다에서 받은 파일. 루비 경로 변경 ├─ lib 기존 람다에서 받은 파일 ├─ ruby 빌드한 루비 2.6.0 폴더 └─ lambda_function.rb 실행될 람다 함수 $ zip -r ruby_260.zip bootstrap lib ruby lambda_function.rb
  • 38. $ aws lambda create-function --function-name "aws-lambda-ruby-260" --zip-file "fileb://ruby_260.zip" --handler "lambda_function.lambda_handler" --runtime provided --role arn:aws:iam::xxxxxx:role/lambda_basic_execution $ aws lambda invoke --function-name "aws-lambda-ruby-260" --payload '{"text":"Hello"}' response.txt $ cat response.txt {"statusCode":200,"body":"{"version":"Current lambda ruby versions is 2.6.0","endless":[0,1,2]}"}
  • 40. 루비 2.6.0을 쉽게 사용하는 방법
  • 42. 루비 2.6 버전 커스텀 런타임에 대한 자세한 내용은 블로그 참고 AWS 람다(AWS Lambda) 커스텀 런타임 만들기
 (feat. 루비 2.6.0) | 44bits.io
  • 43. 루비 2.6.0 빌드 및 람다 레이어 배포 소스 코드 https://github.com/seapy/aws-lambda-custom- runtime-builder-for-ruby
  • 45. 루비처럼 람다에 루비 지원해달라고 청원 사이트 만들 필요 없다!
 
 https://www.serverless-ruby.org/
  • 46. AWS가 언어의 새로운 버전 적용 해주기를 기다릴 필요가 없다. 루비 1.0 버전을 실행하고 싶을때 AWS가 해줄리가 없음.