Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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.9k
初めての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.3k
内製化をネクストステージへ〜クラスメソッドのSaaSソリューション〜
smokeymonkey
0
1.2k
Digital waiting room that supported vaccination reservations
smokeymonkey
0
1.3k
完全テレワークを実現した企業のカルチャーを支える Slack 活用実践事例
smokeymonkey
0
2k
ケーススタディで学ぶ企業運営〜クラスメソッドの新型コロナ対応〜
smokeymonkey
3
2.1k
ピンチをチャンスに変える!カルチャートランスフォーメーション
smokeymonkey
1
2.6k
テックブログとCI
smokeymonkey
0
9.6k
40分で理解するAWS re:Invent 2019アップデートまとめ
smokeymonkey
0
1.7k
EmulatingAmazon GO
smokeymonkey
0
1.6k
Other Decks in Technology
See All in Technology
AWS CLIの新しい認証情報設定方法aws loginコマンドの実態
wkm2
6
730
評価駆動開発で不確実性を制御する - MLflow 3が支えるエージェント開発
databricksjapan
1
170
OCI Oracle Database Services新機能アップデート(2025/09-2025/11)
oracle4engineer
PRO
1
150
今年のデータ・ML系アップデートと気になるアプデのご紹介
nayuts
1
320
因果AIへの招待
sshimizu2006
0
970
Edge AI Performance on Zephyr Pico vs. Pico 2
iotengineer22
0
140
打 造 A I 驅 動 的 G i t H u b ⾃ 動 化 ⼯ 作 流 程
appleboy
0
320
Ruby で作る大規模イベントネットワーク構築・運用支援システム TTDB
taketo1113
1
280
AI駆動開発における設計思想 認知負荷を下げるフロントエンドアーキテクチャ/ 20251211 Teppei Hanai
shift_evolve
PRO
2
370
Haskell を武器にして挑む競技プログラミング ─ 操作的思考から意味モデル思考へ
naoya
6
1.5k
regrowth_tokyo_2025_securityagent
hiashisan
0
230
Database イノベーショントークを振り返る/reinvent-2025-database-innovation-talk-recap
emiki
0
140
Featured
See All Featured
A designer walks into a library…
pauljervisheath
210
24k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Raft: Consensus for Rubyists
vanstee
141
7.2k
Balancing Empowerment & Direction
lara
5
800
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Speed Design
sergeychernyshev
33
1.4k
The Language of Interfaces
destraynor
162
25k
Embracing the Ebb and Flow
colly
88
4.9k
GitHub's CSS Performance
jonrohan
1032
470k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
710
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