Apex
Apex는 AWS lambda function 빌드, 배포, 관리를 편리하도록 도와주는 툴이다
설치
•
mac, linux, OpenBSD
$ curl https://raw.githubusercontent.com/apex/apex/master/install.sh | sh
Shell
복사
•
인증 설정
$ ~/.aws/credentials
[example]
aws_access_key_id = xxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxx
$ ~/.aws/config
[profile example]
region = ap-northeast-2
Bash
복사
프로젝트 생성
$ mkdir example
$ cd example
$ apex init # project name, description 등 설정
$ apex deploy
Shell
복사
폴더 구조
├── functions
│ └── hello
│ └── index.js
└── project.json
Plain Text
복사
테스트
$ vim event.json
{"hello": "world"}
$ apex invoke hello < event.json
$ apex invoke hello # without event
Shell
복사
project.json
•
name: 프로젝트명
•
description: 프로젝트 설명
•
runtime: lambda의 런타임 설정
◦
java (Java 8)
◦
python (Python 2.7)
◦
nodejs (Node.js 0.10)
◦
nodejs4.3 (Node.js 4.3)
◦
nodejs6.10 (Node.js 6.10)
◦
golang (any version)
◦
clojure (any version)
◦
rust-musl[^rust-runtime][^rust-linux-only] (any version)
◦
rust-gnu[^rust-runtime][^rust-linux-only] (any version)
•
memory: lambda 할당 메모리
•
timeout: lambda 함수 최대 실행 시간 ( 최대 300초 까지 허용 )
•
role: AWS role
•
profile: AWS 프로파일명
•
defaultEnvironment: 기본 인프라 환경 (stage, production 등)
•
environment: lambda에 적용할 환경 변수
•
nameTemplate: lambda function 만들 때 사용되는 이름 템플릿 (default: {{.Project.Name}}_{{.Function.Name}})
•
retainedVersions: lambda 함수에서 유지하고 있을 버전 개수 (default: 10, 롤백용 등으로 사용함)
•
vpc: AWS VPC
•
vpc.securityGroups: Security Group ID 목록들
•
vpc.subnets: 서브넷 ID 목록들