Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
71
MUGEN MEET UP #1
kuranari
0
66
MUGEN MEET UP #0
kuranari
0
190
Clipboard API
kuranari
0
290
Other Decks in Programming
See All in Programming
レイトレZ世代に捧ぐ、今からレイトレを始めるための小径
ichi_raven
0
490
AIエージェントでのJava開発がはかどるMCPをAIを使って開発してみた / java mcp for jjug
kishida
5
850
Media Capture and Streams: W3C仕様と現場での知見
nowaki28
0
120
JJUG CCC 2025 Fall: Virtual Thread Deep Dive
ternbusty
3
510
Microservices Platforms: When Team Topologies Meets Microservices Patterns
cer
PRO
1
850
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
290
AI時代もSEOを頑張っている話
shirahama_x
0
220
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
130
Integrating WordPress and Symfony
alexandresalome
0
110
Building AI with AI
inesmontani
PRO
1
460
JEP 496 と JEP 497 から学ぶ耐量子計算機暗号入門 / Learning Post-Quantum Crypto Basics from JEP 496 & 497
mackey0225
2
550
テストやOSS開発に役立つSetup PHP Action
matsuo_atsushi
0
130
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
28
2.3k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
960
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Navigating Team Friction
lara
191
16k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Statistics for Hackers
jakevdp
799
230k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
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 ॏ͍όονॲཧΛஔ͖͑ΔͷͰͳ͍Έ͍ͨ