Pro Yearly is on sale from $80 to $50! »

元・組込みエンジニアが教えるAWSを使ったIoTシステムのバックエンド構築手順(第2部) - SWEST 22 セッションs2c

9ec05c5a1b9b0ce9cd53ec3a63838b9a?s=47 Y_uuu
August 21, 2020

元・組込みエンジニアが教えるAWSを使ったIoTシステムのバックエンド構築手順(第2部) - SWEST 22 セッションs2c

SWEST2日目 セッションS2Cにて発表。

AWS(Amazon Web Services)を使ってIoTシステムのバックエンドを構築するハンズオンです。

https://swest.toppers.jp/SWEST22/program/s2c.html#s2

※ 第1部、第3部は近日中に公開予定です。
※ 発表時点でP.49とP.50が重複していたためP.50を削除しています

9ec05c5a1b9b0ce9cd53ec3a63838b9a?s=128

Y_uuu

August 21, 2020
Tweet

Transcript

  1. ݩɾ૊ࠐΈΤϯδχΞ͕ڭ͑ΔAWSΛ࢖ͬͨ IoTγεςϜͷόοΫΤϯυߏஙखॱ - IoTγεςϜ։ൃϋϯζΦϯ - 2020-08-21(Fri) 10:00-11:10 SWEST 22 ηογϣϯS2

    ઌਐٕज़෦໳ IoTνʔϜ ΤϯδχΞ Ԭቌ ༤ฏ 1
  2. ຊηογϣϯͰ͓࿩͢Δ͜ͱ AWS͕͸͡Ίͯͷํ޲͚ʹɺAWSͷಛ௃΍ಋೖͷϝϦοτɺྉۚମܥͳͲΛ͝આ໌͠·͢ ୈ2෦: IoTγεςϜ։ൃϋϯζΦϯ AWSΛ࢖ͬͯIoTγεςϜͷόοΫΤϯυΛ։ൃ͢ΔखॱΛϋϯζΦϯܗࣜͰઆ໌͠·͢ɻ ࣮ࡍʹγεςϜΛߏங͢Δ͜ͱͰɺΫϥ΢υ্ͷγεςϜΛ؆୯ʹߏஙͰ͖Δ͜ͱ͕͓෼͔Γ͍͚ͨͩΔ ͸ͣͰ͢ɻ ୈ3෦: IoT։ൃʹ͓͚Δ૊ࠐΈΤϯδχΞͷՁ஋ ૊ࠐΈΤϯδχΞͷ࣋ͭͲͷΑ͏ͳεΩϧ͕IoT։ൃͰՁ஋Λൃش͢Δ͔ɺWebΤϯδχΞͷࢹ఺͔Β͝

    ঺հ͠·͢ɻ 2 ୈ1෦: ͸͡ΊͯͷAWS ͜Ε͔Βઆ໌
  3. ʮୈ2෦: IoTγεςϜ։ൃϋϯζΦϯʯͰߏங͢ΔγεςϜ 3 IoTࣄྫͰΑ͘ݟ͔͚Δɺ෦԰ͷԹ౓Λ؂ࢹɾՄࢹԽ͢ΔγεςϜΛ։ൃ͠·͢ɻ

  4. ʮୈ2෦: IoTγεςϜ։ൃϋϯζΦϯʯͰߏங͢ΔγεςϜ 4

  5. ໨࣍ (1/2) 5 1. CloudFormationͰΠϯϑϥҰࣜΛϓϩϏδϣχϯά͠Α͏ 2. Lambda͔ΒDiscordʹϝοηʔδΛૹ৴͠Α͏ 3. IoT CoreͱDynamoDBɾLambdaͷ઀ଓΛ֬ೝ͠Α͏

    4. mockmockΛ࢖ͬͯσʔλΛૹͬͯΈΑ͏ 5. (͜͜Ͱٳܜ) ᶃ ᶄ ᶅ ᶆ
  6. ໨࣍ (2/2) 6 6. DynamoDB͔ΒItemΛಡΈग़ͦ͏ 7. API GatewayͰWebAPIΛ࡞Ζ͏ 8. Web্ͰάϥϑΛදࣔ͠Α͏

    9. ޙย෇͚Λ͠Α͏ ᶈ ᶉ ᶊ ᶋ
  7. ϋϯζΦϯΛਐΊΔ্Ͱͷ஫ҙ 7 • ηογϣϯதʹ࣭໰ͳͲ͋Γ·ͨ͠ΒZoomͷνϟοτͰ͓ئ͍͠·͢ • ΦϯϥΠϯͳͷͰղܾ͕೉͍͠Մೳੑ΋͋Γ·͕͢ɺળॲ͠·͢ • ηογϣϯޙͷTwitter΍DiscordͰͷ࣭͝໰΋׻ܴ͠·͢

  8. ϋϯζΦϯΛਐΊΔ্Ͱͷ஫ҙ 8 • ૢ࡞ϛεʹΑΔAWSྉۚͷ૿Ճʹ͝஫ҙ͍ͩ͘͞ɻ(ࣗݾ੹೚Ͱ͓ئ͍͠·͢) • Lambda FunctionͷίʔυΛม͑ͯແݶϧʔϓͤ͞ͳ͍ • mockmockͷઃఆΛม͑ͯɺىಈ࣌ؒΛԆ͹͞ͳ͍

  9. 01 CloudFormationͰΠϯϑϥҰࣜΛ ϓϩϏδϣχϯά͠Α͏

  10. AWSʹϩάΠϯ 10 https://aws.amazon.com/jp/ ΁ΞΫηε ΫϦοΫ

  11. AWSʹϩάΠϯ 11 ೖྗ ΫϦοΫ ೖྗ ΫϦοΫ

  12. CloudFormationͷը໘΁Ҡಈ 12 ʮcloudformationʯͱೖྗ ΫϦοΫ ஫ҙ: ʮ౦ژʯ͕બ୒͞Ε͍ͯΔ͜ͱΛ ֬͝ೝ͍ͩ͘͞

  13. ʮελοΫͷ࡞੒ʯ΁Ҡಈ 13 ΫϦοΫ

  14. ʮελοΫͷ࡞੒ʯ΁Ҡಈ ※ελοΫͷҰཡ͕දࣔ͞Εͨ৔߹ 14 ΫϦοΫ

  15. ελοΫͷ࡞੒ 15 ΫϦοΫ ΫϦοΫ https://swest22-session-s2c.s3-ap-northeast-1.amazonaws.com/out.yaml ͱೖྗ ※ޙ΄ͲZoomͰ΋ڞ༗͠·͢ ΫϦοΫ

  16. ελοΫͷ࡞੒ 16 ΫϦοΫ ʮSWEST22ʯͱೖྗ ※೚ҙͷ໊લͰOK

  17. ελοΫͷ࡞੒ 17 ΫϦοΫ

  18. ελοΫͷ࡞੒ 18 ΫϦοΫ 3ͭͱ΋νΣοΫ

  19. ελοΫͷ࡞੒ 19 ʮCREATE_COMPLETEʯ ʹͳͬͨΒ࡞੒׬ྃ ΫϦοΫ ͞·͟·ͳαʔϏεͷ Ϧιʔε͕࡞੒͞Ε͍ͯΔ

  20. ! ຊ೔ͷߏங࡞ۀͷ9ׂ͕׬ྃʂ

  21. Կ͕ى͔ͬͨ͜ʁ 21 ελοΫͷ࡞੒ը໘Ͱೖྗͨ͠ URLʹςϯϓϨʔτ(Ϋϥ΢υߏ੒ ͷઃܭਤ)͕هड़͞Ε͍ͯΔ ΫϦοΫ

  22. ઃܭਤʹج͖ͮɺAWS಺ͷϦιʔε͕ߏங 22 ߏங׬ྃ

  23. ޙͰ࢖͏ͷͰϝϞ͍ͯͩ͘͠͞ 23 ελοΫͷ࡞੒ը໘Ͱೖྗͨ͠ URLʹςϯϓϨʔτ(Ϋϥ΢υߏ੒ ͷઃܭਤ)͕هड़͞Ε͍ͯΔ ΫϦοΫ ϝϞ·ͨ͸ϦϯΫΛΫϦοΫͯ͠ ผλϒͰ։͘ɺͰ΋OK

  24. 02 Lambda͔ΒDiscordʹ ϝοηʔδΛૹ৴͠Α͏

  25. ର৅ͱͳΔαʔϏε 25

  26. DiscordνϟϯωϧʹࢀՃ͍ͩ͘͞ 26 ͜ͷޙɺট଴ϦϯΫΛZoomʹͯڞ༗͠·͢

  27. Lambdaͷը໘΁Ҡಈ 27 ΫϦοΫ ʮlambdaʯͱೖྗ͠ɺදࣔ͞ΕΔ ߲໨ΛΫϦοΫ

  28. Lambdaؔ਺ͷը໘΁Ҡಈ 28 ʮSWEST22-NotifyTemperatureFunction-xxxxʯ ΛΫϦοΫ

  29. Lambdaؔ਺ΛҰ෦ฤू 29 <WEBHOOK URL>Λ ͜ͷޙZoomͰڞ༗͢ΔURLͰஔ͖׵͑ <NAME>Λ೚ҙͷ໊લͰஔ͖׵͑ ※ૹ৴ݩΛ۠ผ͢Δͷ͕໨తͳͷͰ೚ҙͷ໊લͰOKͰ͢

  30. Lambdaؔ਺Λςετ 30 ΫϦοΫ ઌʹΫϦοΫ

  31. Lambdaؔ਺Λςετ 31 ʮtemperatureʯͱೖྗ ※೚ҙͷ໊લͰOK ͜ͷΑ͏ʹमਖ਼ ΫϦοΫ

  32. Lambdaؔ਺Λςετ 32 ΫϦοΫ

  33. 03 IoT CoreͱLambdaͷ઀ଓΛ ֬ೝ͠Α͏

  34. ର৅ͱͳΔαʔϏε 34

  35. IoT Coreͷը໘΁Ҡಈ 35 ΫϦοΫ ʮiot coreʯͱೖྗ͠ɺදࣔ͞ΕΔ ߲໨ΛΫϦοΫ

  36. ʮϧʔϧʯ΁Ҡಈ 36 ΫϦοΫ

  37. IoT Core→LambdaͷϧʔϧΛ֬ೝ 37 ΫϦοΫ

  38. IoT Core→LambdaͷϧʔϧΛ֬ೝ 38 ૹ৴͞ΕͨJSONͷvalueΩʔͷ஋͕30Λ௒͑ͨ৔߹ʹɺ Lambda΁valueΛ௨஌

  39. IoT Core→DynamoDBͷϧʔϧΛ֬ೝ 39 ΫϦοΫ

  40. IoT Core→DynamoDBͷϧʔϧΛ֬ೝ 40 ΫϦοΫ ૹ৴͞ΕͨτϐοΫ໊ͷ຤୺ͷ୯ޠ͓Αͼ JSONͷtimestampͱvalueΛDynamoDB΁௨஌

  41. 04 mockmockΛ࢖ͬͯ σʔλΛૹͬͯΈΑ͏

  42. ର৅ͱͳΔαʔϏε 42

  43. ʮূ໌ॻʯ΁Ҡಈ 43 ΫϦοΫ

  44. IoT Coreͱͷೝূʹ࢖͏ূ໌ॻΛ࡞੒ 44 ΫϦοΫ

  45. IoT Coreͱͷೝূʹ࢖͏ূ໌ॻΛ࡞੒ 45 ΫϦοΫ

  46. IoT Coreͱͷೝূʹ࢖͏ূ໌ॻΛμ΢ϯϩʔυ 46 3ϑΝΠϧͱ΋ μ΢ϯϩʔυ ΫϦοΫ

  47. IoT Coreͱͷೝূʹ࢖͏ূ໌ॻΛμ΢ϯϩʔυ 47 ผλϒͰ։͘

  48. IoT Coreͱͷೝূʹ࢖͏ূ໌ॻΛμ΢ϯϩʔυ 48 ϦϯΫઌΛอଘ

  49. IoT Coreͱͷೝূʹ࢖͏ূ໌ॻΛμ΢ϯϩʔυ 49 ΫϦοΫ

  50. IoT Coreͱͷೝূʹ࢖͏ূ໌ॻΛʹϙϦγʔΛΞλον 51 ΫϦοΫ ΫϦοΫ

  51. ઃఆ΁Ҡಈ 52 ΫϦοΫ

  52. ΤϯυϙΠϯτΛ֬ೝ 53 ΫϦοΫ ޙͰ࢖͏ͷͰϝϞ͓ͯ͘͠

  53. mockmockͷίϯιʔϧʹϩάΠϯ 54 https://console.mock-mock.com/users/sign_in ΁ΞΫηε͠ɺϩάΠϯ

  54. ʮϓϩδΣΫτΛίϐʔʯ΁Ҡಈ 55 ΫϦοΫ

  55. ϓϩδΣΫτΛίϐʔ 56 ΫϦοΫ બ୒ ΫϦοΫ

  56. ϓϩδΣΫτ࡞੒ 57 ʮૹ৴ઌϗετʯΛઌͷखॱͰ֬ೝͨ͠ ʮΤϯυϙΠϯτʯʹมߋ ઌͷखॱͰμ΢ϯϩʔυͨ͠ ূ໌ॻϑΝΠϧ(֦ுࢠ͕crt)Λબ୒ ઌͷखॱͰμ΢ϯϩʔυͨ͠ ൿີ伴ϑΝΠϧ(຤ඌ͕private.pem.key) Λબ୒ ઌͷखॱͰμ΢ϯϩʔυͨ͠

    ʮAmazonRootCA1.pemʯΛબ୒ ΫϦοΫ
  57. mock࡞੒ 58 ΫϦοΫ ΫϦοΫ

  58. mock࡞੒ 59 ΫϦοΫ ʮ0A-001ʯͱೖྗ ※೚ҙͷจࣈྻͰOK ʮ1ʯͱೖྗ ※೚ҙͷจࣈྻͰOK

  59. mockىಈ 60 ʮૢ࡞ʯ→ʮىಈʯΛΫϦοΫ

  60. DynamoDBͷը໘΁Ҡಈ 61 ΫϦοΫ ʮdynamoʯͱೖྗ͠ɺදࣔ͞ΕΔ ߲໨ΛΫϦοΫ

  61. Temperatureςʔϒϧ΁Ҡಈ 62 ΫϦοΫ ΫϦοΫ

  62. mock͔Βૹ৴͞ΕͨσʔλΛ֬ೝ 63 ૹ৴͞Εͨσʔλ͕ॻ͖ࠐ·Ε͍ͯΔ

  63. 64 05 ٳܜ࣌ؒͰ͢(༧ఆ࣌ؒ10෼) ͜͜·Ͱͷײ૝΍࣭໰ΛͥͻTwitterͰͭͿ΍͖·͠ΐ͏ʂ ϋογϡλά: #SWEST22_s2c

  64. 06 DynamoDB͔ΒItemΛಡΈग़ͦ͏

  65. ର৅ͱͳΔαʔϏε 66

  66. Lambdaͷը໘΁Ҡಈ 67 ΫϦοΫ ʮlambdaʯͱೖྗ͠ɺදࣔ͞ΕΔ ߲໨ΛΫϦοΫ

  67. Lambdaؔ਺ͷը໘΁Ҡಈ 68 ʮSWEST22-FetchTemperatureFunction-xxxxʯ ΛΫϦοΫ

  68. Lambdaؔ਺ͷϓϩάϥϜ 69 DynamoDB͔Βࢦఆͨ͠idͷItemΛऔಘ औಘͨ͠ItemΛJSONͰฦ٫ औಘͨ͠Item͔Βཉ͍͠ΩʔΛൈ͖ग़͢

  69. Lambdaؔ਺Λςετ 70 ΫϦοΫ ઌʹΫϦοΫ

  70. Lambdaؔ਺Λςετ 71 ʮtestʯͱೖྗ ※೚ҙͷ໊લͰOK ͜ͷΑ͏ʹमਖ਼ ※mockmockͰೖྗͨ͠serial_numberʹ ߹Θ͍ͤͯͩ͘͞ ΫϦοΫ

  71. Lambdaؔ਺Λςετ 72 ΫϦοΫ Lambedaؔ਺ͷฦΓ஋͕දࣔ͞ΕΔ

  72. 07 API GatewayͰWebAPIΛ࡞Ζ͏

  73. ର৅ͱͳΔαʔϏε 74

  74. API Gatewayͷը໘΁Ҡಈ 75 ΫϦοΫ ʮapiʯͱೖྗ͠ɺදࣔ͞ΕΔ߲໨Λ ΫϦοΫ

  75. APIͷը໘΁Ҡಈ 76 ΫϦοΫ

  76. APIͷϦιʔεͱΞΫγϣϯ 77 ΫϦοΫ GET /temperature/{id} ΁ͷϦΫΤετ͕ SWEST22- FetchTemperatureFunction ʹඥ෇͚ΒΕ͍ͯΔ

  77. APIͷςετ 78 ઌͷखॱͰϝϞͨ͠ApiURL + serial number΁ΞΫηε ※ϝϞΛ๨Εͨ৔߹͸CloudFormationͷ ग़ྗλϒͰ֬ೝ͕Ͱ͖·͢

  78. APIͷςετ 79 DynamoDBʹอଘ͞Εͨσʔλ͕ JSONܗࣜͰಡΈग़͞ΕΔ

  79. 08 Web্ͰάϥϑΛදࣔ͠Α͏

  80. ର৅ͱͳΔαʔϏε 81

  81. දࣔ͢ΔϖʔδͷHTMLϑΝΠϧΛμ΢ϯϩʔυ 82 https://swest22-session-s2c.s3-ap-northeast-1.amazonaws.com/pages.zip

  82. දࣔ͢ΔϖʔδͷHTMLϑΝΠϧΛमਖ਼ 83 ઌఔμ΢ϯϩʔυͨ͠ZIPϑΝΠϧΛղౚ͠ ʮindex.htmlʯΛΤσΟλͰ։͘ 32ߦ໨ͷʮ<API URL>ʯΛ ApiURL + serial number

    Ͱஔ͖׵͑Δ
  83. S3ͷը໘΁Ҡಈ 84 ΫϦοΫ ʮs3ʯͱೖྗ͠ɺ දࣔ͞ΕΔ߲໨ΛΫϦοΫ

  84. ެ։༻όέοτͷը໘΁Ҡಈ 85 ʮswest22-s3-bucket-ʯ͔Β࢝·ΔόέοτΛΫϦοΫ

  85. HTMLϑΝΠϧΛΞοϓϩʔυ 86 ઌఔฤूͨ͠ʮindex.htmlʯΛ υϥοάɾΞϯυɾυϩοϓ

  86. HTMLϑΝΠϧΛΞοϓϩʔυ 87 ΫϦοΫ

  87. ެ։༻ͷURLΛ֬ೝ 88 ΫϦοΫ

  88. ެ։༻ͷURLΛ֬ೝ 89 ެ։༻ͷURL

  89. ެ։༻ͷURLΛ֬ೝ 90 mockmock͔Βૹ৴ͨ͠ σʔλ͕දࣔ͞ΕΔ

  90. 09 ޙย෇͚Λ͠Α͏

  91. S3ͷόέοτͷத਎Λۭʹ͢Δ 92 ΫϦοΫ όέοτΛબ୒

  92. IoT Coreͷը໘΁Ҡಈ 93 ΫϦοΫ ʮiot coreʯͱೖྗ͠ɺදࣔ͞ΕΔ ߲໨ΛΫϦοΫ

  93. ϙϦγʔΛ࡟আ 94 ΫϦοΫ ΫϦοΫ

  94. CloudFormationͷը໘΁Ҡಈ 95 ΫϦοΫ ʮcloudformationʯͱೖྗ͠ɺ දࣔ͞ΕΔ߲໨ΛΫϦοΫ

  95. ελοΫΛ࡟আ 96 ελοΫΛબ୒ ΫϦοΫ

  96. ! ͓ർΕ͞·Ͱͨ͠ʂ