Suche senden
Hochladen
画像処理をAWS LambdaのPythonで!
•
11 gefällt mir
•
6,209 views
Tomotsune Murata
Folgen
JAWS-UG Meetup in AWS Cloud Roadshow 名古屋のLT資料です。
Weniger lesen
Mehr lesen
Ingenieurwesen
Melden
Teilen
Melden
Teilen
1 von 25
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
lambda-lgtm
lambda-lgtm
Yoshiaki Yoshida
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
Takehiro Suemitsu
はじめてのAWS Lambda
はじめてのAWS Lambda
Masaki Misawa
AWS Lambda のご紹介 2015 JAWS沖縄
AWS Lambda のご紹介 2015 JAWS沖縄
Toshiaki Enami
AWS LambdaとDynamoDBがこんなにツライはずがない #ssmjp
AWS LambdaとDynamoDBがこんなにツライはずがない #ssmjp
Masahiro NAKAYAMA
AWS LambdaとAPI Gatewayでサーバレスなシステム構築に踏み出してみる
AWS LambdaとAPI Gatewayでサーバレスなシステム構築に踏み出してみる
Takashi Makino
node.jsでS3にバックアップを送り続けるコードを書いてみた話。Node s3maの紹介-jawsugさいたま
node.jsでS3にバックアップを送り続けるコードを書いてみた話。Node s3maの紹介-jawsugさいたま
Yasuhiro Araki, Ph.D
AWS Lambdaによるサーバレスアーキテクチャの基本に触れてみよう!【kintone & AWS ハンズオン祭り2015秋 B-2】
AWS Lambdaによるサーバレスアーキテクチャの基本に触れてみよう!【kintone & AWS ハンズオン祭り2015秋 B-2】
Ryu Yamashita
Empfohlen
lambda-lgtm
lambda-lgtm
Yoshiaki Yoshida
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
Takehiro Suemitsu
はじめてのAWS Lambda
はじめてのAWS Lambda
Masaki Misawa
AWS Lambda のご紹介 2015 JAWS沖縄
AWS Lambda のご紹介 2015 JAWS沖縄
Toshiaki Enami
AWS LambdaとDynamoDBがこんなにツライはずがない #ssmjp
AWS LambdaとDynamoDBがこんなにツライはずがない #ssmjp
Masahiro NAKAYAMA
AWS LambdaとAPI Gatewayでサーバレスなシステム構築に踏み出してみる
AWS LambdaとAPI Gatewayでサーバレスなシステム構築に踏み出してみる
Takashi Makino
node.jsでS3にバックアップを送り続けるコードを書いてみた話。Node s3maの紹介-jawsugさいたま
node.jsでS3にバックアップを送り続けるコードを書いてみた話。Node s3maの紹介-jawsugさいたま
Yasuhiro Araki, Ph.D
AWS Lambdaによるサーバレスアーキテクチャの基本に触れてみよう!【kintone & AWS ハンズオン祭り2015秋 B-2】
AWS Lambdaによるサーバレスアーキテクチャの基本に触れてみよう!【kintone & AWS ハンズオン祭り2015秋 B-2】
Ryu Yamashita
Application Deployment on AWS
Application Deployment on AWS
Eiji Shinohara
AWS Black Belt Techシリーズ AWS Lambda
AWS Black Belt Techシリーズ AWS Lambda
Amazon Web Services Japan
aws lambdaでpythonを実行するときのチューニング案を試してみた!
aws lambdaでpythonを実行するときのチューニング案を試してみた!
Shun Fukazawa
AWS Lambdaで作るクローラー/スクレイピング
AWS Lambdaで作るクローラー/スクレイピング
Takuro Sasaki
Lambdaのscheduled eventで実現する運用視点のサーバレスパターン
Lambdaのscheduled eventで実現する運用視点のサーバレスパターン
Jin k
速習 AWS Lambda
速習 AWS Lambda
Masayuki Uchida
Lambda × Mobileの可能性
Lambda × Mobileの可能性
yuki0211s
AWS SAMで始めるサーバーレスアプリケーション開発
AWS SAMで始めるサーバーレスアプリケーション開発
真吾 吉田
20160526 AWSサービスアップデート
20160526 AWSサービスアップデート
Genta Watanabe
20160312 Jaws Days 2016 API Gateway+Lambda
20160312 Jaws Days 2016 API Gateway+Lambda
Kazuki Ueki
俺のLambda
俺のLambda
Motokatsu Matsui
Lambdaによるクラウド型言語の実装
Lambdaによるクラウド型言語の実装
Sugawara Genki
AWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすか
Shun Fukazawa
PHPという概念が存在しない退屈な世界 - AWS LambdaでWebAPP編
PHPという概念が存在しない退屈な世界 - AWS LambdaでWebAPP編
Yoshihiro Ohsuka
Serverless Architecture on AWS(20151023版)
Serverless Architecture on AWS(20151023版)
Keisuke Nishitani
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
Amazon Web Services Japan
AWS re:Invent2019 Overview &New Releases Summary for Game
AWS re:Invent2019 Overview &New Releases Summary for Game
Amazon Web Services Japan
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
都元ダイスケ Miyamoto
AWS Search Services
AWS Search Services
Eiji Shinohara
サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方
Yoichi Toyota
serverless framework + AWS Lambda with Python
serverless framework + AWS Lambda with Python
masahitojp
Jawsdays2017(配布用)
Jawsdays2017(配布用)
Yutaka Hiroyama
Weitere ähnliche Inhalte
Was ist angesagt?
Application Deployment on AWS
Application Deployment on AWS
Eiji Shinohara
AWS Black Belt Techシリーズ AWS Lambda
AWS Black Belt Techシリーズ AWS Lambda
Amazon Web Services Japan
aws lambdaでpythonを実行するときのチューニング案を試してみた!
aws lambdaでpythonを実行するときのチューニング案を試してみた!
Shun Fukazawa
AWS Lambdaで作るクローラー/スクレイピング
AWS Lambdaで作るクローラー/スクレイピング
Takuro Sasaki
Lambdaのscheduled eventで実現する運用視点のサーバレスパターン
Lambdaのscheduled eventで実現する運用視点のサーバレスパターン
Jin k
速習 AWS Lambda
速習 AWS Lambda
Masayuki Uchida
Lambda × Mobileの可能性
Lambda × Mobileの可能性
yuki0211s
AWS SAMで始めるサーバーレスアプリケーション開発
AWS SAMで始めるサーバーレスアプリケーション開発
真吾 吉田
20160526 AWSサービスアップデート
20160526 AWSサービスアップデート
Genta Watanabe
20160312 Jaws Days 2016 API Gateway+Lambda
20160312 Jaws Days 2016 API Gateway+Lambda
Kazuki Ueki
俺のLambda
俺のLambda
Motokatsu Matsui
Lambdaによるクラウド型言語の実装
Lambdaによるクラウド型言語の実装
Sugawara Genki
AWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすか
Shun Fukazawa
PHPという概念が存在しない退屈な世界 - AWS LambdaでWebAPP編
PHPという概念が存在しない退屈な世界 - AWS LambdaでWebAPP編
Yoshihiro Ohsuka
Serverless Architecture on AWS(20151023版)
Serverless Architecture on AWS(20151023版)
Keisuke Nishitani
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
Amazon Web Services Japan
AWS re:Invent2019 Overview &New Releases Summary for Game
AWS re:Invent2019 Overview &New Releases Summary for Game
Amazon Web Services Japan
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
都元ダイスケ Miyamoto
AWS Search Services
AWS Search Services
Eiji Shinohara
サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方
Yoichi Toyota
Was ist angesagt?
(20)
Application Deployment on AWS
Application Deployment on AWS
AWS Black Belt Techシリーズ AWS Lambda
AWS Black Belt Techシリーズ AWS Lambda
aws lambdaでpythonを実行するときのチューニング案を試してみた!
aws lambdaでpythonを実行するときのチューニング案を試してみた!
AWS Lambdaで作るクローラー/スクレイピング
AWS Lambdaで作るクローラー/スクレイピング
Lambdaのscheduled eventで実現する運用視点のサーバレスパターン
Lambdaのscheduled eventで実現する運用視点のサーバレスパターン
速習 AWS Lambda
速習 AWS Lambda
Lambda × Mobileの可能性
Lambda × Mobileの可能性
AWS SAMで始めるサーバーレスアプリケーション開発
AWS SAMで始めるサーバーレスアプリケーション開発
20160526 AWSサービスアップデート
20160526 AWSサービスアップデート
20160312 Jaws Days 2016 API Gateway+Lambda
20160312 Jaws Days 2016 API Gateway+Lambda
俺のLambda
俺のLambda
Lambdaによるクラウド型言語の実装
Lambdaによるクラウド型言語の実装
AWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすか
PHPという概念が存在しない退屈な世界 - AWS LambdaでWebAPP編
PHPという概念が存在しない退屈な世界 - AWS LambdaでWebAPP編
Serverless Architecture on AWS(20151023版)
Serverless Architecture on AWS(20151023版)
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
AWS re:Invent2019 Overview &New Releases Summary for Game
AWS re:Invent2019 Overview &New Releases Summary for Game
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
AWS Search Services
AWS Search Services
サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方
Ähnlich wie 画像処理をAWS LambdaのPythonで!
serverless framework + AWS Lambda with Python
serverless framework + AWS Lambda with Python
masahitojp
Jawsdays2017(配布用)
Jawsdays2017(配布用)
Yutaka Hiroyama
AWS Lambda + Go
AWS Lambda + Go
Kentaro Kawano
AWS Black Belt Online Seminar - Amazon Lightsail
AWS Black Belt Online Seminar - Amazon Lightsail
Amazon Web Services Japan
サーバレスアプリケーション構築入門
サーバレスアプリケーション構築入門
YoshihiroHorizono1
JAWSDAYS2016 Technical Deep DIVE
JAWSDAYS2016 Technical Deep DIVE
陽平 山口
CloudFormation/SAMのススメ
CloudFormation/SAMのススメ
Eiji KOMINAMI
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
Yasuhiro Horiuchi
AWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターン
seiichi arai
20170705 blackbelt AWS Lambda
20170705 blackbelt AWS Lambda
Amazon Web Services Japan
JAWS-UG 愛媛 第6回勉強会(Lambda)
JAWS-UG 愛媛 第6回勉強会(Lambda)
Takahiro Kato
AWS Lambda ハンズオン 2-Tier アーキテクチャで未来へ
AWS Lambda ハンズオン 2-Tier アーキテクチャで未来へ
Amazon Web Services Japan
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
真吾 吉田
はじめてのAws lambda
はじめてのAws lambda
dcubeio
JAWS-UG Okinawa 2017/01
JAWS-UG Okinawa 2017/01
司 知花
AWS小ネタ集
AWS小ネタ集
Takehito Tanabe
初めてのクラウド AWS編
初めてのクラウド AWS編
Koichiro Nishijima
20190619 AWS Black Belt Online Seminar Dive Deep into AWS Chalice
20190619 AWS Black Belt Online Seminar Dive Deep into AWS Chalice
Amazon Web Services Japan
APIMeetup 20170329_ichimura
APIMeetup 20170329_ichimura
Tomohiro Ichimura
Windows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWS
Amazon Web Services Japan
Ähnlich wie 画像処理をAWS LambdaのPythonで!
(20)
serverless framework + AWS Lambda with Python
serverless framework + AWS Lambda with Python
Jawsdays2017(配布用)
Jawsdays2017(配布用)
AWS Lambda + Go
AWS Lambda + Go
AWS Black Belt Online Seminar - Amazon Lightsail
AWS Black Belt Online Seminar - Amazon Lightsail
サーバレスアプリケーション構築入門
サーバレスアプリケーション構築入門
JAWSDAYS2016 Technical Deep DIVE
JAWSDAYS2016 Technical Deep DIVE
CloudFormation/SAMのススメ
CloudFormation/SAMのススメ
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
AWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターン
20170705 blackbelt AWS Lambda
20170705 blackbelt AWS Lambda
JAWS-UG 愛媛 第6回勉強会(Lambda)
JAWS-UG 愛媛 第6回勉強会(Lambda)
AWS Lambda ハンズオン 2-Tier アーキテクチャで未来へ
AWS Lambda ハンズオン 2-Tier アーキテクチャで未来へ
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
はじめてのAws lambda
はじめてのAws lambda
JAWS-UG Okinawa 2017/01
JAWS-UG Okinawa 2017/01
AWS小ネタ集
AWS小ネタ集
初めてのクラウド AWS編
初めてのクラウド AWS編
20190619 AWS Black Belt Online Seminar Dive Deep into AWS Chalice
20190619 AWS Black Belt Online Seminar Dive Deep into AWS Chalice
APIMeetup 20170329_ichimura
APIMeetup 20170329_ichimura
Windows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWS
Mehr von Tomotsune Murata
Photon Enterprise Cloud 事例
Photon Enterprise Cloud 事例
Tomotsune Murata
人気ゲームアプリ「クラッシュフィーバー」におけるAWS活用
人気ゲームアプリ「クラッシュフィーバー」におけるAWS活用
Tomotsune Murata
クラッシュフィーバーのシステム構成
クラッシュフィーバーのシステム構成
Tomotsune Murata
クラッシュフィーバー開発の裏側
クラッシュフィーバー開発の裏側
Tomotsune Murata
Xcode7 / iOS 9 対応でハマったこと
Xcode7 / iOS 9 対応でハマったこと
Tomotsune Murata
コストみてますか?
コストみてますか?
Tomotsune Murata
すっかりマカーな私がWindowsに戻ってみた
すっかりマカーな私がWindowsに戻ってみた
Tomotsune Murata
MFi Controller〜それは忘れられたiOS7新機能〜
MFi Controller〜それは忘れられたiOS7新機能〜
Tomotsune Murata
SQLiteを手軽に・セキュアに
SQLiteを手軽に・セキュアに
Tomotsune Murata
cocos2dで手軽にアニメーション
cocos2dで手軽にアニメーション
Tomotsune Murata
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
Tomotsune Murata
Mehr von Tomotsune Murata
(11)
Photon Enterprise Cloud 事例
Photon Enterprise Cloud 事例
人気ゲームアプリ「クラッシュフィーバー」におけるAWS活用
人気ゲームアプリ「クラッシュフィーバー」におけるAWS活用
クラッシュフィーバーのシステム構成
クラッシュフィーバーのシステム構成
クラッシュフィーバー開発の裏側
クラッシュフィーバー開発の裏側
Xcode7 / iOS 9 対応でハマったこと
Xcode7 / iOS 9 対応でハマったこと
コストみてますか?
コストみてますか?
すっかりマカーな私がWindowsに戻ってみた
すっかりマカーな私がWindowsに戻ってみた
MFi Controller〜それは忘れられたiOS7新機能〜
MFi Controller〜それは忘れられたiOS7新機能〜
SQLiteを手軽に・セキュアに
SQLiteを手軽に・セキュアに
cocos2dで手軽にアニメーション
cocos2dで手軽にアニメーション
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
画像処理を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.
早速、試しました! (-_☆)キラーン
8.
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.
ご清聴ありがとうございました
Jetzt herunterladen