Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
LambdaカスタムランタイムでPHPでもサーバーレス!
taiko19xx
July 19, 2019
Technology
0
47
Lambdaカスタムランタイムで PHPでもサーバーレス!
taiko19xx
July 19, 2019
Tweet
Share
More Decks by taiko19xx
See All by taiko19xx
Incident Managerでインシデント発生時のエスカレーションを自動化する
taiko19xx
0
29
IoTっぽいアプリをk3s+Raspberry Piで実行する
taiko19xx
0
190
ハニーポットから見たWebサーバへの攻撃
taiko19xx
0
2.3k
PHPなプロダクトをAmazon ECSで開発運用してる話
taiko19xx
0
750
RaspberryPi+AWSでIoT(っぽ い)GPSロガーを作ってみた
taiko19xx
0
1.2k
PHPからWin32APIをいじってみた
taiko19xx
0
1.2k
Other Decks in Technology
See All in Technology
IBM Cloud Festa Online 2022 Summer
1ftseabass
PRO
0
190
Red Hat Partner Training Portal のご紹介 / Red Hat Partner Training Portal Introduction
rhpej
0
110
データ分析のためのAWS Well-Architected -Data Analytics Lens-
maru1981
0
220
CloudWatchアラームによるサービス継続のための監視入門 / Introduction to Monitoring for Service Continuity with CloudWatch Alarms
inomasosan
1
400
〇〇みたいな検索作ってと言われたときに考えること / thinking before developing search system like that one
ryook
4
2.6k
Backlog × RPAでいろいろ捗った話
z_tetsu
0
370
psql, my favorite tool!
nuko_yokohama
1
170
バッファープールが大きいMySQL v5.7でDROP DATABASEが詰まった原因と対策 / Causes and Remedies for DROP DATABASE Stuck in MySQL v5.7 with Large Buffer Pool
line_developers
PRO
4
690
Autonomous Database Cloud 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
10
19k
年90回以上のアップデートを実現する、Backlogを使ったスクラム開発
yoshiteruiwasaki
0
380
DevelopersIO 2022 俺のTerraform Pipeline
takakuni
0
420
最先端の生成AIから考える、ビジネスにおける10年後のパラダイムシフト
sbtechnight
1
300
Featured
See All Featured
Building Applications with DynamoDB
mza
84
4.7k
Making the Leap to Tech Lead
cromwellryan
113
7.4k
Build your cross-platform service in a week with App Engine
jlugia
219
17k
Clear Off the Table
cherdarchuk
79
290k
Side Projects
sachag
450
37k
Design by the Numbers
sachag
271
17k
Learning to Love Humans: Emotional Interface Design
aarron
261
37k
YesSQL, Process and Tooling at Scale
rocio
157
12k
Fontdeck: Realign not Redesign
paulrobertlloyd
73
4.1k
Adopting Sorbet at Scale
ufuk
63
7.6k
Navigating Team Friction
lara
175
11k
Infographics Made Easy
chrislema
233
17k
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冊本を出しています • 次も出す予定
ありがとうございました