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
72
Lambdaカスタムランタイムで PHPでもサーバーレス!
taiko19xx
July 19, 2019
Tweet
Share
More Decks by taiko19xx
See All by taiko19xx
Bedrockで遊ぼう! 短期間で色々開発してみた
taiko19xx
1
120
Incident Managerでインシデント発生時のエスカレーションを自動化する
taiko19xx
0
200
IoTっぽいアプリをk3s+Raspberry Piで実行する
taiko19xx
0
300
ハニーポットから見たWebサーバへの攻撃
taiko19xx
0
2.8k
PHPなプロダクトをAmazon ECSで開発運用してる話
taiko19xx
0
1.2k
RaspberryPi+AWSでIoT(っぽ い)GPSロガーを作ってみた
taiko19xx
0
1.5k
PHPからWin32APIをいじってみた
taiko19xx
0
1.6k
Other Decks in Technology
See All in Technology
ソフトウェアエンジニアと仕事するときに知っておいたほうが良いこと / Key points for working with software engineers
pinkumohikan
0
100
エンジニアのためのドキュメント力基礎講座〜構造化思考から始めよう〜(2025/02/15jbug広島#15発表資料)
yasuoyasuo
18
6.9k
室長と気ままに学ぶマイクロソフトのビジネスアプリケーションとビジネスプロセス
ryoheig0405
0
370
デスクトップだけじゃないUbuntu
mtyshibata
0
170
Oracle Cloud Infrastructure:2025年2月度サービス・アップデート
oracle4engineer
PRO
1
220
分解して理解する Aspire
nenonaninu
1
300
2/18/25: Java meets AI: Build LLM-Powered Apps with LangChain4j
edeandrea
PRO
0
130
『衛星データ利用の方々にとって近いようで触れる機会のなさそうな小話 ~ 衛星搭載ソフトウェアと衛星運用ソフトウェア (実物) を動かしながらわいわいする編 ~』 @日本衛星データコミニティ勉強会
meltingrabbit
0
150
全文検索+セマンティックランカー+LLMの自然文検索サ−ビスで得られた知見
segavvy
2
110
データマネジメントのトレードオフに立ち向かう
ikkimiyazaki
6
1k
エンジニアが加速させるプロダクトディスカバリー 〜最速で価値ある機能を見つける方法〜 / product discovery accelerated by engineers
rince
4
380
地方拠点で エンジニアリングマネージャーってできるの? 〜地方という制約を楽しむオーナーシップとコミュニティ作り〜
1coin
1
230
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
46
2.3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.4k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
240
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
Building an army of robots
kneath
303
45k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Gamification - CAS2011
davidbonilla
80
5.1k
Code Review Best Practice
trishagee
67
18k
Docker and Python
trallard
44
3.3k
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冊本を出しています • 次も出す予定
ありがとうございました