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
AWS Lambda(+API Gateway)でバイナリを扱う話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
83
コンストラクタ、知ってますよね?
okinari
1
120
スマートスピーカーのすゝめ
okinari
0
69
最近のNAS製品事情
okinari
0
99
Flutterで簡単なアプリを作ってみる
okinari
0
41
Webマーケティングとは?
okinari
0
54
エンジニアにも知ってほしいWebマーケティングの世界
okinari
2
400
データ収集のすゝめ
okinari
1
310
FlutterをWEBエンジニアが扱ってみたお話
okinari
0
480
Other Decks in Technology
See All in Technology
GoでCコンパイラを作った話
repunit
0
130
Playwright × AI Agent でE2Eテストはどう変わるか AI駆動テストの可能性と実用検証の結果
taiga7543
1
550
個人開発で育てる「大規模設計の苗床」 - AI時代の1人開発から始める業務への知識接続 / The Seedbed for Large-Scale Design - From AI-Era Solo Projects to Professional Knowledge
bitkey
PRO
1
280
41歳でAWSが好きすぎてITエンジニアになったおっさんの話
yama3133
0
160
Gen3R: 3D Scene Generation Meets Feed-Forward Reconstruction
spatial_ai_network
0
140
発表と総括 / Presentations and Summary
ks91
PRO
0
140
ヘルスケア領域における AI 活用と その安全性担保のための取り組み (Leveraging AI in Healthcare and Our Efforts to Ensure Its Safety) - Google I/O Extended Tokyo 2026, July 11, 2026
zettaittenani
0
430
[2026-07-15] AI Ready なはずだったアーキテクチャと、見えてきた課題・次に目指す状態
wxyzzz
9
4k
AIが当たり前の組織で エンジニアはどう育つか
nishihira
0
150
“それは自分の仕事じゃない"を越えて行け
yuukiyo
1
490
AI x 開発生産性を取り巻く予算戦略と投資対効果
i35_267
1
280
生成AI×AWS CDK×AWS FISで"振り返れる"ミニGameDayをつくろう
yoshimi0227
1
440
Featured
See All Featured
It's Worth the Effort
3n
188
29k
WCS-LA-2024
lcolladotor
0
720
Context Engineering - Making Every Token Count
addyosmani
9
1k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
410
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
210
So, you think you're a good person
axbom
PRO
2
2.1k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
220
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
290
Practical Orchestrator
shlominoach
191
11k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
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)