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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
97
Flutterで簡単なアプリを作ってみる
okinari
0
39
Webマーケティングとは?
okinari
0
52
エンジニアにも知ってほしいWebマーケティングの世界
okinari
2
400
データ収集のすゝめ
okinari
1
310
FlutterをWEBエンジニアが扱ってみたお話
okinari
0
480
Other Decks in Technology
See All in Technology
技術・能力を向上する原理原則 #きのこセッションa #きのこ2026
bash0c7
0
130
元銀行員がAIだけでアプリを量産!「バイブコーディング実演セミナー 」
tatsuya1970
0
110
「軸足」は 固定しなくていい - 熱量と強みで描く、しなやかなキャリアの形
kakehashi
PRO
1
270
PostgreSQL 19 新機能概要 OSC Hokkaido 2026
nori_shinoda
0
250
“詰む”前に仕組みを作れ 〜技術の波に溺れないためのキャッチアップ術〜
takasyou
7
3.9k
AIに障害切り分けを全部やってもらった。 。 。 。
estie
0
160
螺旋型キャリアの生存戦略 / kinoko-conf2026
rakus_dev
1
1k
自分が詳しくない領域でAIを使う #プロヒス2026
konifar
20
7.5k
本当の”仕事”を手放せる未来が見えた
mu7889yoon
0
140
OTel × Datadog で 「AI活用」を計測し、改善に繋げる
shihochan
2
640
BPaaSで進むAIオペレーションの現在地 AI実装が効く領域とスケーラビリティの選定と実装
kentarofujii
0
200
Kiro Ambassador を目指す話
k_adachi_01
0
130
Featured
See All Featured
The agentic SEO stack - context over prompts
schlessera
0
820
Making Projects Easy
brettharned
120
6.7k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
55k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
540
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
210
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
200
The World Runs on Bad Software
bkeepers
PRO
72
12k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
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)