SWEST2日目 セッションS2Cにて発表。
AWS(Amazon Web Services)を使ってIoTシステムのバックエンドを構築するハンズオンです。
https://swest.toppers.jp/SWEST22/program/s2c.html#s2
※ 第1部、第3部は近日中に公開予定です。 ※ 発表時点でP.49とP.50が重複していたためP.50を削除しています
ݩɾࠐΈΤϯδχΞ͕ڭ͑ΔAWSΛͬͨIoTγεςϜͷόοΫΤϯυߏஙखॱ - IoTγεςϜ։ൃϋϯζΦϯ -2020-08-21(Fri) 10:00-11:10SWEST 22 ηογϣϯS2ઌਐٕज़෦ IoTνʔϜ ΤϯδχΞԬቌ ༤ฏ1
View Slide
ຊηογϣϯͰ͓͢Δ͜ͱAWS͕͡Ίͯͷํ͚ʹɺAWSͷಛಋೖͷϝϦοτɺྉۚମܥͳͲΛ͝આ໌͠·͢ୈ2෦: IoTγεςϜ։ൃϋϯζΦϯAWSΛͬͯIoTγεςϜͷόοΫΤϯυΛ։ൃ͢ΔखॱΛϋϯζΦϯܗࣜͰઆ໌͠·͢ɻ࣮ࡍʹγεςϜΛߏங͢Δ͜ͱͰɺΫϥυ্ͷγεςϜΛ؆୯ʹߏஙͰ͖Δ͜ͱ͕͓͔Γ͍͚ͨͩΔͣͰ͢ɻୈ3෦: IoT։ൃʹ͓͚ΔࠐΈΤϯδχΞͷՁࠐΈΤϯδχΞͷ࣋ͭͲͷΑ͏ͳεΩϧ͕IoT։ൃͰՁΛൃش͢Δ͔ɺWebΤϯδχΞͷࢹ͔Β͝հ͠·͢ɻ2ୈ1෦: ͡ΊͯͷAWS͜Ε͔Βઆ໌
ʮୈ2෦: IoTγεςϜ։ൃϋϯζΦϯʯͰߏங͢ΔγεςϜ3IoTࣄྫͰΑ͘ݟ͔͚Δɺ෦ͷԹΛࢹɾՄࢹԽ͢ΔγεςϜΛ։ൃ͠·͢ɻ
ʮୈ2෦: IoTγεςϜ։ൃϋϯζΦϯʯͰߏங͢ΔγεςϜ4
࣍ (1/2)51. CloudFormationͰΠϯϑϥҰࣜΛϓϩϏδϣχϯά͠Α͏2. Lambda͔ΒDiscordʹϝοηʔδΛૹ৴͠Α͏3. IoT CoreͱDynamoDBɾLambdaͷଓΛ֬ೝ͠Α͏4. mockmockΛͬͯσʔλΛૹͬͯΈΑ͏5. (͜͜Ͱٳܜ)ᶃᶄᶅᶆ
࣍ (2/2)66. DynamoDB͔ΒItemΛಡΈग़ͦ͏7. API GatewayͰWebAPIΛ࡞Ζ͏8. Web্ͰάϥϑΛදࣔ͠Α͏9. ޙย͚Λ͠Α͏ᶈ ᶉ ᶊᶋ
ϋϯζΦϯΛਐΊΔ্Ͱͷҙ7• ηογϣϯதʹ࣭ͳͲ͋Γ·ͨ͠ΒZoomͷνϟοτͰ͓ئ͍͠·͢• ΦϯϥΠϯͳͷͰղܾ͕͍͠Մೳੑ͋Γ·͕͢ɺળॲ͠·͢• ηογϣϯޙͷTwitterDiscordͰͷ࣭ܴ͝͠·͢
ϋϯζΦϯΛਐΊΔ্Ͱͷҙ8• ૢ࡞ϛεʹΑΔAWSྉۚͷ૿Ճʹ͝ҙ͍ͩ͘͞ɻ(ࣗݾͰ͓ئ͍͠·͢)• Lambda FunctionͷίʔυΛม͑ͯແݶϧʔϓͤ͞ͳ͍• mockmockͷઃఆΛม͑ͯɺىಈ࣌ؒΛԆ͞ͳ͍
01CloudFormationͰΠϯϑϥҰࣜΛϓϩϏδϣχϯά͠Α͏
AWSʹϩάΠϯ10https://aws.amazon.com/jp/ ΞΫηε ΫϦοΫ
AWSʹϩάΠϯ11ೖྗΫϦοΫೖྗΫϦοΫ
CloudFormationͷը໘Ҡಈ12ʮcloudformationʯͱೖྗΫϦοΫҙ: ʮ౦ژʯ͕બ͞Ε͍ͯΔ͜ͱΛ֬͝ೝ͍ͩ͘͞
ʮελοΫͷ࡞ʯҠಈ13ΫϦοΫ
ʮελοΫͷ࡞ʯҠಈ ※ελοΫͷҰཡ͕දࣔ͞Εͨ߹14ΫϦοΫ
ελοΫͷ࡞15ΫϦοΫΫϦοΫhttps://swest22-session-s2c.s3-ap-northeast-1.amazonaws.com/out.yamlͱೖྗ ※ޙ΄ͲZoomͰڞ༗͠·͢ΫϦοΫ
ελοΫͷ࡞16ΫϦοΫʮSWEST22ʯͱೖྗ ※ҙͷ໊લͰOK
ελοΫͷ࡞17ΫϦοΫ
ελοΫͷ࡞18ΫϦοΫ3ͭͱνΣοΫ
ελοΫͷ࡞19ʮCREATE_COMPLETEʯʹͳͬͨΒ࡞ྃΫϦοΫ͞·͟·ͳαʔϏεͷϦιʔε͕࡞͞Ε͍ͯΔ
!ຊͷߏங࡞ۀͷ9ׂ͕ྃʂ
Կ͕ى͔ͬͨ͜ʁ21ελοΫͷ࡞ը໘Ͱೖྗͨ͠URLʹςϯϓϨʔτ(Ϋϥυߏͷઃܭਤ)͕هड़͞Ε͍ͯΔΫϦοΫ
ઃܭਤʹج͖ͮɺAWSͷϦιʔε͕ߏங22ߏஙྃ
ޙͰ͏ͷͰϝϞ͍ͯͩ͘͠͞23ελοΫͷ࡞ը໘Ͱೖྗͨ͠URLʹςϯϓϨʔτ(Ϋϥυߏͷઃܭਤ)͕هड़͞Ε͍ͯΔΫϦοΫϝϞ·ͨϦϯΫΛΫϦοΫͯ͠ผλϒͰ։͘ɺͰOK
02Lambda͔ΒDiscordʹϝοηʔδΛૹ৴͠Α͏
ରͱͳΔαʔϏε25
DiscordνϟϯωϧʹࢀՃ͍ͩ͘͞26͜ͷޙɺটϦϯΫΛZoomʹͯڞ༗͠·͢
Lambdaͷը໘Ҡಈ27ΫϦοΫʮlambdaʯͱೖྗ͠ɺදࣔ͞ΕΔ߲ΛΫϦοΫ
Lambdaؔͷը໘Ҡಈ28ʮSWEST22-NotifyTemperatureFunction-xxxxʯΛΫϦοΫ
LambdaؔΛҰ෦ฤू29Λ͜ͷޙZoomͰڞ༗͢ΔURLͰஔ͖͑Λҙͷ໊લͰஔ͖͑※ૹ৴ݩΛ۠ผ͢Δͷ͕తͳͷͰҙͷ໊લͰOKͰ͢
LambdaؔΛςετ30ΫϦοΫઌʹΫϦοΫ
LambdaؔΛςετ31ʮtemperatureʯͱೖྗ ※ҙͷ໊લͰOK͜ͷΑ͏ʹमਖ਼ΫϦοΫ
LambdaؔΛςετ32ΫϦοΫ
03IoT CoreͱLambdaͷଓΛ֬ೝ͠Α͏
ରͱͳΔαʔϏε34
IoT Coreͷը໘Ҡಈ35ΫϦοΫʮiot coreʯͱೖྗ͠ɺදࣔ͞ΕΔ߲ΛΫϦοΫ
ʮϧʔϧʯҠಈ36ΫϦοΫ
IoT Core→LambdaͷϧʔϧΛ֬ೝ37ΫϦοΫ
IoT Core→LambdaͷϧʔϧΛ֬ೝ38ૹ৴͞ΕͨJSONͷvalueΩʔͷ͕30Λ͑ͨ߹ʹɺLambdavalueΛ௨
IoT Core→DynamoDBͷϧʔϧΛ֬ೝ39ΫϦοΫ
IoT Core→DynamoDBͷϧʔϧΛ֬ೝ40ΫϦοΫૹ৴͞ΕͨτϐοΫ໊ͷͷ୯ޠ͓ΑͼJSONͷtimestampͱvalueΛDynamoDB௨
04mockmockΛͬͯσʔλΛૹͬͯΈΑ͏
ରͱͳΔαʔϏε42
ʮূ໌ॻʯҠಈ43ΫϦοΫ
IoT Coreͱͷೝূʹ͏ূ໌ॻΛ࡞44ΫϦοΫ
IoT Coreͱͷೝূʹ͏ূ໌ॻΛ࡞45ΫϦοΫ
IoT Coreͱͷೝূʹ͏ূ໌ॻΛμϯϩʔυ463ϑΝΠϧͱμϯϩʔυΫϦοΫ
IoT Coreͱͷೝূʹ͏ূ໌ॻΛμϯϩʔυ47ผλϒͰ։͘
IoT Coreͱͷೝূʹ͏ূ໌ॻΛμϯϩʔυ48ϦϯΫઌΛอଘ
IoT Coreͱͷೝূʹ͏ূ໌ॻΛμϯϩʔυ49ΫϦοΫ
IoT Coreͱͷೝূʹ͏ূ໌ॻΛʹϙϦγʔΛΞλον51ΫϦοΫΫϦοΫ
ઃఆҠಈ52ΫϦοΫ
ΤϯυϙΠϯτΛ֬ೝ53ΫϦοΫޙͰ͏ͷͰϝϞ͓ͯ͘͠
mockmockͷίϯιʔϧʹϩάΠϯ54https://console.mock-mock.com/users/sign_in ΞΫηε͠ɺϩάΠϯ
ʮϓϩδΣΫτΛίϐʔʯҠಈ55ΫϦοΫ
ϓϩδΣΫτΛίϐʔ56ΫϦοΫબΫϦοΫ
ϓϩδΣΫτ࡞57ʮૹ৴ઌϗετʯΛઌͷखॱͰ֬ೝͨ͠ʮΤϯυϙΠϯτʯʹมߋઌͷखॱͰμϯϩʔυͨ͠ূ໌ॻϑΝΠϧ(֦ுࢠ͕crt)ΛબઌͷखॱͰμϯϩʔυͨ͠ൿີ伴ϑΝΠϧ(ඌ͕private.pem.key)ΛબઌͷखॱͰμϯϩʔυͨ͠ʮAmazonRootCA1.pemʯΛબΫϦοΫ
mock࡞58ΫϦοΫΫϦοΫ
mock࡞59ΫϦοΫʮ0A-001ʯͱೖྗ※ҙͷจࣈྻͰOKʮ1ʯͱೖྗ※ҙͷจࣈྻͰOK
mockىಈ60ʮૢ࡞ʯ→ʮىಈʯΛΫϦοΫ
DynamoDBͷը໘Ҡಈ61ΫϦοΫʮdynamoʯͱೖྗ͠ɺදࣔ͞ΕΔ߲ΛΫϦοΫ
TemperatureςʔϒϧҠಈ62ΫϦοΫΫϦοΫ
mock͔Βૹ৴͞ΕͨσʔλΛ֬ೝ63ૹ৴͞Εͨσʔλ͕ॻ͖ࠐ·Ε͍ͯΔ
6405ٳܜ࣌ؒͰ͢(༧ఆ࣌ؒ10)͜͜·Ͱͷײ࣭ΛͥͻTwitterͰͭͿ͖·͠ΐ͏ʂϋογϡλά: #SWEST22_s2c
06DynamoDB͔ΒItemΛಡΈग़ͦ͏
ରͱͳΔαʔϏε66
Lambdaͷը໘Ҡಈ67ΫϦοΫʮlambdaʯͱೖྗ͠ɺදࣔ͞ΕΔ߲ΛΫϦοΫ
Lambdaؔͷը໘Ҡಈ68ʮSWEST22-FetchTemperatureFunction-xxxxʯΛΫϦοΫ
LambdaؔͷϓϩάϥϜ69DynamoDB͔Βࢦఆͨ͠idͷItemΛऔಘऔಘͨ͠ItemΛJSONͰฦ٫औಘͨ͠Item͔Βཉ͍͠ΩʔΛൈ͖ग़͢
LambdaؔΛςετ70ΫϦοΫઌʹΫϦοΫ
LambdaؔΛςετ71ʮtestʯͱೖྗ ※ҙͷ໊લͰOK͜ͷΑ͏ʹमਖ਼※mockmockͰೖྗͨ͠serial_numberʹ߹Θ͍ͤͯͩ͘͞ΫϦοΫ
LambdaؔΛςετ72ΫϦοΫLambedaؔͷฦΓ͕දࣔ͞ΕΔ
07API GatewayͰWebAPIΛ࡞Ζ͏
ରͱͳΔαʔϏε74
API Gatewayͷը໘Ҡಈ75ΫϦοΫʮapiʯͱೖྗ͠ɺදࣔ͞ΕΔ߲ΛΫϦοΫ
APIͷը໘Ҡಈ76ΫϦοΫ
APIͷϦιʔεͱΞΫγϣϯ77ΫϦοΫGET /temperature/{id}ͷϦΫΤετ͕SWEST22-FetchTemperatureFunctionʹඥ͚ΒΕ͍ͯΔ
APIͷςετ78ઌͷखॱͰϝϞͨ͠ApiURL + serial numberΞΫηε※ϝϞΛΕͨ߹CloudFormationͷग़ྗλϒͰ֬ೝ͕Ͱ͖·͢
APIͷςετ79DynamoDBʹอଘ͞Εͨσʔλ͕JSONܗࣜͰಡΈग़͞ΕΔ
08Web্ͰάϥϑΛදࣔ͠Α͏
ରͱͳΔαʔϏε81
දࣔ͢ΔϖʔδͷHTMLϑΝΠϧΛμϯϩʔυ82https://swest22-session-s2c.s3-ap-northeast-1.amazonaws.com/pages.zip
දࣔ͢ΔϖʔδͷHTMLϑΝΠϧΛमਖ਼83ઌఔμϯϩʔυͨ͠ZIPϑΝΠϧΛղౚ͠ʮindex.htmlʯΛΤσΟλͰ։͘32ߦͷʮʯΛApiURL + serial number Ͱஔ͖͑Δ
S3ͷը໘Ҡಈ84ΫϦοΫʮs3ʯͱೖྗ͠ɺදࣔ͞ΕΔ߲ΛΫϦοΫ
ެ։༻όέοτͷը໘Ҡಈ85ʮswest22-s3-bucket-ʯ͔Β࢝·ΔόέοτΛΫϦοΫ
HTMLϑΝΠϧΛΞοϓϩʔυ86ઌఔฤूͨ͠ʮindex.htmlʯΛυϥοάɾΞϯυɾυϩοϓ
HTMLϑΝΠϧΛΞοϓϩʔυ87ΫϦοΫ
ެ։༻ͷURLΛ֬ೝ88ΫϦοΫ
ެ։༻ͷURLΛ֬ೝ89ެ։༻ͷURL
ެ։༻ͷURLΛ֬ೝ90mockmock͔Βૹ৴ͨ͠σʔλ͕දࣔ͞ΕΔ
09ޙย͚Λ͠Α͏
S3ͷόέοτͷதΛۭʹ͢Δ92ΫϦοΫόέοτΛબ
IoT Coreͷը໘Ҡಈ93ΫϦοΫʮiot coreʯͱೖྗ͠ɺදࣔ͞ΕΔ߲ΛΫϦοΫ
ϙϦγʔΛআ94ΫϦοΫΫϦοΫ
CloudFormationͷը໘Ҡಈ95ΫϦοΫʮcloudformationʯͱೖྗ͠ɺදࣔ͞ΕΔ߲ΛΫϦοΫ
ελοΫΛআ96ελοΫΛબΫϦοΫ
!͓ർΕ͞·Ͱͨ͠ʂ