Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LambdaカスタムランタイムでPHPでもサーバーレス!
Search
taiko19xx
July 19, 2019
Technology
0
83
Lambdaカスタムランタイムで PHPでもサーバーレス!
taiko19xx
July 19, 2019
Tweet
Share
More Decks by taiko19xx
See All by taiko19xx
Bedrockで遊ぼう! 短期間で色々開発してみた
taiko19xx
1
160
Incident Managerでインシデント発生時のエスカレーションを自動化する
taiko19xx
0
270
IoTっぽいアプリをk3s+Raspberry Piで実行する
taiko19xx
0
360
ハニーポットから見たWebサーバへの攻撃
taiko19xx
0
3k
PHPなプロダクトをAmazon ECSで開発運用してる話
taiko19xx
0
1.3k
RaspberryPi+AWSでIoT(っぽ い)GPSロガーを作ってみた
taiko19xx
0
1.7k
PHPからWin32APIをいじってみた
taiko19xx
0
1.8k
Other Decks in Technology
See All in Technology
2026年もソフトウェアサプライチェーンのリスクに立ち向かうために / Product Security Square #3
flatt_security
1
620
Go標準パッケージのI/O処理をながめる
matumoto
0
220
身体を持ったパーソナルAIエージェントの 可能性を探る開発
yokomachi
1
130
楽しく学ぼう!ネットワーク入門
shotashiratori
4
3.4k
20260311 ビジネスSWG活動報告(デジタルアイデンティティ人材育成推進WG Ph2 活動報告会)
oidfj
0
340
AI実装による「レビューボトルネック」を解消する仕様駆動開発(SDD)/ ai-sdd-review-bottleneck
rakus_dev
0
150
The_Evolution_of_Bits_AI_SRE.pdf
nulabinc
PRO
0
230
ソフトバンク流!プラットフォームエンジニアリング実現へのアプローチ
sbtechnight
1
180
OCHaCafe S11 #2 コンテナ時代の次の一手:Wasm 最前線
oracle4engineer
PRO
2
140
詳解 強化学習 / In-depth Guide to Reinforcement Learning
prinlab
0
230
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
13k
AI時代のSaaSとETL
shoe116
1
180
Featured
See All Featured
Skip the Path - Find Your Career Trail
mkilby
1
80
Rails Girls Zürich Keynote
gr2m
96
14k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
140
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
210
Music & Morning Musume
bryan
47
7.1k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
200
Darren the Foodie - Storyboard
khoart
PRO
3
2.9k
So, you think you're a good person
axbom
PRO
2
2k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
980
Optimizing for Happiness
mojombo
378
71k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
92
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
220
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冊本を出しています • 次も出す予定
ありがとうございました