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.4k
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
630
Angularを使って爆速で管理画面を作る
ynishimura
0
3k
サーバーレスアーキテクチャで作ったIoTのバックエンドシステムで遭遇したエラーと対処法
ynishimura
0
2.1k
re:Invent2018 IoT系の新サービス・アップデート
ynishimura
0
1.4k
【Developers.IO 2018】IoTを実現するためのAWSのIoT系サービス:分析、セキュリティ管理、組み込み向けサービスもあるで!
ynishimura
2
1.2k
HIGOBASHI.AWS 第6回「Amazon Route53で ドメインを購入して、設定してみよう」
ynishimura
0
1.8k
HIGOBASHI.AWS 第5回「AngularとAWS AppSyncで作るサーバーレスアプリケーション」
ynishimura
0
4.1k
higobashi.aws 第2回「IoTとサーバーレスとラズパイ」
ynishimura
1
1.6k
Other Decks in Technology
See All in Technology
新職業『オーケストレーター』誕生 — エージェント10体を同時に回すAgentOps
gunta
4
1.7k
マルチロールEMが実践する「組織のレジリエンス」を高めるための組織構造と人材配置戦略
coconala_engineer
3
690
トップマネジメントとコンピテンシーから考えるエンジニアリングマネジメント
zigorou
4
820
[AEON TECH HUB #24] お客様の長期的興味の理解に向けて
alpicola
0
130
タスク管理も1on1も、もう「管理」じゃない ― KiroとBedrock AgentCoreで変わった"判断の仕事"
yusukeshimizu
5
2.5k
20260311 技術SWG活動報告(デジタルアイデンティティ人材育成推進WG Ph2 活動報告会)
oidfj
0
270
PMBOK第8版は第7版から何が変わったのか(PMBOK第8版概要解説) / 20260304 Takeshi Watarai
shift_evolve
PRO
0
180
AIファーストを前提とした開発スタイルの変化
sbtechnight
0
280
AIエージェント時代に備える AWS Organizations とアカウント設計
kossykinto
3
680
生成AIの利用とセキュリティ /gen-ai-and-security
mizutani
1
1.6k
Evolution of Claude Code & How to use features
oikon48
1
570
[2026-03-07]あの日諦めたスクラムの答えを僕達はまだ探している。〜守ることと、諦めることと、それでも前に進むチームの話〜
tosite
0
120
Featured
See All Featured
Building Applications with DynamoDB
mza
96
7k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
120
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
30 Presentation Tips
portentint
PRO
1
250
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
470
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.5k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
140
Building AI with AI
inesmontani
PRO
1
780
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
210
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
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