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
580
Angularを使って爆速で管理画面を作る
ynishimura
0
2.8k
サーバーレスアーキテクチャで作った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.5k
Other Decks in Technology
See All in Technology
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
7.8k
Claude Code に プロジェクト管理やらせたみた
unson
7
4.7k
IPA&AWSダブル全冠が明かす、人生を変えた勉強法のすべて
iwamot
PRO
2
200
Rethinking Incident Response: Context-Aware AI in Practice
rrreeeyyy
1
150
【LT会登壇資料】TROCCO新コネクタ「スマレジ」を活用した直営店データの分析
kazari0425
1
110
VGGT: Visual Geometry Grounded Transformer
peisuke
1
300
AI エージェントと考え直すデータ基盤
na0
17
5.9k
Operating Operator
shhnjk
1
620
スタートアップに選択肢を 〜生成AIを活用したセカンダリー事業への挑戦〜
nstock
0
270
cdk initで生成されるあのファイル達は何なのか/cdk-init-generated-files
tomoki10
1
240
【あのMCPって、どんな処理してるの?】 AWS CDKでの開発で便利なAWS MCP Servers特集
yoshimi0227
6
430
事例で学ぶ!B2B SaaSにおけるSREの実践例/SRE for B2B SaaS: A Real-World Case Study
bitkey
1
180
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
69
11k
Bash Introduction
62gerente
613
210k
How STYLIGHT went responsive
nonsquared
100
5.6k
How GitHub (no longer) Works
holman
314
140k
A better future with KSS
kneath
238
17k
Making Projects Easy
brettharned
116
6.3k
Making the Leap to Tech Lead
cromwellryan
134
9.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
What's in a price? How to price your products and services
michaelherold
246
12k
Thoughts on Productivity
jonyablonski
69
4.7k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
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