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を画像変化サーバとして使おうとした話 / AWS Lambda
Search
Kuranari Tomohisa
September 30, 2015
Programming
0
1.3k
AWS Lambdaを画像変化サーバとして使おうとした話 / AWS Lambda
Geeks Night @Money Forward
Kuranari Tomohisa
September 30, 2015
Tweet
Share
More Decks by Kuranari Tomohisa
See All by Kuranari Tomohisa
英語学習用CLIツールを作った話
kuranari
0
300
21Cafe感謝祭 / 21Cafe
kuranari
0
74
MUGEN MEET UP #1
kuranari
0
67
MUGEN MEET UP #0
kuranari
0
200
Clipboard API
kuranari
0
290
Other Decks in Programming
See All in Programming
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
140
Windows on Ryzen and I
seosoft
0
250
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
380
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
140
オブザーバビリティ駆動開発って実際どうなの?
yohfee
3
810
コードレビューをしない選択 #でぃーぷらすトウキョウ
kajitack
3
880
maplibre-gl-layers - 地図に移動体たくさん表示したい
kekyo
PRO
0
240
どんと来い、データベース信頼性エンジニアリング / Introduction to DBRE
nnaka2992
1
270
AI主導でFastAPIのWebサービスを作るときに 人間が構造化すべき境界線
okajun35
0
690
Claude Codeログ基盤の構築
giginet
PRO
7
2.5k
Rで始めるML・LLM活用入門
wakamatsu_takumu
0
170
The Ralph Wiggum Loop: First Principles of Autonomous Development
sembayui
0
3.7k
Featured
See All Featured
My Coaching Mixtape
mlcsv
0
69
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
99
Optimising Largest Contentful Paint
csswizardry
37
3.6k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
67
37k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
64
53k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
170
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
310
エンジニアに許された特別な時間の終わり
watany
106
240k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.8k
Crafting Experiences
bethany
1
81
Transcript
"84-BNCEBΛ ը૾มαʔόͱͯ͠ ͓͏ͱͨ͠ ஐٱ !LVSBOBSJ@UN (FFLT/JHIU!.POFZ'PSXBSE
ࣗݾհ w ஐٱ !LVSBOBSJ@UN w גࣜձࣾ.6(&/61ΤϯδχΞ w 3BJMTΛத৺ʹ৭ʑͱ
.6(&/61 w %Πϥετɾ%$(ͷΫϥυιʔγϯά
.6(&/61 w %Πϥετɾ%$(ͷΫϥυιʔγϯά w </FX>σβΠϯ੍࡞ͷϓϩδΣΫτཧπʔϧ
w ΫϥυܕϓϩδΣΫτཧπʔϧ w ήʔϜΞηοτ੍࡞ʹศརͳػೳ͕ͨ͘͞Μ IUUQXXXTBWFQUDPN
ϑΝΠϧϓϨϏϡʔ 14%"*ϑΝΠϧ͔ΒαϜωΠϧΛ࡞
"84-BNCEBΛͬͯ ߏͯ͠Έͨ
"84-BNCEBͷಛ w ΠϕϯτΛτϦΨʔʹίʔυΛ࣮ߦͰ͖Δ w ྫ 4ϑΝΠϧ͕Ξοϓϩʔυ͞Εͨ࣌ w ίʔυ࣮ߦ͚࣌ؒͩ՝ۚ ແྉ༻ॆ
w ࣗಈεέʔϦϯά w ݴޠ/PEFKT +BWB
"84-BNCEBΛͬͨߏ 3BJMT͔Β4ʹϑΝΠϧΛ Ξοϓϩʔυ -BNCEB͕࣮ؔߦ * 4͔Β-BNCEBʹ14% ϑΝΠϧಡΈࠐΈ **
14%ˠ+1(ม *** +1(Λ4ʹΞοϓ 4 &$ 3BJMT -BNCEB OPEFKT
MBNCEBؔ var async = require('async'); var AWS
= require('aws-‐sdk'); var gm = require('gm').subClass({ imageMagick: true }); var s3 = new AWS.S3(); exports.handler = function(event, context) { var srcBucket = event.Records[0].s3.bucket.name; var srcKey = decodeURIComponent(event.Records[0].s3.object.key); var dstBucket = srcBucket + "resized"; var dstKey = "resized-‐" + srcKey.replace(/\..*$/, ".jpg"); async.waterfall([ function download(next) { s3.getObject({ Bucket: srcBucket, Key: srcKey }, next); }, function transform(response, next) { gm(response.Body).toBuffer("jpg", function(err, buffer) { next(null, response.ContentType, buffer); }); }, function upload(contentType, data, next) { s3.putObject({ Bucket: dstBucket, Key: dstKey, ɹɹɹɹɹɹɹɹɹɹɹ Body: data, ContentType: contentType }, next); }], function (err) { context.done(); }); }; ࢀߟIUUQEPDTBXTBNB[PODPNKB@KQMBNCEBMBUFTUEHXBMLUISPVHITFWFOUTBENJOVTFSIUNM
MBNCEBؔ var async = require('async'); var AWS
= require('aws-‐sdk'); var gm = require('gm').subClass({ imageMagick: true }); var s3 = new AWS.S3(); exports.handler = function(event, context) { var srcBucket = event.Records[0].s3.bucket.name; var srcKey = decodeURIComponent(event.Records[0].s3.object.key); var dstBucket = srcBucket + "resized"; var dstKey = "resized-‐" + srcKey.replace(/\..*$/, ".jpg"); async.waterfall([ function download(next) { s3.getObject({ Bucket: srcBucket, Key: srcKey }, next); }, function transform(response, next) { gm(response.Body).toBuffer("jpg", function(err, buffer) { next(null, response.ContentType, buffer); }); }, function upload(contentType, data, next) { s3.putObject({ Bucket: dstBucket, Key: dstKey, ɹɹɹɹɹɹɹɹɹɹɹ Body: data, ContentType: contentType }, next); }], function (err) { context.done(); }); }; ϥΠϒϥϦϩʔυ ࢀߟIUUQEPDTBXTBNB[PODPNKB@KQMBNCEBMBUFTUEHXBMLUISPVHITFWFOUTBENJOVTFSIUNM
MBNCEBؔ var async = require('async'); var AWS
= require('aws-‐sdk'); var gm = require('gm').subClass({ imageMagick: true }); var s3 = new AWS.S3(); exports.handler = function(event, context) { var srcBucket = event.Records[0].s3.bucket.name; var srcKey = decodeURIComponent(event.Records[0].s3.object.key); var dstBucket = srcBucket + "resized"; var dstKey = "resized-‐" + srcKey.replace(/\..*$/, ".jpg"); async.waterfall([ function download(next) { s3.getObject({ Bucket: srcBucket, Key: srcKey }, next); }, function transform(response, next) { gm(response.Body).toBuffer("jpg", function(err, buffer) { next(null, response.ContentType, buffer); }); }, function upload(contentType, data, next) { s3.putObject({ Bucket: dstBucket, Key: dstKey, ɹɹɹɹɹɹɹɹɹɹɹ Body: data, ContentType: contentType }, next); }], function (err) { context.done(); }); }; ϥΠϒϥϦϩʔυ όέοτ ϑΝΠϧ໊ఆٛ ࢀߟIUUQEPDTBXTBNB[PODPNKB@KQMBNCEBMBUFTUEHXBMLUISPVHITFWFOUTBENJOVTFSIUNM
MBNCEBؔ var async = require('async'); var AWS
= require('aws-‐sdk'); var gm = require('gm').subClass({ imageMagick: true }); var s3 = new AWS.S3(); exports.handler = function(event, context) { var srcBucket = event.Records[0].s3.bucket.name; var srcKey = decodeURIComponent(event.Records[0].s3.object.key); var dstBucket = srcBucket + "resized"; var dstKey = "resized-‐" + srcKey.replace(/\..*$/, ".jpg"); async.waterfall([ function download(next) { s3.getObject({ Bucket: srcBucket, Key: srcKey }, next); }, function transform(response, next) { gm(response.Body).toBuffer("jpg", function(err, buffer) { next(null, response.ContentType, buffer); }); }, function upload(contentType, data, next) { s3.putObject({ Bucket: dstBucket, Key: dstKey, ɹɹɹɹɹɹɹɹɹɹɹ Body: data, ContentType: contentType }, next); }], function (err) { context.done(); }); }; ϥΠϒϥϦϩʔυ όέοτ ϑΝΠϧ໊ఆٛ αϜω࡞ ࢀߟIUUQEPDTBXTBNB[PODPNKB@KQMBNCEBMBUFTUEHXBMLUISPVHITFWFOUTBENJOVTFSIUNM
ઃఆύϥϝʔλ w ΠϕϯττϦΨ 4 %ZOBNP%# FUD w λΠϜΞτ࣌ؒ dඵ
w ϝϞϦྔ d .#
(#͑ͷ14%Λ ϝϞϦ .# ॲཧ࣌ؒඵ Ͱ͚͞Δͷʁ
ݕূ
ϝϞϦ(# λΠϜΞτ࣌ؒඵͰ ॲཧ͖͠ΕΔͷ͔ʜʁ 14% ϑΝΠϧαΠζ ࣮ߦ࣌ؒ ϝϞϦ༻ྔ .# ඵ .#
.# ඵ .# .# ඵ .# .# &SSPS .# .# &SSPS .# ϝϞϦΛ͍͖ͬͯࢮΜͰΔʁ
݁Ռ w "84-BNCEBΛΘͳ͍ํ๏Λ࠾༻ͨ͠ w (#ΫϥεͷϑΝΠϧΛѻ͏߹੍͕Ωπ͍ w ॏ͍όονॲཧΛஔ͖͑ΔͷͰͳ͍Έ͍ͨ