Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
AWS Lambda on IaCを追い求め続けて1年経った
Search
Michael
July 26, 2019
Programming
620
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWS Lambda on IaCを追い求め続けて1年経った
Michael
July 26, 2019
More Decks by Michael
See All by Michael
Terraform on public cloudの理想と現実
romtin
1
32
Other Decks in Programming
See All in Programming
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
300
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
170
Verilogで学ぶCPU自作入門
uyuki234
8
4.1k
Web Framework Benchmark Battle 2026, Any%
a_matsuda
2
2.3k
APNsからLive Activityを開始する話
yumnumm
0
170
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5.1k
TechTown - Creating Composable Callables in Contemporary C++
rollbear
0
130
The Rails Doctrine Decade
koic
2
590
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
970
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
640
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
370
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
180
Featured
See All Featured
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
520
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
460
Game over? The fight for quality and originality in the time of robots
wayneb77
1
310
エンジニアに許された特別な時間の終わり
watany
109
250k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Why Our Code Smells
bkeepers
PRO
340
58k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.7k
The Invisible Side of Design
smashingmag
301
52k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Fantastic passwords and where to find them - at NoRuKo
philnash
53
4k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
KATA
mclloyd
PRO
35
16k
Transcript
AWS Lambda on IaCを 追い求め続けて1年経った Ryoya Komatsu
小松凌也 • 社会 2年目 • 技術 Terraform AWS GCP Python
Go Docker Kubernetes • 趣味 バイク ツーリング 旅行 カメラ ボルダリング @mic_psm
MV Agusta Brutale 800 Dragster RR n 並列3気筒 798cc n
140馬力 / 8.87kgf・m n 13,200rpm (回転数リミット) n 3.0秒 (0-100km/h加速) n 244.0km/h (最高速度) n はやい・かっこいい 3
話すこと 4 1. Lambdaのバージョンとデプロイの管理が難しい 2. Terraformを使う 3. Apexを使う 4. TerraformでLambda
layerを使う
話さないこと 5 1. Lambda functionの開発手法のこと 2. AWS SAMのこと 3. Local
Stackのこと
Lambdaの手動デプロイ 6 1. Lambda functionを実装する。 2. 依存ライブラリのインストール / ビルドをする。 3.
zipで固める。 4. GUIかCLI経由でアップロードする。
Lambdaの手動デプロイ 7 1. Lambda functionを実装する。 2. 依存ライブラリのインストール / ビルドをする。 3.
zipで固める。 4. GUIかCLI経由でアップロードする。 管理とデプロイが辛い (環境変数/リソース取り違え) (差分が分からん) (何回もやるの面倒)
8
Lambda on Terraform 9 n resource: template_dir テンプレートのプレースホルダに変数を展開
Lambda on Terraform 10 n resource: template_dir テンプレートのプレースホルダに変数を展開 n provisioner:
local-exec ライブラリのインストール
Lambda on Terraform 11 n resource: template_dir テンプレートのプレースホルダに変数を展開 n provisioner:
local-exec ライブラリのインストール n data source: archive_file zipファイル生成
Lambda on Terraform 12 n resource: template_dir テンプレートのプレースホルダに変数を展開 n provisioner:
local-exec ライブラリのインストール n data source: archive_file zipファイル生成 n resource: aws_lambda_function Lambda functionのデプロイ
Lambda on Terraform 13 デプロイ 微妙(全自動だけど遅い) 取り違え 良くはない 管理 起こりにくい
Lambda on Terraformのつらみ 14 nfunctionの変更有無に関わらずデプロイ される nterraform planの結果がメッチャ汚くなる n毎回ライブラリのインストールをするの でクソ遅い
15 つらい
Lambda on Terraform 16 n template_dirはリソース、archive_fileはデータソース n 一回目の実行ではtemplate_dirが作られたあとにarchive_fileでzipが作られ る n
二回目以降では既にtemplate_dirによってディレクトリが作成されてし まっているので、一個前の実行で作成されたディレクトリのzipが archive_fileによって作られる(=ズレる) n なので毎回template_dirで作られたディレクトリをrm -rfとかで無理やり消 す必要がある。 強制デプロイが何故起こるか
17
Lambda on Apex 18 • ビルドとかデプロイとか全部やってくれる • Terraformの管理下からは外れる • Terraformだけを使うよりは良さそう?
Lambda on Apex 19 デプロイ 楽(全自動) 取り違え 起こりにくい 管理 微妙
Lambda on Apexのつらみ 20 n実行計画が見えず、 Lambda自体の差分管理ができない nTerraformとの依存関係の解決が面倒 nApexとTerraformの両方の知識が必要 n毎回ライブラリのインストールをするの でクソ遅い
21
Lambda on IaCのつらみ 22 nライブラリの同梱に死ぬほど時間がかか る(pipが悪い) n頑張ってトリッキーなことやろうとする とすぐ破滅する
Lambda on IaCの理想 23 nやはり管理するならTerraformがいい nちゃんと差分も管理したい nトロいのはダメ
Lambda on IaCの理想(解法) 24 nリポジトリが無法地帯になる n許容できるなら良さそう nrequirementsとか変わったとき辛いかも ライブラリとか全部リポジトリに突っ込んでおく n関数から分離された別の何かを用意する? ライブラリをインストールする回数を減らす
25
26 良いのあるやん
AWS Lambda Layer 27 nオレオレライブラリみたいなやつ n関数とかクラスとかライブラリとか固め て置いておける nLambda実行時にランタイムの/optに展開 される n激便利
Lambda + layer on Terraform 28 • functionにライブラリとかを含める必要がなくなる • zipが超小さくなってデプロイが高速になる
• オンラインエディタが余裕で使える • 良い
Lambda + layer on Terraformの実現方法 29 n必要なライブラリとか関数とかクラスとかまとめ て突っ込んでおく(必要に応じて分ける nfunctionとは別のtfstateで管理する Lambda
layer nlayerから必要なものをimportして使うだけ nlayerとは別のtfstateで管理する Lambda function
Lambda + layer on Terraformの実現方法 30 n必要なライブラリとか関数とかクラスとかまとめ て突っ込んでおく(必要に応じて分ける nfunctionとは別のtfstateで管理する Lambda
layer nlayerから必要なものをimportして使うだけ nlayerとは別のtfstateで管理する Lambda function そして生まれるCommon Layer
Lambda + layer on Terraform 31 デプロイ 少し煩雑 取り違え 良い
管理 起こりにくい
Lambda + layer on Terraformの良さ 32 nlocal-execとかtemplate_dirを使わないの で健全 n差分があるときだけデプロイされる nfunctionのみをzipで固めてポンするだけ
なので速い
Lambda + layer on Terraformのつらみ 33 n分かれたtfstateの管理が必要 ncommonなんとかが生まれがち (良い悪いは別として)
34 今の所一番良さげ いざ、Lambda layer
Apex is gone.
ありがとうございました n web: http://RomTin.github.io n e-mail:
[email protected]
n Twitter: https://twitter.com/mic_psm