Blog

Apex

Apex

Apex๋Š” AWS lambda function ๋นŒ๋“œ, ๋ฐฐํฌ, ๊ด€๋ฆฌ๋ฅผ ํŽธ๋ฆฌํ•˜๋„๋ก ๋„์™€์ฃผ๋Š” ํˆด์ด๋‹ค

์„ค์น˜

โ€ข
mac, linux, OpenBSD
$ curl https://raw.githubusercontent.com/apex/apex/master/install.sh | sh
Shell
๋ณต์‚ฌ
โ€ข
window : ๋ฐ”์ด๋„ˆ๋ฆฌ ์„ค์น˜

์ธ์ฆ ์„ค์ •

$ ~/.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 ๋ชฉ๋ก๋“ค