Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LambdaカスタムランタイムでPHPでもサーバーレス!
Search
taiko19xx
July 19, 2019
Technology
0
81
Lambdaカスタムランタイムで PHPでもサーバーレス!
taiko19xx
July 19, 2019
Tweet
Share
More Decks by taiko19xx
See All by taiko19xx
Bedrockで遊ぼう! 短期間で色々開発してみた
taiko19xx
1
150
Incident Managerでインシデント発生時のエスカレーションを自動化する
taiko19xx
0
260
IoTっぽいアプリをk3s+Raspberry Piで実行する
taiko19xx
0
350
ハニーポットから見たWebサーバへの攻撃
taiko19xx
0
2.9k
PHPなプロダクトをAmazon ECSで開発運用してる話
taiko19xx
0
1.3k
RaspberryPi+AWSでIoT(っぽ い)GPSロガーを作ってみた
taiko19xx
0
1.6k
PHPからWin32APIをいじってみた
taiko19xx
0
1.7k
Other Decks in Technology
See All in Technology
事業部のプロジェクト進行と開発チームの改善の “時間軸" のすり合わせ
konifar
9
3k
履歴テーブル、今回はこう作りました 〜 Delegated Types編 〜 / How We Built Our History Table This Time — With Delegated Types
moznion
16
9.4k
モバイルゲーム開発におけるエージェント技術活用への試行錯誤 ~開発効率化へのアプローチの紹介と未来に向けた展望~
qualiarts
0
290
Bakuraku Engineering Team Deck
layerx
PRO
11
5.7k
私も懇親会は苦手でした ~苦手だからこそ懇親会を楽しむ方法~ / 20251127 Masaki Okuda
shift_evolve
PRO
4
550
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
形式手法特論:CEGAR を用いたモデル検査の状態空間削減 #kernelvm / Kernel VM Study Hokuriku Part 8
ytaka23
1
160
著者と読み解くAIエージェント現場導入の勘所 Lancers TechBook#2
smiyawaki0820
9
3k
ページの可視領域を算出する方法について整理する
yamatai1212
0
160
AI駆動開発によるDDDの実践
dip_tech
PRO
0
290
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
48k
シンプルを極める。アンチパターンなDB設計の本質
facilo_inc
1
1k
Featured
See All Featured
A better future with KSS
kneath
240
18k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Producing Creativity
orderedlist
PRO
348
40k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Practical Orchestrator
shlominoach
190
11k
The Pragmatic Product Professional
lauravandoore
37
7.1k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Rails Girls Zürich Keynote
gr2m
95
14k
Mobile First: as difficult as doing things right
swwweet
225
10k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Transcript
Lambdaカスタムランタイムで PHPでもサーバーレス︕ JAWS-UG TOHOKU フリーテーマでAWSを語る会@2019/07/19 @taiko19xx / ⽊村 俊彦
いきなりですが Lambda好きな⽅︖
PHP好きな⽅︖
今⽇は LambdaとPHPを組み合わせて 使おうという話です
もくじ • Lambdaのおさらい • Lambdaカスタムランタイムについて • カスタムランタイムの構築について • ローカル実⾏について •
まとめ
Lambdaのおさらい • とても便利で使いやすいサーバーレス実⾏環境 • 実⾏できる⾔語(ランタイム)に限りがあるのが難点・・・︖ • Node.js/Python/Ruby/Java/Go • .NET Core利⽤のC#/PowerShell
• 少しずつ増えてきている • 書き慣れていない⾔語で書く場合は学習コストがかかる • Lambdaカスタムランタイムで解決できるかも︖
Lambdaカスタムランタイムとは • Lambda関数を好きな⾔語で実⾏できる • Linux(Amazon Linux/Amazon Linux 2)で実⾏できるものなら実⾏可 • 使い勝⼿は普通のLambda関数と同様
• X-Rayとかも使える • https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/runtimes- custom.html
カスタムランタイムの動作の流れ • ランタイム設定が「provided」に設定されている必要がある • 関数を実⾏すると「bootstrap」のファイルが実⾏される • 「$ ./bootstrap」 的な感じで実⾏されるイメージ •
ファイルが無いとエラー • bootstrap内で各種バイナリを呼び出したり実⾏する • ハンドラの名前や各種設定は環境変数で渡される
カスタムランタイムの構築
実⾏環境の作成 • 実⾏バイナリやライブラリをzipで固めなければならない • かつ、Amazon Linux上でコンパイルされている必要がある • 取得する⼿段 • EC2インスタンスで取得
• インスタンスを⽴ち上げる必要がある • Amazon LinuxのDockerコンテナを起動して取得 • ローカルで完結 • Dockerを実⾏できる環境が必要 • Dockerの知識も必要
None
None
None
None
実⾏環境のデプロイ • 関数スクリプトと共にデプロイ • ⼀緒にデプロイできるので楽 • 実⾏環境に変更がある度にデプロイする必要がある • Layerとしてデプロイ •
スクリプトパッケージサイズが⼩さくできる
Layerとは • 既存のコードとは別に、追加のコードやコンテンツをアーカイブとし て設定できるもの • 1つの関数に最⼤5つ設定できる • 関数と、関数に設定したLayerが全てマージされた上で実⾏されると いうイメージ •
メリット • 関数のデプロイパッケージを⼩さくする事ができる • 複数の関数間でライブラリを共有できる • https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration- layers.html
ローカルで実⾏
カスタムランタイムをローカルで実⾏ • もちろん可能 • AWS CLIとSAM CLIが必要 • Dockerも必要 •
LambdaのDockerイメージを利⽤して実⾏するため • Layerを設定している場合は、実⾏時にAWSからダウンロードして くる • Windows 10+Docker DesktopだとSAM CLIのバグがあり動かない • https://github.com/awslabs/aws-sam-cli/issues/1014
SAM(Serverless Application Model)とは • AWS上でサーバーレスアプリケーションを構築するためのフレー ムワーク • CloudFormationを拡張したYAML/JSONで記述 • 関数の作成に加え、API
Gateway/DynamoDBの設定も簡単にできる • 複雑な設定をする場合は結局CloudFormationっぽくなってしまう
DEMO
まとめ • 良いところ • 使い慣れた⾔語で関数を記述できる • ≒メンテナンスが楽になる • 悪いところ •
環境構築が少し⼤変 • Lambda以外の知識がそれなりに必要 • DockerとかLinuxとか
⾃⼰紹介 • ⽊村俊彦(@taiko19xx) • 株式会社SRIA 制作部 リーダー • PHP/Node.jsを使ったバックエンド構築 •
AWS/Azure/GCPの設計構築 • 技術同⼈誌サークル「杜の都の開発室」主宰 • 技術書典で2冊本を出しています • 次も出す予定
ありがとうございました