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
590
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.5k
Other Decks in Technology
See All in Technology
LLMを搭載したプロダクトの品質保証の模索と学び
qa
0
1.1k
20250910_障害注入から効率的復旧へ_カオスエンジニアリング_生成AIで考えるAWS障害対応.pdf
sh_fk2
3
270
人工衛星のファームウェアをRustで書く理由
koba789
15
8.2k
Rustから学ぶ 非同期処理の仕組み
skanehira
1
150
AWSを利用する上で知っておきたい名前解決のはなし(10分版)
nagisa53
10
3.2k
IoT x エッジAI - リアルタイ ムAI活用のPoCを今すぐ始め る方法 -
niizawat
0
110
5年目から始める Vue3 サイト改善 #frontendo
tacck
PRO
3
230
dbt開発 with Claude Codeのためのガードレール設計
10xinc
2
1.3k
Oracle Cloud Infrastructure IaaS 新機能アップデート 2025/06 - 2025/08
oracle4engineer
PRO
0
110
AIエージェント開発用SDKとローカルLLMをLINE Botと組み合わせてみた / LINEを使ったLT大会 #14
you
PRO
0
130
Create Ruby native extension gem with Go
sue445
0
130
[ JAWS-UG 東京 CommunityBuilders Night #2 ]SlackとAmazon Q Developerで 運用効率化を模索する
sh_fk2
3
460
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
GraphQLとの向き合い方2022年版
quramy
49
14k
Documentation Writing (for coders)
carmenintech
74
5k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Docker and Python
trallard
46
3.6k
The Language of Interfaces
destraynor
161
25k
Building an army of robots
kneath
306
46k
Code Reviewing Like a Champion
maltzj
525
40k
A better future with KSS
kneath
239
17k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
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