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
HIGOBASHI.AWS 第10回「サーバーレスとデータ分析 ~AWS Lambdaを活用...
Search
yuji nishimura
April 17, 2019
Technology
0
1.3k
HIGOBASHI.AWS 第10回「サーバーレスとデータ分析 ~AWS Lambdaを活用して効率化しよう~」
LambdaでNumpy,Sicpy, OpenCVを使う方法や、Lambda Layerの話をしました
yuji nishimura
April 17, 2019
Tweet
Share
More Decks by yuji nishimura
See All by yuji nishimura
Kinesis Video Streams 最新アップデートの紹介 #reinvent #cmregrowth
ynishimura
0
1.5k
HIGOBASHI.AWS 第12回「AWS CDKのConstruct Libraryを作って 公開してみよう」
ynishimura
0
600
Angularを使って爆速で管理画面を作る
ynishimura
0
2.9k
サーバーレスアーキテクチャで作ったIoTのバックエンドシステムで遭遇したエラーと対処法
ynishimura
0
2.1k
re:Invent2018 IoT系の新サービス・アップデート
ynishimura
0
1.3k
【Developers.IO 2018】IoTを実現するためのAWSのIoT系サービス:分析、セキュリティ管理、組み込み向けサービスもあるで!
ynishimura
2
1.1k
HIGOBASHI.AWS 第6回「Amazon Route53で ドメインを購入して、設定してみよう」
ynishimura
0
1.8k
HIGOBASHI.AWS 第5回「AngularとAWS AppSyncで作るサーバーレスアプリケーション」
ynishimura
0
4k
higobashi.aws 第2回「IoTとサーバーレスとラズパイ」
ynishimura
1
1.6k
Other Decks in Technology
See All in Technology
20251102 WordCamp Kansai 2025
chiilog
0
290
dbtとAIエージェントを組み合わせて見えたデータ調査の新しい形
10xinc
7
1.6k
初海外がre:Inventだった人間の感じたこと
tommy0124
1
140
abema-trace-sampling-observability-cost-optimization
tetsuya28
0
400
Amazon Athena で JSON・Parquet・Iceberg のデータを検索し、性能を比較してみた
shigeruoda
1
280
RemoteFunctionを使ったコロケーション
mkazutaka
1
170
DMMの検索システムをSolrからElasticCloudに移行した話
hmaa_ryo
0
310
進化する大規模言語モデル評価: Swallowプロジェクトにおける実践と知見
chokkan
PRO
3
390
AI駆動で進める依存ライブラリ更新 ─ Vue プロジェクトの品質向上と開発スピード改善の実践録
sayn0
1
370
AWS re:Invent 2025事前勉強会資料 / AWS re:Invent 2025 pre study meetup
kinunori
0
930
ストレージエンジニアの仕事と、近年の計算機について / 第58回 情報科学若手の会
pfn
PRO
4
930
20251027_findyさん_音声エージェントLT
almondo_event
2
520
Featured
See All Featured
Music & Morning Musume
bryan
46
6.9k
The World Runs on Bad Software
bkeepers
PRO
72
11k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
22k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
A designer walks into a library…
pauljervisheath
209
24k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.5k
The Invisible Side of Design
smashingmag
302
51k
Visualization
eitanlees
150
16k
Why Our Code Smells
bkeepers
PRO
340
57k
Code Reviewing Like a Champion
maltzj
526
40k
Why You Should Never Use an ORM
jnunemaker
PRO
60
9.6k
Transcript
)*(0#"4)*"84 ଜ༞ೋ αʔόʔϨεͱσʔλੳ d"84-BNCEBΛ׆༻ͯ͠ޮԽ͠Α͏d
ࣗݾհ wଜ༞ೋ wαʔόʔϨε։ൃ෦ wݩγε wೖࣾϲ݄ w"84ྺϲ݄
w౦ژ͔Βେࡕʹ6λʔϯస৬ wલ৬*41ͷձࣾͰސ٬γεςϜอक
AWS Lambda 使ったことある人✋
numpy,scipy,pandasとかで データ分析してる人✋
ࠓճͷ༰ͷఆ͢Δλʔήοτ ॳ৺ऀ͚Ͱ͢ -BNCEBͬͨ͜ͱͳ͍͚ͲͬͯΈ͍ͨ σʔλੳͷલॲཧͱָ͔͍ͨ͠ ຖճಉ͡ॲཧ͍ͯ͠ΔͷͰޮԽ͍ͨ͠
࣍ wαʔόʔϨεͱ w"84-BNCEBͱ wϥΠϒϥϦΛؚΉ"84-BNCEBͷσϓϩΠ wπʔϧΛͬͯσϓϩΠΛָʹ͢Δ w৽ػೳʮ-BNCEB-BZFSTʯΛͬͯݮ wσϞ w·ͱΊ
サーバーレスとは
ͬ͘͟Γઆ໌͢Δͱ ϚωʔδυαʔϏε 04.8ͳͲӡ༻ཧपΓϕϯμ͕࣮ࢪ શैྔܕͷ՝ۚ ͚ͬͨͩͷ՝ۚ ߴՄ༻ੑ ԽɺεέʔϧΞοϓΛؾʹ͠ͳ͍͍ͯ͘
AWS Lambdaとは
"84-BNCEBͷಛ αʔόʔཧͤͣίʔυΛ࣮ߦͰ͖Δɹɹ ίϯϐϡʔςΟϯάαʔϏε ΠϕϯυυϦϒϯ ࣗಈతʹεέʔϧ ϛϦඵ୯Ґͷ՝ۚ ෳͷϥϯλΠϜΛαϙʔτɿ1ZUIPOରԠ
どんな場面で使えるか
Ϣʔεέʔε σʔλॲཧ όονॲཧʢҎʣ ϦΞϧλΠϜϑΝΠϧॲཧ நग़ɺมɺϩʔυ όοΫΤϯυ *P5όοΫΤϯυ ϞόΠϧόοΫΤϯυ
ΣϒΞϓϦέʔγϣϯ https://aws.amazon.com/jp/lambda/
データ分析時の データの前処理に使えそう
AWS Lambdaの料金
શͳैྔ՝ۚ ϦΫΤετճʹର͢Δ՝ۚ ݄ສ݅·Ͱແྉ ສ݅͋ͨΓ ࣮ߦ࣌ؒʹର͢Δ՝ۚ https://aws.amazon.com/jp/lambda/pricing/ ϝϞϦʢ.#ʣ ݄ͷແྉʢඵʣ
ϛϦඵ୯ҐͷՁ֨ʢ64%ʣ ʜ ʜ ʜ
AWS Lambda (ϚωʔδυαʔϏε)ʹ ੍ݶ͕͋Δ ϋϚΓϙΠϯτ
ओཁͳ੍ݶ Ϧιʔε ੍ݶ λΠϜΞτ TFD  σϓϩΠύοέʔ δ
.# [JQѹॖࡁɺΞοϓϩʔυ .# ίϯιʔϧΤσΟλ .# ϨΠϠʔ ϝϞϦ .#͔Β.#·Ͱ UNQετϨʔδ .# https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/limits.html
AWS Lambdaで NumPy・SciPyを使ってみる
ライブラリを含めた Lambdaのデプロイがめんどう はじめにぶつかる壁
ϥΠϒϥϦΛؚ·ͳ͍߹ ίʔυཧͱ͔ແࢹ͢ΕɺϚωίϯ্Ͱ ݁Մೳ
ϥΠϒϥϦΛؚΊΔ߹ ϥΠϒϥϦؚΊͯ[JQʹݻΊͯσϓϩΠ ͢Δඞཁ͕͋Δ ίʔυΛमਖ਼͢Δͨͼʹ[JQʹݻΊͯɹɹ σϓϩΠ͢Δඞཁ͕͋Δ
zipに固めるところで 気をつけるポイント
ؾΛ͚ͭΔϙΠϯτͦͷ̍ JNQPSU͢Δࡍͷύεʹҙ [JQΛ࡞Δલʹ ύοέʔδԼʹϥΠϒϥϦϑΝΠϧΛஔ͘ ͳͲͯ͠σϓϩΠޙͰϋϯυϥ͔Βɹɹɹ ϥΠϒϥϦΛݺͼग़ͤΔΑ͏ʹ͕ඞཁ pip install
-r requirements.txt -t . ex) -t ͰϥΠϒϥϦͷΠϯετʔϧઌΛࢦఆ https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html
ؾΛ͚ͭΔϙΠϯτͦͷ̎ ͭͷσϓϩΠύοέʔδʹ༰ྔ੍ݶ͕͋Δ ʢݱࡏɺ.#ʣ σʔλॲཧʹΑ͘ΘΕΔϥΠϒϥϦ༰ྔ͕ େ͖ΊͳͷͰ࠷దԽ͕ඞཁ https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/limits.html $ mkdir
numpy $ pip install numpy -t numpy $ du -sh numpy 82M numpy ex) numpy ͷ༰ྔΛ֬ೝ
ؾΛ͚ͭΔϙΠϯτͦͷ 04ґଘ͕͋ΔϥΠϒϥϦ"NB[POɹ -JOVYڥͰϏϧυͨ͠ϑΝΠϧΛ[JQʹ ؚΊΔ -BNCEBؔͷ࣮ߦڥͱ΄΅ಉͷ %PDLFSΠϝʔδΛͬͯϏϧυ docker run
--rm -v $(pwd):/var/task -w /var/task lambci/lambda:build-python3.6 \ pip install -r requirements.txt -t ${OUTPUT_DIR} ex) dockerΛͬͯϏϧυ͢ΔεΫϦϓτྫͷൈਮ
毎回手動ではしんどいので パッケージの作成を自動化したい 芽生える気持ち
スクリプト作ってもいいですが メンテとか管理したくない もっとスマートにしたい 次に芽生える気持ち
ツールを使って面倒なところは ツールに任せましょう 解決案
ࠓճ༻͢Δπʔϧ 4FSWFSMFTT'SBNFXPSL ͱϓϥάΠϯͷ 4FSWFSMFTT1ZUIPO3FRVJSFNFOUT https://github.com/UnitedIncome/serverless-python-requirements
Ͳ͏ͬͯ͏ͷ͔ TFSWFSMFTTZNMʹઃఆΛهࡌ͢Δ͚ͩ ίϚϯυҰͭͰύοέʔδͱσϓϩΠ·Ͱ࣮ࢪ custom: pythonRequirements: dockerizePip: non-linux slim:
true zip: true plugins: - serverless-python-requirements $ sls deploy dockerͰϏϧυ ࠷దԽͯ͠༰ྔݮ zipѹॖߴΊ༰ྔݮ
Ͳ͏ͬͯ͏ͷ͔ ੍ݶͰOVNQZ TDJQZΛύοέʔδ Serverless: Uploading CloudFormation file to
S3... Serverless: Uploading artifacts... Serverless: Uploading service .zip file to S3 (42.02 MB)... Serverless: Validating template... Serverless: Updating Stack... Serverless: Checking Stack update progress... ......... https://dev.classmethod.jp/cloud/serverless-framework-lambda-numpy-scipy/ ৄࡉԼهϒϩάΛࢀর
実際使ってみると ちょっと使い勝手悪い できたけど、ただ。。
͍উख͕ѱ͍ͳͱײͨ͡ͱ͜Ζ ͪΐͬͱͨ͠ίʔυमਖ਼ͷͨͼʹύοέʔ δΛ࡞Δॲཧ͕ೖͬͯσϓϩΠʹ͔͔࣌ؒ Δ Ϛωʔδϝϯτίϯιʔϧ͔Βίʔυͷ֬ ೝमਖ਼͕Ͱ͖ͳ͍ʢύοέʔδαΠζ͕ .#Ҏ্ͷͱ͖දࣔ͞Εͳ͍ʣ
AWS Lambdaの新機能 「Lambda Layers」
-BNCEB-BZFSTͱ ڈͷ݄SF*OWFOUൃද͞Εͨػೳ ෳͷ-BNCEBؔͰڞ༗͢ΔΧελϜίʔυ ϥΠϒϥϦΛϨΠϠͱͯ͠࡞Ͱ͖ ଞͷ-BNCEB͔ؔΒϨΠϠͱͯ͠ར༻Ͱ͖Δ ϥΠϒϥϦͳͲΛϨΠϠʹ͓͚ͯ͠ σϓϩΠύοέʔδʹؚΊͳͯ͘Α͍
ライブラリをLayerにして デプロイパッケージを軽量化
そもそも、NumPy・SciPyは AWSよりLayerが提供されている
"84ΑΓఏڙ͞ΕΔϨΠϠ ϨΠϠʔબը໘ΑΓ͡Ί͔ΒબͰ͖Δ
Pandasなど自分でLayerを デプロイするときは Lambdaと同じでめんどう
Layerのデプロイも Serverless Frameworkと プラグインを使えば簡単
Ͳ͏Δʁ ྲྀΕͷ֓ཁ w-BZFS༻ͱ-BZFSΛར༻͢Δ-BNCEB༻Ͱ͚Δ w-BZFSΛσϓϩΠ͢ΔͱࣗಈͰ$GOͷ0VUQVUʹ "3/͕ઃఆ͞ΕΔ w-BZFSΛར༻͢Δ-BNCEBͰ0VUQVUΛࢀর͠ ͯσϓϩΠ͢Δ͜ͱͰɺඥ͚ͮͯσϓϩΠͰ͖Δ
-BZFS༻ͷTFSWFSMFTTZNMʢશͯʣ service: layer provider: name: aws runtime: python3.7
deploymentBucket: name: layer-test-dev-serverless-demo package: exclude: - "**" custom: pythonRequirements: usePipenv: true dockerizePip: true layer: description: opencv plugins: - serverless-python-requirements ϥΠϒϥϦΛLayerͱͯ͠σϓϩΠ
σϓϩΠํ๏ ؔΛࢦఆ͠ͳͯ͘σϓϩΠՄೳ TMTEFQMPZͰ-BZFSΛσϓϩΠՄೳ 0VUQVUʹ-BZFSͷ"3/ͱόʔδϣϯؚ͕·ΕΔ
-BZFSΛར༻͢Δ-BNCEB DGOͷ0VUQVUΛࢀর͢ΔػೳΛར༻ functions: hello: handler: handler.hello layers: -
${cf:layer-dev.PythonRequirementsLambdaLayerQualifiedArn} ex) serverless.ymlͷҰ෦ൈਮ Layer͕ඥ͍ͨঢ়ଶͰσϓϩΠ
デモ
外部ライブラリ OpenCVを使って顔検出する Lambda(Layer機能使用)
ߏਤ AWS Lambda Amazon Simple Storage Service (S3)
ᶃը૾Ξοϓϩʔυ ᶄτϦΨʔ࣮ߦ ᶅը૾ॲཧͨ͠ը૾อଘ
ݟͯ΄͍͠ϙΠϯτ 4ʹϑΝΠϧΛΞοϓσʔτ͢Δͱࣗಈ࣮ߦ -BNCEBͰ0QFO$7͕͏͍͍ͯ͝Δ αʔόʔϨεߏ Ϛωίϯ͔Βίʔυͷ֬ೝͰ͖Δ σϓϩΠ࣌ʹσϓϩΠύοέʔδ༰ྔ
まとめ
·ͱΊ w"84-BNCEBσʔλੳͷલॲཧʹ͑ͦ͏ w͚ͬͨͩͷ՝ۚͳͷͰίετ wϥΠϒϥϦΛؚΊͨσϓϩΠπʔϧΛͬͯ ָΛ͠Α͏ w-BZFSΛ׆༻ͯ͠ɺΑΓ͍উखΑ͘͠Α͏ w؆୯ʹσʔλॲཧͷΈΛ࡞ΕΔ
さいごに
Lambdaをうまく使って コストや作業の効率化 してみませんか
None