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(+API Gateway)でバイナリを扱う話
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
okinari
March 06, 2020
Technology
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWS Lambda(+API Gateway)でバイナリを扱う話
okinari
March 06, 2020
More Decks by okinari
See All by okinari
僕の家からリモコンが消えた話(NatureRemoについて)
okinari
0
90
コンストラクタ、知ってますよね?
okinari
1
130
スマートスピーカーのすゝめ
okinari
0
71
最近のNAS製品事情
okinari
0
120
Flutterで簡単なアプリを作ってみる
okinari
0
51
Webマーケティングとは?
okinari
0
57
エンジニアにも知ってほしいWebマーケティングの世界
okinari
2
410
データ収集のすゝめ
okinari
1
330
FlutterをWEBエンジニアが扱ってみたお話
okinari
0
480
Other Decks in Technology
See All in Technology
Patterns in AI Driven Software Development
akosma
PRO
0
440
書き手が人でもAIでも正しくなる道、SREを埋め込んだDeveloper Platform / tech drivers day8
chmikata
4
890
Autonomous AI Lakehouse - Live AI Hubから始めるセキュアなAIデータ活用 -
oracle4engineer
PRO
2
180
(swiftc) NonCopyableとライフタイム修飾子
teamhimeh
0
160
You Have Agency(サンキュー、Ruby)
snoozer05
PRO
5
640
データマネジメント × 法務で作りあげる、 freeeの新しいデータガバナンスへの軌跡
freee
PRO
3
620
AIがGISを代替する日:〜すべてをAIが創る時代に、私たちがFOSS4Gに関わる意味〜
lehupa
0
190
AI Search (Foundry IQ) におけるRAGデータの準備と配置
ryomaru0825
1
130
仕様駆動開発の、その先へ。決める力と確かめる仕組み
inariku
1
160
Agent 活用環境の構築・運用のための AWS サービスのご紹介/agentcore-for-building-and-operating-agents
ren8k
1
310
AX時代の自治体支援リソース再配分と役割分担の再構成:戦略とロードマップ(概要)
sishi2026
0
170
FinOpsを導入してマルチプロダクトのコスト最適化を実現する
kworkdev
PRO
0
110
Featured
See All Featured
Paper Plane
katiecoart
PRO
5
54k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
600
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
380
Practical Orchestrator
shlominoach
192
12k
The untapped power of vector embeddings
frankvandijk
2
2k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
540
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
A better future with KSS
kneath
240
18k
Claude Code のすすめ
schroneko
67
230k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
320
Are puppies a ranking factor?
jonoalderson
2
4.1k
Transcript
AWS Lambda (+API Gateway) で、バイナリを扱う話
Self-introduction Name: okinari (おきなり) Job: Freelance Engineer (Marketing Engineer) Like:
Flutter(Dart) / Golang / React(TypeScript) Code Geass / Tonkotsu Ramen / Karaage / Karaoke / Bouldering Twitter:@okinari
AWS Lambda ・AWSのFaaS(Function as a Service) ・サーバ管理が不要(サーバレス) ・コストも実行時間分だけお支払い(100ms単位) ・関数だけ書けばよいので、お手軽 参考:
https://aws.amazon.com/jp/lambda/
API Gateway ・APIの入り口 ・APIの実際の処理はAWSの別サービスと連携 ・機能次第では、コードを書かずに作成可能 ・トラフィック管理、セキュリティ、 モニタリング、APIバージョン管理などが役割 参考: https://aws.amazon.com/jp/api-gateway/
そもそもの要件(私が参加時に決まっていた) ・バイナリの送受信などの処理したい ・特定の時間に大量アクセスされる予定 ・スケーラビリティを考慮する →上記の理由より、Lambdaを使いたい
Lambdaからバイナリを送るには ・API Gatewayの設定をいくつか変更する ・Lambda側でbase64エンコードして返却
None
None
None
Lambdaにバイナリを送るには ・「Lambda プロキシ統合」は使用できない (統合レスポンスの設定ができない) ※Lambda設定画面からトリガー追加すると デフォルトで使用する状態になっているので チェックを外してやる必要がある
Lambdaからバイナリを送るには ・Lambda側でbase64エンコードして返却 ・base64エンコードしたもの単体をreturnする ・デフォルトの状態では、json形式で statusCode、bodyなどを返却するが、 バイナリの場合は、単体じゃないとダメ(?)
None
None
一件落着…? これでOK! …とは行かず。 ここで思い出してほしい…
そもそもの要件(私が参加時に決まっていた) ・バイナリの送受信などの処理したい ・特定の時間に大量アクセスされる予定 ・スケーラビリティを考慮する →上記の理由より、Lambdaを使いたい
そもそもの要件(私が参加時に決まっていた) ・バイナリの送受信などの処理したい ・特定の時間に大量アクセスされる予定 ・スケーラビリティを考慮する →上記の理由より、Lambdaを使いたい
ファイル変換処理 ・音声ファイルのエンコード&デコード (既に使用が非推奨でちょい特殊なコーデック) ・シェルでコマンド叩けば変換できるらしい ・Node.jsの変換ライブラリとか、なさそう… →Lambdaってbashの実行ってできるの…?
果たして… ・説明資料の作成が面倒なのd、 10分では時間不足なので、結論だけ言うと… できます
Lambdaでbash実行 ・Lambdaにファイルをアップロードしたとき、 設置されるディレクトリは /var/task/ ・共有ライブラリは /var/task/lib を読み込む ・実行ファイルはフルパス指定でいいよね?
Lambdaでbash実行 ・/tmp 配下は書き込みOK (それ以外は書き込みできない) ・ソースファイルはzipで固めて、アップロード ・Node.jsのchild_processでコマンド実行
Lambda Layerを利用する ・Lambda Layerにアップロードすると、 /opt に設置される ・パスが通っているところを確認する ・共有ライブラリは /opt/lib から読み込む
・実行ファイルは /opt/bin から読み込む (実行ファイルはフルパス指定がいいと思うけど)
ちょっとだけソース見せます そっちのほうが、イメージが湧く…でしょう?
参考ページ AWS公式: https://aws.amazon.com/jp/lambda/ API Gatewayがバイナリデータをサポートしたので試してみまし た: https://dev.classmethod.jp/cloud/aws/binary-data-supp orted-by-api-gateway/ Stackoverflowのページいくつか見たけど、履歴から探せなかっ た…
Thanks! 質問は下記までお願いします。 ◂ @okinari (Twitter)