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
初めてのIoT with Python on AWS
Search
smokeymonkey
September 12, 2015
Technology
3
2.8k
初めてのIoT with Python on AWS
2015/9/12 PyCon mini Sapporo
http://sapporo.pycon.jp/2015/
smokeymonkey
September 12, 2015
Tweet
Share
More Decks by smokeymonkey
See All by smokeymonkey
StackHawkを使ってWebアプリケーションの脆弱性を診断する
smokeymonkey
0
2.2k
内製化をネクストステージへ〜クラスメソッドのSaaSソリューション〜
smokeymonkey
0
1.1k
Digital waiting room that supported vaccination reservations
smokeymonkey
0
1.2k
完全テレワークを実現した企業のカルチャーを支える Slack 活用実践事例
smokeymonkey
0
1.9k
ケーススタディで学ぶ企業運営〜クラスメソッドの新型コロナ対応〜
smokeymonkey
3
2k
ピンチをチャンスに変える!カルチャートランスフォーメーション
smokeymonkey
1
2.5k
テックブログとCI
smokeymonkey
0
9.4k
40分で理解するAWS re:Invent 2019アップデートまとめ
smokeymonkey
0
1.6k
EmulatingAmazon GO
smokeymonkey
0
1.5k
Other Decks in Technology
See All in Technology
GeminiとNotebookLMによる金融実務の業務革新
abenben
0
240
Wasm元年
askua
0
160
AIエージェント最前線! Amazon Bedrock、Amazon Q、そしてMCPを使いこなそう
minorun365
PRO
15
5.4k
Tech-Verse 2025 Keynote
lycorptech_jp
PRO
0
890
mrubyと micro-ROSが繋ぐロボットの世界
kishima
2
360
20250625 Snowflake Summit 2025活用事例 レポート / Nowcast Snowflake Summit 2025 Case Study Report
kkuv
1
340
AI導入の理想と現実~コストと浸透〜
oprstchn
0
110
"サービスチーム" での技術選定 / Making Technology Decisions for the Service Team
kaminashi
1
190
プロダクトエンジニアリング組織への歩み、その現在地 / Our journey to becoming a product engineering organization
hiro_torii
0
130
ひとり情シスなCTOがLLMと始めるオペレーション最適化 / CTO's LLM-Powered Ops
yamitzky
0
450
標準技術と独自システムで作る「つらくない」SaaS アカウント管理 / Effortless SaaS Account Management with Standard Technologies & Custom Systems
yuyatakeyama
3
1.3k
25分で解説する「最小権限の原則」を実現するための AWS「ポリシー」大全 / 20250625-aws-summit-aws-policy
opelab
9
1.2k
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
694
190k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Become a Pro
speakerdeck
PRO
28
5.4k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
The Cult of Friendly URLs
andyhume
79
6.5k
Six Lessons from altMBA
skipperchong
28
3.9k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.8k
4 Signs Your Business is Dying
shpigford
184
22k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Transcript
DMBTTNFUIPEKQ ॳΊͯͷ*P5 XJUI1ZUIPOPO"84 1Z$PONJOJ4BQQPSP 1 Ϋϥεϝιουגࣜձࣾ ࠤʑɹେี
classmethod.jp 2 w ࣗݾհ w *P5ͷ֓ཁ w *P5PO"84 w *P5XJUI1ZUIPOPO"84σϞ
ΞδΣϯμ
classmethod.jp 3 ࣗݾհ
4 classmethod.jp 4 ࣗݾհ ࠤʑɹେี !TNPLFZNPOLFZBLB͚͢ 5XJUUFS'BDFCPPL
classmethod.jp 5 ࣗݾհ w Ϋϥεϝιουגࣜձࣾ w "84ίϯαϧςΟϯά෦ɹ෦ w ࡳຈΦϑΟεɹΤϦΞϚωʔδϟ w
γχΞιϦϡʔγϣϯΞʔΩςΫτ w ಘҙͳͷ w ωοτϫʔΫηΩϡϦςΟ w ͖ͳ"84αʔϏε w 71$
6
classmethod.jp 7 ࣗݾհ w Ϋϥεϝιουגࣜձࣾ w "84ίϯαϧςΟϯά෦ɹ෦ w ࡳຈΦϑΟεɹΤϦΞϚωʔδϟ w
γχΞιϦϡʔγϣϯΞʔΩςΫτ w ಘҙͳͷ w ωοτϫʔΫηΩϡϦςΟ w ͖ͳ"84αʔϏε w 71$
classmethod.jp 8 ͱ 1ZUIPO ؔͳ͍
classmethod.jp 9 ΑΖ͘͠ ͓ئ͍͠·͢
classmethod.jp 10 *P5ͷ֓ཁ
classmethod.jp 11 w ʮϞϊͷΠϯλʔωοτʯ w Ϟϊ͕ɺΠϯλʔωοτΛհͯ͠ɺ ใͷΓऔΓΛ͢Δ͜ͱ w ϞϊˠใͷΓऔΓ͕Ͱ͖Δͷ w
ύιίϯ w εϚʔτϑΥϯ w γϯάϧϘʔυίϯϐϡʔλ w σδλϧՈి *P5 *OUFSOFUPG5IJOHT ͱ
classmethod.jp 12 w ઍສͷϚγϯσόΠε͕ɺ w ਓΛհ͢Δ͜ͱͳ͘ɺ w ϚγϯؒͰσʔλ௨৴Λߦ͏͜ͱͰɺ w ΑΓߴ͍ՁαʔϏεΛఏڙ͢ΔΈ
ࠓݱࡏޠΒΕ͍ͯΔ*P5ͱ
classmethod.jp 13 w ӡૹंʹऔΓ͚ͨηϯαʔͰߦҐஔɺ ɺ೩අɺߦڑɺఀࢭճͳͲΛه w ˠΞΠυϦϯά೩ྉফඅΛݮ w ˠੳʹΑΓӡૹܦ࿏Λ࠷దԽ w
Ոͷാͷʹؚ·ΕͨਫϨϕϧΛه w ˠԹɺ࣪ɺࣹྔɺӍྔΛܭଌ w ˠࠓޙͷಈΛੳ *P5ʹΑͬͯԿ͕Ͱ͖Δͷ͔
classmethod.jp 14 *P5ͷ Ұൠతͳ ߏཁૉ センサー デバイス ネットワーク サーバ 加速度度センサー
温湿度度センサー GPS ジャイロスコープ e.t.c...... デジタル家電 Intel Edison Raspberry Pi Armadillo e.t.c...... 4G LTE 3G Wi-‐‑‒Fi Bluetooth LE e.t.c......
classmethod.jp 15 w ˠ w 530/ͷࡔଜઌੜ w ʮͲ͜Ͱίϯϐϡʔλʯ w ˠ
w 1"3$ͷϚʔΫɾϫΠβʔ w ʮϢϏΩλείϯϐϡʔςΟϯάʯ w ˠ w ଜ૯ݚ w ʮϢϏΩλεωοτϫʔΫʯ w ͋ΒΏΔॴͰ͋ΒΏΔϞϊ͕ωοτϫʔ Ϋʹͭͳ͕Δ *P5ͷ֓೦৽͍͠ͷͰແ͍
classmethod.jp 16 w σόΠεͷීٴ w ίϯϐϡʔλνοϓͷੑೳ্ɺলిྗԽɺՁ ֨Խ w γϯάϧϘʔυίϯϐϡʔλͳͲͷۃখԽ w
ωοτϫʔΫͷීٴ w 8J'Jͷීٴ w ((ͷ෮چ ֨҆4*.ؚΉ w ΫϥυαʔϏεͷීٴ w "84($&"[VSFFUD w ߴੑೳͳαʔόϦιʔεΛɺखܰʹɺ֨҆ʹ͑ ΔΑ͏ʹͳͬͨ ͳͥࠓ*P5ͳͷ͔
classmethod.jp 17 *P5Λ࣮ݱ͢Δ ͕ἧͬͨ ͔Β
classmethod.jp 18 *P5PO"84
classmethod.jp 19 "84Ͱ*P5ʹؔ࿈͢Δ දతͳ αʔϏε w ଞʹͨ͘͞Μ͋Δ w දతͳͷΛ͝հ センサー
Amazon Kinesis AWS Lambda Amazon DynamoDB Amazon Redshift リアルタイム ダッシュボー ド ビッグデータ 分析
classmethod.jp 20 w ετϦʔϛϯάσʔλॲཧͷҝͷϚωʔδυαʔϏε w େྔͷηϯαʔσόΠεͳͲ͔ΒσʔλΛड͚औΓɺ όοΫΤϯυܨ͙͜ͱ͕Մೳ w σʔλͷऔΓग़͠,JOFTJT$MJFOU-JCSBSZɺ,JOFTJT $POOFDUPSɺ"NB[PO-BNCEBͳͲΛ͏ɻ
"NB[PO,JOFTJT Data Sources Data Data Data Data INPUT KEEP Processer OUTPUT Amazon Kinesis 処理理
classmethod.jp w ΠϕϯτυϦϒϯͰϢʔβʔಠࣗͷίʔυΛ࣮ߦͤ͞ ΔίϯϐϡʔςΟϯάαʔϏε w Πϯελϯε04ͳͲͷཧෆཁ w ຖ͔݅Βຖඵઍ݅·Ͱࣗಈతʹεέʔϧ w +BWB4DSJQU·ͨ+BWBͰίʔσΟϯάՄೳ
"84-BNCEB Event Sources EVENT INPUT 発⽕火 AWS Lambda 実⾏行行結果 21
classmethod.jp w ϑϧϚωʔδυͳ/P42-σʔλϕʔεαʔϏε w ߴͰҰ؏ͨ͠ύϑΥʔϚϯε w ߴ͍εέʔϥϏϦςΟ w ΩʔόϦϡʔܕͱ+40/υΩϡϝϯτʹରԠ w
σʔλॻ͖ࠐΈ͕ଟ͘ɺ͔ͭߋ৽݁Ռ߹ੑͰ୲อ ͞ΕΕྑ͍έʔεʹ͍ͯΔ w ߦಈϩά w ιγϟήͷϙΠϯτ w ϦΞϧλΠϜμογϡϘʔυ "NB[PO%ZOBNP%# 22
classmethod.jp w ϖλόΠτنͷϑϧϚωʔδυσʔλΣΞϋε w ྻࢦσʔλϕʔε w ΧϥϜ୯ҐͰσʔλΛߴʹूܭ w ߴ͍εέʔϥϏϦςΟ w
.11ػߏΛ࣋ͪɺશϊʔυ͕ฒྻʹॲཧ w ϊʔυΛ૿ͤॲཧੑೳ্ "NB[PO3FETIJU
classmethod.jp 24 *P5 XJUI1ZUIPO PO"84 σϞ
classmethod.jp σϞͷ༰ w *OUFM&EJTPOʹଓ͞ΕͨޫηϯαʔͰ໌ Λऔಘ w *OUFM&EJTPO্ͷ"844%,GPS1ZUIPOͰޫ ηϯαʔͷσʔλΛ"NB[PO,JOFTJTʹQVU w ,JOFTJTʹొ͞ΕͨσʔλΛ֬ೝ
光センサー Amazon Kinesis AWS SDK for Python on Intel Edison 25
classmethod.jp *OUFM&EJTPO-JHIU4FOTPS
classmethod.jp 4FOEFS *OUFM&EJTPO 27 import boto3 from boto3.session import
Session import mraa import time account_̲id = '<YOUR_̲ACCOUNT_̲ID>' identity_̲pool_̲id = '<YOUR_̲IDENTITY_̲POOL_̲ID>' role_̲arn = '<YOUR_̲COGNITO_̲UNAUTH_̲ARN>' aws_̲region = 'us-‐‑‒east-‐‑‒1' stream_̲name = '<YOUR_̲STREAM_̲NAME>' partition_̲key = 'PartitionKey' Boto3を使⽤用 mraaを使⽤用 ※Intel謹製のIOフレームワーク
classmethod.jp 4FOEFS *OUFM&EJTPO 28 light = mraa.Aio(0) client =
boto3.client('cognito-‐‑‒identity', aws_̲region) resp = client.get_̲id(AccountId=account_̲id,IdentityPoolId=identity_̲pool_̲id) resp = client.get_̲open_̲id_̲token(IdentityId=resp['IdentityId']) token = resp['Token'] client = boto3.client('sts') assumeRole = client.assume_̲role_̲with_̲web_̲identity( RoleArn = role_̲arn, RoleSessionName = 'boto', WebIdentityToken = token) Analog(0)が光センサー CognitoからToken取得 STSから AssumeRole取得
classmethod.jp 4FOEFS *OUFM&EJTPO 29 session = Session( aws_̲access_̲key_̲id
= assumeRole['Credentials'] ['AccessKeyId'], aws_̲secret_̲access_̲key = assumeRole['Credentials'] ['SecretAccessKey'], aws_̲session_̲token = assumeRole['Credentials'] ['SessionToken'], region_̲name = aws_̲region ) kinesis = session.client('kinesis') Kinesis clientを作成 AssumeRoleを認証情報として使⽤用
classmethod.jp 4FOEFS *OUFM&EJTPO 30 while True:
data = light.read() time.sleep(0.2) response = kinesis.put_̲record( StreamName = stream_̲name, Data = str(data), PartitionKey = partition_̲key) print(response) 光センサーの 値を取得 Kinesisにput
classmethod.jp 3FDFJWFS 1$ 31 from boto3.session import Session import
time aws_̲region = 'us-‐‑‒east-‐‑‒1' stream_̲name = 'pycon' partition_̲key = 'PartitionKey' session = Session( aws_̲access_̲key_̲id = '<YOUR_̲ACCESS_̲KEY>', aws_̲secret_̲access_̲key = '<YOUR_̲SECRET_̲KEY>', region_̲name = aws_̲region ) Boto3を使⽤用 認証情報をセット
classmethod.jp 3FDFJWFS 1$ 32 kinesis = session.client('kinesis') stream =
kinesis.describe_̲stream(StreamName=stream_̲name) shards = stream['StreamDescription']['Shards'][0] ['ShardId'] shared_̲iterator = kinesis.get_̲shard_̲iterator( StreamName = stream_̲name, ShardId = shards, ShardIteratorType = 'LATEST' ) Kinesisに 接続 接続するShardIteratorを取得
classmethod.jp 3FDFJWFS 1$ 33 iterator = shared_̲iterator['ShardIterator'] while True:
resp = None resp = kinesis.get_̲records(ShardIterator=iterator,Limit=1) print resp['Records'] iterator = resp['NextShardIterator'] time.sleep(1) 最初のIteratorを取得 データをgetして出⼒力力し、 次のIteratorを取得
classmethod.jp 34 ಈ͔ͯ͠ΈΔ
classmethod.jp 35 ·ͱΊ
classmethod.jp 36 w *P5ͷ׆༻ʹΫϥυαʔϏεͷ ར༻ඞਢ w "84ʹ*P5ʹඞཁͳαʔϏε͕ ͨ͘͞Μἧ͍ͬͯΔ w 1ZUIPOΛͬͯ؆୯ʹηϯαʔσʔ
λΛ"84ʹ1VUͰ͖Δ ·ͱΊ
classmethod.jp 37 "84ͱ1ZUIPOΛ ׆༻ͯ͠ *P5Ͱ༡΅͏ ·ͱΊ
None