Submit Search
画像処理をAWS LambdaのPythonで!
11 likes
6,230 views
Tomotsune Murata
JAWS-UG Meetup in AWS Cloud Roadshow 名古屋のLT資料です。
Engineering
Read more
1 of 25
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
More Related Content
PDF
lambda-lgtm
Yoshiaki Yoshida
PDF
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
Takehiro Suemitsu
PPTX
はじめてのAWS Lambda
Masaki Misawa
PDF
AWS Lambda のご紹介 2015 JAWS沖縄
Toshiaki Enami
PDF
AWS LambdaとDynamoDBがこんなにツライはずがない #ssmjp
Masahiro NAKAYAMA
PDF
AWS LambdaとAPI Gatewayでサーバレスなシステム構築に踏み出してみる
Takashi Makino
PPTX
node.jsでS3にバックアップを送り続けるコードを書いてみた話。Node s3maの紹介-jawsugさいたま
Yasuhiro Araki, Ph.D
PDF
AWS Lambdaによるサーバレスアーキテクチャの基本に触れてみよう!【kintone & AWS ハンズオン祭り2015秋 B-2】
Ryu Yamashita
lambda-lgtm
Yoshiaki Yoshida
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
Takehiro Suemitsu
はじめてのAWS Lambda
Masaki Misawa
AWS Lambda のご紹介 2015 JAWS沖縄
Toshiaki Enami
AWS LambdaとDynamoDBがこんなにツライはずがない #ssmjp
Masahiro NAKAYAMA
AWS LambdaとAPI Gatewayでサーバレスなシステム構築に踏み出してみる
Takashi Makino
node.jsでS3にバックアップを送り続けるコードを書いてみた話。Node s3maの紹介-jawsugさいたま
Yasuhiro Araki, Ph.D
AWS Lambdaによるサーバレスアーキテクチャの基本に触れてみよう!【kintone & AWS ハンズオン祭り2015秋 B-2】
Ryu Yamashita
What's hot
(20)
PDF
Application Deployment on AWS
Eiji Shinohara
PDF
AWS Black Belt Techシリーズ AWS Lambda
Amazon Web Services Japan
PPTX
aws lambdaでpythonを実行するときのチューニング案を試してみた!
Shun Fukazawa
PDF
AWS Lambdaで作るクローラー/スクレイピング
Takuro Sasaki
PDF
Lambdaのscheduled eventで実現する運用視点のサーバレスパターン
Jin k
PDF
速習 AWS Lambda
Masayuki Uchida
PDF
Lambda × Mobileの可能性
yuki0211s
PDF
AWS SAMで始めるサーバーレスアプリケーション開発
真吾 吉田
PDF
20160526 AWSサービスアップデート
Genta Watanabe
PPTX
20160312 Jaws Days 2016 API Gateway+Lambda
Kazuki Ueki
PDF
俺のLambda
Motokatsu Matsui
PDF
Lambdaによるクラウド型言語の実装
Sugawara Genki
PPTX
AWS Batch Fargate対応は何をもたらすか
Shun Fukazawa
PDF
PHPという概念が存在しない退屈な世界 - AWS LambdaでWebAPP編
Yoshihiro Ohsuka
PDF
Serverless Architecture on AWS(20151023版)
Keisuke Nishitani
PDF
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
Amazon Web Services Japan
PDF
AWS re:Invent2019 Overview &New Releases Summary for Game
Amazon Web Services Japan
PDF
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
都元ダイスケ Miyamoto
PDF
AWS Search Services
Eiji Shinohara
PPTX
サーバーレスアプリケーションの作り方
Yoichi Toyota
Application Deployment on AWS
Eiji Shinohara
AWS Black Belt Techシリーズ AWS Lambda
Amazon Web Services Japan
aws lambdaでpythonを実行するときのチューニング案を試してみた!
Shun Fukazawa
AWS Lambdaで作るクローラー/スクレイピング
Takuro Sasaki
Lambdaのscheduled eventで実現する運用視点のサーバレスパターン
Jin k
速習 AWS Lambda
Masayuki Uchida
Lambda × Mobileの可能性
yuki0211s
AWS SAMで始めるサーバーレスアプリケーション開発
真吾 吉田
20160526 AWSサービスアップデート
Genta Watanabe
20160312 Jaws Days 2016 API Gateway+Lambda
Kazuki Ueki
俺のLambda
Motokatsu Matsui
Lambdaによるクラウド型言語の実装
Sugawara Genki
AWS Batch Fargate対応は何をもたらすか
Shun Fukazawa
PHPという概念が存在しない退屈な世界 - AWS LambdaでWebAPP編
Yoshihiro Ohsuka
Serverless Architecture on AWS(20151023版)
Keisuke Nishitani
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
Amazon Web Services Japan
AWS re:Invent2019 Overview &New Releases Summary for Game
Amazon Web Services Japan
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
都元ダイスケ Miyamoto
AWS Search Services
Eiji Shinohara
サーバーレスアプリケーションの作り方
Yoichi Toyota
Ad
Similar to 画像処理をAWS LambdaのPythonで!
(20)
PDF
serverless framework + AWS Lambda with Python
masahitojp
PPTX
Jawsdays2017(配布用)
Yutaka Hiroyama
PPTX
AWS Lambda + Go
Kentaro Kawano
PDF
AWS Black Belt Online Seminar - Amazon Lightsail
Amazon Web Services Japan
PPTX
サーバレスアプリケーション構築入門
YoshihiroHorizono1
PDF
JAWSDAYS2016 Technical Deep DIVE
陽平 山口
PDF
CloudFormation/SAMのススメ
Eiji KOMINAMI
PDF
Programming AWS with Perl at YAPC::Asia 2013
Yasuhiro Horiuchi
PDF
AWS Glueを使った Serverless ETL の実装パターン
seiichi arai
PDF
20170705 blackbelt AWS Lambda
Amazon Web Services Japan
PPTX
JAWS-UG 愛媛 第6回勉強会(Lambda)
Takahiro Kato
PDF
AWS Lambda ハンズオン 2-Tier アーキテクチャで未来へ
Amazon Web Services Japan
PDF
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
真吾 吉田
PPTX
はじめてのAws lambda
dcubeio
PDF
JAWS-UG Okinawa 2017/01
司 知花
PDF
AWS小ネタ集
Takehito Tanabe
PDF
初めてのクラウド AWS編
Koichiro Nishijima
PDF
20190619 AWS Black Belt Online Seminar Dive Deep into AWS Chalice
Amazon Web Services Japan
PDF
APIMeetup 20170329_ichimura
Tomohiro Ichimura
PDF
Windows 開発者のための Dev&Ops on AWS
Amazon Web Services Japan
serverless framework + AWS Lambda with Python
masahitojp
Jawsdays2017(配布用)
Yutaka Hiroyama
AWS Lambda + Go
Kentaro Kawano
AWS Black Belt Online Seminar - Amazon Lightsail
Amazon Web Services Japan
サーバレスアプリケーション構築入門
YoshihiroHorizono1
JAWSDAYS2016 Technical Deep DIVE
陽平 山口
CloudFormation/SAMのススメ
Eiji KOMINAMI
Programming AWS with Perl at YAPC::Asia 2013
Yasuhiro Horiuchi
AWS Glueを使った Serverless ETL の実装パターン
seiichi arai
20170705 blackbelt AWS Lambda
Amazon Web Services Japan
JAWS-UG 愛媛 第6回勉強会(Lambda)
Takahiro Kato
AWS Lambda ハンズオン 2-Tier アーキテクチャで未来へ
Amazon Web Services Japan
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
真吾 吉田
はじめてのAws lambda
dcubeio
JAWS-UG Okinawa 2017/01
司 知花
AWS小ネタ集
Takehito Tanabe
初めてのクラウド AWS編
Koichiro Nishijima
20190619 AWS Black Belt Online Seminar Dive Deep into AWS Chalice
Amazon Web Services Japan
APIMeetup 20170329_ichimura
Tomohiro Ichimura
Windows 開発者のための Dev&Ops on AWS
Amazon Web Services Japan
Ad
More from Tomotsune Murata
(11)
PDF
Photon Enterprise Cloud 事例
Tomotsune Murata
PDF
人気ゲームアプリ「クラッシュフィーバー」におけるAWS活用
Tomotsune Murata
PDF
クラッシュフィーバーのシステム構成
Tomotsune Murata
PDF
クラッシュフィーバー開発の裏側
Tomotsune Murata
PDF
Xcode7 / iOS 9 対応でハマったこと
Tomotsune Murata
PDF
コストみてますか?
Tomotsune Murata
PDF
すっかりマカーな私がWindowsに戻ってみた
Tomotsune Murata
PDF
MFi Controller〜それは忘れられたiOS7新機能〜
Tomotsune Murata
PDF
SQLiteを手軽に・セキュアに
Tomotsune Murata
PDF
cocos2dで手軽にアニメーション
Tomotsune Murata
PDF
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
Tomotsune Murata
Photon Enterprise Cloud 事例
Tomotsune Murata
人気ゲームアプリ「クラッシュフィーバー」におけるAWS活用
Tomotsune Murata
クラッシュフィーバーのシステム構成
Tomotsune Murata
クラッシュフィーバー開発の裏側
Tomotsune Murata
Xcode7 / iOS 9 対応でハマったこと
Tomotsune Murata
コストみてますか?
Tomotsune Murata
すっかりマカーな私がWindowsに戻ってみた
Tomotsune Murata
MFi Controller〜それは忘れられたiOS7新機能〜
Tomotsune Murata
SQLiteを手軽に・セキュアに
Tomotsune Murata
cocos2dで手軽にアニメーション
Tomotsune Murata
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
Tomotsune Murata
画像処理をAWS LambdaのPythonで!
1.
画像処理を AWS LambdaのPythonで! JAWS-UG Meetup
in AWS Cloud Roadshow 名古屋 ワンダープラネット株式会社 取締役 CTO 村田知常
2.
自己紹介 • 村田 知常(むらた
ともつね) tomotsune.murata • ワンダープラネット株式会社 取締役 CTO • 好きな言語 Swift • 好きなAWS Amazon S3
3.
ワンダープラネット株式会社 • 2012年9月3日
設立 • iOS/Android向けフルネイティブのソーシャルゲームを出してます • AWSには大変お世話になってます! 本日、ver.1.1.6を配信!本日、ver.1.1.6を配信!
4.
re:Invent2015で来ました \(^O^)/
5.
Lambda +
6.
• サーバーサイドのメイン言語 • MayaのPythonスクリプティング •
ちょっとしたコマンドラインツール +
7.
早速、試しました! (-_☆)キラーン
9.
• Pythonで実装 • RSSフィードを定期的に取得 →
新機能 スケジュール化 の検証 • RSSフィードの解析に「feedpaser」 → 外部ライブラリの利用 • CloudWatchのLogsに出力 → printで手抜き
10.
本当に試したかったのは これではなかった…
11.
S3に画像をアップしたら Pythonライブラリを使って 画像を加工したい ※ 外部サービスは使わず
12.
ブログアップ日に 間に合わなかった…
13.
画像処理ライブラリ 使おう とした Python Imaging Library
(PIL)のforkプロジェクト • ピクセル毎の操作 • マスキングと透明度の制御 • ぼかし、輪郭補正、スムージング、輪郭検出などの画像フィルタ • シャープ化、明るさ補正、コントラスト補正、色補正などの画像の調整 • 画像へのテキストの追加 • その他いろいろ
14.
Unable to import
module 'lambda_function': / var/task/PIL/_imaging.so: invalid ELF header 普通にMac上で実装したものを Lambdaで実行すると… Pillowインストール時に環境に合わせて 一部ライブラリをビルドしている Mac向けにビルドしたものは Linux上では動かないよ
15.
$ sudo yum
install python-devel $ sudo yum install libtiff-devel libjpeg-devel libzip-devel freetype-devel lcms2-devel libwebp-devel tcl-devel tk-devel $ sudo yum install gcc EC2(Amazon Linux AMI 2015.09)上で構築 必要なライブラリをインストール 作業ディレクトリに移動 $ vim setup.cfg [install] install-purelib=$base/lib64/python $ pip install Pillow -t . Pillowのドキュメントに 沿ってインストール ビルドに必要 (gcc無いのね…)
16.
<workdir> ├── PIL │ ├──
BdfFontFile.py │ : │ : ├── Pillow-3.0.0.egg-info │ ├── PKG-INFO │ : │ : ├── lambda_function.py ← このファイルを作成し実装 └── setup.cfg 完成するとこんな感じ Macで作ると Pillow-3.0.0.dist-info 準備完了 \(^O^)/ EC2(Amazon Linux AMI 2015.09)上で構築
17.
Lambda functionの実装 • inputフォルダにPNG画像をPut •
Lambdaを起動しサムネイルを作成 • サムネイルをoutputフォルダに出力
18.
Lambda functionの実装 オリジナル画像 80x80画像 Lambdaで 画像を加工
19.
from PIL import
Image import boto3 import os import re s3 = boto3.client('s3') def lambda_handler(event, context): bucket = event['Records'][0]['s3']['bucket']['name'] key = event['Records'][0]['s3']['object']['key'] print u'Bucket=' + bucket print u'key=' + key tmp = u'/tmp/' + os.path.basename(key) output = re.sub(r'^input/', u'output/', key) try: s3.download_file(Bucket=bucket, Key=key, Filename=tmp) img = Image.open(tmp, 'r') img.thumbnail((80, 80), Image.ANTIALIAS) img.save(tmp, 'PNG') s3.upload_file(Filename=tmp, Bucket=bucket, Key=output) return except Exception as e: print(e) raise e Lambda functionの実装
20.
from PIL import
Image import boto3 import os import re s3 = boto3.client('s3') def lambda_handler(event, context): bucket = event['Records'][0]['s3']['bucket']['name'] key = event['Records'][0]['s3']['object']['key'] print u'Bucket=' + bucket print u'key=' + key tmp = u'/tmp/' + os.path.basename(key) output = re.sub(r'^input/', u'output/', key) try: s3.download_file(Bucket=bucket, Key=key, Filename=tmp) img = Image.open(tmp, 'r') img.thumbnail((80, 80), Image.ANTIALIAS) img.save(tmp, 'PNG') s3.upload_file(Filename=tmp, Bucket=bucket, Key=output) return except Exception as e: print(e) raise e Lambda functionの実装 Bucketから ファイルを取得 /tmp/下に保存 Lambdaから /tmp/はアクセス可能 容量は500MB
21.
from PIL import
Image import boto3 import os import re s3 = boto3.client('s3') def lambda_handler(event, context): bucket = event['Records'][0]['s3']['bucket']['name'] key = event['Records'][0]['s3']['object']['key'] print u'Bucket=' + bucket print u'key=' + key tmp = u'/tmp/' + os.path.basename(key) output = re.sub(r'^input/', u'output/', key) try: s3.download_file(Bucket=bucket, Key=key, Filename=tmp) img = Image.open(tmp, 'r') img.thumbnail((80, 80), Image.ANTIALIAS) img.save(tmp, 'PNG') s3.upload_file(Filename=tmp, Bucket=bucket, Key=output) return except Exception as e: print(e) raise e Lambda functionの実装 80 x 80 サムネイルを作成
22.
from PIL import
Image import boto3 import os import re s3 = boto3.client('s3') def lambda_handler(event, context): bucket = event['Records'][0]['s3']['bucket']['name'] key = event['Records'][0]['s3']['object']['key'] print u'Bucket=' + bucket print u'key=' + key tmp = u'/tmp/' + os.path.basename(key) output = re.sub(r'^input/', u'output/', key) try: s3.download_file(Bucket=bucket, Key=key, Filename=tmp) img = Image.open(tmp, 'r') img.thumbnail((80, 80), Image.ANTIALIAS) img.save(tmp, 'PNG') s3.upload_file(Filename=tmp, Bucket=bucket, Key=output) return except Exception as e: print(e) raise e Lambda functionの実装 output/に ファイルをアップロード
23.
時間があったら デモ
24.
まとめ • Pillowを使えば色々と凝った画像処理が可能 • ビルドを必要とするライブラリを AWS
Lambdaで使うノウハウを習得 • AWS LambdaをPythonで実装できる! • これで開発・運用をサポートする ツール作成が る
25.
ご清聴ありがとうございました
Download