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
290
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
dynamic!
moro
10
7.1k
Railsだからできる 例外業務に禍根を残さない 設定設計パターン
ei_ei_eiichi
0
420
Go Conference 2025: Goで体感するMultipath TCP ― Go 1.24 時代の MPTCP Listener を理解する
takehaya
8
1.6k
CSC509 Lecture 01
javiergs
PRO
1
440
Goで実践するドメイン駆動開発 AIと歩み始めた新規プロダクト開発の現在地
imkaoru
4
790
Advance Your Career with Open Source
ivargrimstad
0
450
ソフトウェア設計の実践的な考え方
masuda220
PRO
4
540
CSC509 Lecture 03
javiergs
PRO
0
330
(Extension DC 2025) Actor境界を越える技術
teamhimeh
1
250
階層構造を表現するデータ構造とリファクタリング 〜1年で10倍成長したプロダクトの変化と課題〜
yuhisatoxxx
3
960
組込みだけじゃない!TinyGo で始める無料クラウド開発入門
otakakot
0
150
iOSエンジニア向けの英語学習アプリを作る!
yukawashouhei
0
190
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.1k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
20k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
The Pragmatic Product Professional
lauravandoore
36
6.9k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Gamification - CAS2011
davidbonilla
81
5.5k
What's in a price? How to price your products and services
michaelherold
246
12k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.9k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
For a Future-Friendly Web
brad_frost
180
9.9k
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 ॏ͍όονॲཧΛஔ͖͑ΔͷͰͳ͍Έ͍ͨ