Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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を削除しています

Y_uuu

August 21, 2020
Tweet

More Decks by Y_uuu

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

  3. ʮୈ2෦: IoTγεςϜ։ൃϋϯζΦϯʯͰߏங͢ΔγεςϜ
    3
    IoTࣄྫͰΑ͘ݟ͔͚Δɺ෦԰ͷԹ౓Λ؂ࢹɾՄࢹԽ͢ΔγεςϜΛ։ൃ͠·͢ɻ

    View Slide

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

    View Slide

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




    View Slide

  6. ໨࣍ (2/2)
    6
    6. DynamoDB͔ΒItemΛಡΈग़ͦ͏
    7. API GatewayͰWebAPIΛ࡞Ζ͏
    8. Web্ͰάϥϑΛදࣔ͠Α͏
    9. ޙย෇͚Λ͠Α͏
    ᶈ ᶉ ᶊ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  57. mock࡞੒
    58
    ΫϦοΫ
    ΫϦοΫ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  72. 07
    API GatewayͰWebAPIΛ࡞Ζ͏

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  90. 09
    ޙย෇͚Λ͠Α͏

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide