サーバレス × フルマネージド × SaaS連携 での認証・決済付きライブ配信サービス構築

74cec195bfb6cb5165256d88cb7fcf0f?s=47 Kazuki Miura
November 02, 2019

サーバレス × フルマネージド × SaaS連携 での認証・決済付きライブ配信サービス構築

・勉強不足のためLinuxとかEC2とかLBとかよくわからなかった
・短期間で構築する必要があった
・数日間しか使わないサービスだった
・認証・決済は必須だったけど、自分では無理だった

上記の理由のため、結果的にタイトルのような構成でライブ配信サービスを構築してみましたので、どんな感じでやったのかをお話したいと思います。

https://jft2019.jaws-ug.jp/session/484/

#jft2019

74cec195bfb6cb5165256d88cb7fcf0f?s=128

Kazuki Miura

November 02, 2019
Tweet

Transcript

  1. KBXTVHKGUKGU@D αʔόϨε ༗ྉϥΠϒ഑৴αʔϏεߏங ϑϧϚωʔδυ 4BB4࿈ܞ × × ೝূɾܾࡁ  ̏೔ؒͰ࢖͍ࣺͯʂ

  2. KBXTVHKGUKGU@D πΠʔτ͠Α͏ʂ KBXTVH KGU KGU@D

  3. KBXTVHKGUKGU@D *".

  4. KBXTVHKGUKGU@D ࡾӜҰथ ίϯςϯπϏδωεہωοτσδλϧࣄۀ෦ ݉ฤ੒ہฤ੒෦ ٕ݉ज़ہ์ૹɾ*5γεςϜ෦ +"846(ࡳຈ .FEJB+"84 +1@4USJQFTࡳຈ ίϛϡχςΟӡӦ

  5. KBXTVHKGUKGU@D ΤϯδχΞϦϯάͰ ίϯςϯπΛ ̍ਓ̍ਓʹಧ͚͍ͨ

  6. KBXTVHKGUKGU@D 5PEBZ`TUIFNF

  7. KBXTVHKGUKGU@D

  8. KBXTVHKGUKGU@D ΍ͬͯΈΑ͏ʂ

  9. KBXTVHKGUKGU@D ԿΛ΍ͬͨͷ͔

  10. KBXTVHKGUKGU@D

  11. KBXTVHKGUKGU@D ˟儗꟦כ✮㹀דׅկ鿪さח״׶㢌刿ׅ׷㜥さָ֮׶תֿׅ ה✮׭׀✪䪫ֻ׌ְׁկ  ꆃ 㕼 傈  Ꟛ㜥⳿䏄ـ٦أꟚ䏄 ىصٓ؎ـװ⳿䏄13ة؎يזו

    ⼯⵸⚥ַ׵嚂׃ְ؎كٝز׾׋ֻׁ׿׀欽䠐׃גת ׅԒ  ً؎ٝ؎كٝز儎ך鿇 ؔ٦فصؚٝإٌٖص٦⳿怴罏ز٦ؙءّ٦ չ痥㔐וֲדى٦颣պ涪邌խקַ  ؜أز،٦ذ؍أز-*7&ىص⟰歗갫♶ず ཁ݅ ʻனͷ෦ʼΛର৅ ̏೔ؒ ̎࣌ؒͣͭ ༗ྉϥΠϒ഑৴ ΞʔΧΠϒແ͠ ̍ສਓདྷͯ΋଱͑ΒΕΔ
  12. KBXTVHKGUKGU@D αʔόʁ%#ʁ ษڧ͢Δ͔

  13. KBXTVHKGUKGU@D ̍೥͘Β͍લ

  14. KBXTVHKGUKGU@D &$ָ͘͠ͳ͔ͬͨɻɻɻ ͜ΕΛ࠷ޙʹ৮ͬͯͳ͍

  15. KBXTVHKGUKGU@D %#͸Կʹ࢖͏ͷ͔Θ͔Βͳ͍ɻɻ 42-͸#JH2VFSZ͕ॳ

  16. KBXTVHKGUKGU@D ඞཁͳ΋ͷ͚ͩ΍Γ͍ͨ

  17. KBXTVHKGUKGU@D αʔόϨε ϑϧϚωʔδυ 4BB4࿈ܞ × ×

  18. KBXTVHKGUKGU@D HTB ओௐ੔ࣨ Direct Connect MediaLive MediaPackage CloudFront VPC DRM

    SaaS Users Πϕϯτձ৔ json XML octet-stream CloudFront S3 Lambda API Gateway Lambda Proxy Lambda API Gateway Elements Lambda API Gateway Route 53 ACM Secrets Manager தܧं ߪೖঢ়ଶ֬ೝ Lock iOS༻ ϦΫΤετ
  19. KBXTVHKGUKGU@D HTB ओௐ੔ࣨ Direct Connect MediaLive MediaPackage CloudFront VPC DRM

    SaaS Users Πϕϯτձ৔ json XML octet-stream CloudFront S3 Lambda API Gateway Lambda Proxy Lambda API Gateway Elements Lambda API Gateway Route 53 ACM Secrets Manager தܧं ߪೖঢ়ଶ֬ೝ Lock ͜͜΄΅ίϐϖ άάΕ͹ͳΜͱ͔ͳΔ /P$PEF -PX$PEF iOS༻ ϦΫΤετ
  20. KBXTVHKGUKGU@D ʮTJUFEFWDMBTTNFUIPEKQ\αʔϏε໊^ʯ υϝΠϯࢦఆݕࡧʂ ޿ࠂ΋ग़ͯ͜ͳ͍͠Φεεϝʂ

  21. KBXTVHKGUKGU@D AWS Elemental MediaLive VPC Input AWS Elemental MediaPackage CloudFront

    VPC ಈ࡞֬ೝ༻MP4 Amazon S3 AWS Elemental MediaLive CloudFront YouTube ςετ࠶ੜϖʔδ ຊ൪࠶ੜϖʔδ ίϯςϯπID Λར༻ͨ͠ ෆਖ਼Ξοϓϩʔυରࡦ DRM SaaS ߪೖલͷςετ࠶ੜ ຊ൪࠶ੜ όοΫΞοϓ ෆਖ਼ରࡦ .1&(%"4))-4
  22. KBXTVHKGUKGU@D ࠶ੜຖʹ DRM֬ೝ Lambda Proxy Lambda API Gateway Endpoint SPA

    s3 AWS Secrets Manager Key/token ֨ೲ API Gateway Lambda API Gateway Endpoint API Gateway ܾࡁ࣌ ॻ͖ࠐΈ ಡΈࠐΈ user_metadata ܾࡁ Lock checkSession() DRM SaaS json XML octet-stream API Gateway Endpoint API Gateway iOS ࢖͑ͳ͍໰୊
  23. KBXTVHKGUKGU@D ࠶ੜຖʹ DRM֬ೝ Lambda Proxy Lambda API Gateway Endpoint SPA

    s3 API Gateway DRM SaaS json XML octet-stream %3.Ͱ෮߸ ϓϨΠϠʔ͔ΒͷΈ ࠶ੜՄೳ ࡞ͬͯ΋Β͍·ͨ͠ ͚ͩ͜͜ ײँʂʂ
  24. KBXTVHKGUKGU@D SPA s3 AWS Secrets Manager Key/token ֨ೲ API Gateway

    Lambda API Gateway Endpoint ܾࡁ࣌ ॻ͖ࠐΈ ಡΈࠐΈ user_metadata ܾࡁ Lock checkSession() ܾࡁɾೝূ ̍ͭͷ-BNCEBʹ ٧ΊࠐΈ͗͢
  25. KBXTVHKGUKGU@D ͜Ε J04ͩͱ͏͔͝ͳ͍

  26. KBXTVHKGUKGU@D ߪೖ൑ఆ͕Ͱ͖ͳ͍

  27. KBXTVHKGUKGU@D J04͸ແࢹͰ͖ͳ͍

  28. KBXTVHKGUKGU@D -BNCEB૿΍ͦ͏

  29. KBXTVHKGUKGU@D SPA s3 ಡΈࠐΈ user_metadata Lock checkSession() API Gateway Endpoint

    API Gateway iOS ࢖͑ͳ͍໰୊ ߪೖ৘ใ͕ ը໘ʹ൓ө͞Ε ͳ͍ ্ݶ؇࿨ ௨Δ͔͋΍͍͠
  30. KBXTVHKGUKGU@D SPA s3 ಡΈࠐΈ user_metadata Lock checkSession() API Gateway Endpoint

    API Gateway iOS ࢖͑ͳ͍໰୊ ($1 $MPVE'VODUJPOT Cloud Functions ೦ͷͨΊ ݁Ռ ্ݶ؇࿨௨ͬͨ ະ࢖༻
  31. KBXTVHKGUKGU@D HTB ओௐ੔ࣨ Direct Connect MediaLive MediaPackage CloudFront VPC DRM

    SaaS Users Πϕϯτձ৔ json XML octet-stream CloudFront S3 Lambda API Gateway Lambda Proxy Lambda API Gateway Elements Lambda API Gateway iOS༻ ϦΫΤετ Route 53 ACM Secrets Manager தܧं ߪೖঢ়ଶ֬ೝ Lock
  32. KBXTVHKGUKGU@D ظؒ͸ͲΕ͘Β͍ʁ

  33. KBXTVHKGUKGU@D ̍ϲ݄͘Β͍

  34. KBXTVHKGUKGU@D ɾXௐࠪ ɾX࣮૷ɾ୯ମ ɾX࣮૷ɾ݁߹ ɾX֤छςετ ɾXυΩυΩͷϦϦʔε

  35. KBXTVHKGUKGU@D ݄ Ր ਫ ໦ ۚ ౔ ೔ 9/2 9/3

    9/4 9/5 9/6 9/7 9/8 ٳ ٳ 9/9 9/10 9/11 9/12 9/13 9/14 9/15 ٳ 9/16(ॕ) 9/17 9/18 9/19 9/20 9/21 9/22 ٳ 9/23(ॕ) 9/24 9/25 9/26 9/27 9/28 9/29 ٳ 9/30 10/1 10/2 10/3 10/4 10/5 10/6 ࠂ஌ ϦϦʔε ຊ൪ᶃ ຊ൪ᶄ ຊ൪ᶅ ௐࠪɾυΩϡϝϯτಡΜͰ৮ͬͯΈΔ ࣮૷ɾ୯ମςετ ࣮૷ɾ݁߹ςετ ࣾ಺εςʔδϯάςετɾमਖ਼ νΣοΫ νΣοΫ νΣοΫ όοΫΞοϓߏங
  36. KBXTVHKGUKGU@D ݄ Ր ਫ ໦ ۚ ౔ ೔ 9/2 9/3

    9/4 9/5 9/6 9/7 9/8 ٳ ٳ 9/9 9/10 9/11 9/12 9/13 9/14 9/15 ٳ 9/16(ॕ) 9/17 9/18 9/19 9/20 9/21 9/22 ٳ 9/23(ॕ) 9/24 9/25 9/26 9/27 9/28 9/29 ٳ 9/30 10/1 10/2 10/3 10/4 10/5 10/6 ࠂ஌ ϦϦʔε ຊ൪ᶃ ຊ൪ᶄ ຊ൪ᶅ ௐࠪɾυΩϡϝϯτಡΜͰ৮ͬͯΈΔ ࣮૷ɾ୯ମςετ ࣮૷ɾ݁߹ςετ ࣾ಺εςʔδϯάςετɾमਖ਼ νΣοΫ νΣοΫ νΣοΫ όοΫΞοϓߏங νΣοΫ ग़ ग़ ग़ ग़ ग़ ग़ ग़ ग़
  37. KBXTVHKGUKGU@D ԿਓͰ΍ͬͨͷʁ

  38. KBXTVHKGUKGU@D ࣾ಺ௐ੔ ໰߹ͤରԠ AWS A B ࢲ

  39. ৘γεͷͻͱ͕ɹ஥ؒʹɹ͘ΘΘͬͨʂ

  40. KBXTVHKGUKGU@D ࣾ಺ௐ੔ ໰߹ͤରԠ AWS A B ࢲ C

  41. σβΠϯͷͻͱ͕ɹ஥ؒʹɹ͘ΘΘͬͨʂ

  42. KBXTVHKGUKGU@D ࣾ಺ௐ੔ ໰߹ͤରԠ AWS A B ࢲ σβΠϯ C D

  43. KBXTVHKGUKGU@D ࣾ಺ςετڠྗ ΞΧ΢ϯτҎ্ʂ ͜Μͳʹଟ͘ͷਓʹॿ͚ͯ΋Β͑ΔͳΜͯ

  44. KBXTVHKGUKGU@D 2"ίϯαϧ "84ͱ"VUI ຊ౰ʹຊ౰ʹ͋Γ͕ͱ͏͍͟͝·ͨ͠

  45. KBXTVHKGUKGU@D ͓໰͍߹ΘͤରԠ

  46. KBXTVHKGUKGU@D SPA s3 AWS Secrets Manager Key/token ֨ೲ API Gateway

    Lambda API Gateway Endpoint ܾࡁ࣌ ॻ͖ࠐΈ ಡΈࠐΈ user_metadata ܾࡁ Lock checkSession() ങ͚ͬͨͲ ݟΕͳ͍ɻ खಈରԠ Ͱ͖Δ༷ʹ "VUIʹίϐϖ͢Ε͹͍͚ ΔςΩετΛ࡞ͬͯૹ৴ Ұ൪ࠔΔͷ͕
  47. KBXTVHKGUKGU@D ϑΟʔυόοΫϧʔϓ प͚ͩ͠·ͨ͠X

  48. KBXTVHKGUKGU@D ϓϦϖΠυܥ/( ͦͷ৔Ͱ2"௥Ճ ೖྗ࣌ͷςΩετ௥Ճ ιʔείʔυ৮͔ͬͯͨΒ ͦ͜ ܾࡁͰ໰͍߹Θͤ

  49. KBXTVHKGUKGU@D ͜Ε͕ɺᷚʹฉ͍͍ͯͨ %FW0QTʁ

  50. KBXTVHKGUKGU@D ࠓޙͷల๬

  51. KBXTVHKGUKGU@D )5#ͷશͯΛͭͳ͍͛ͨ

  52. KBXTVHKGUKGU@D IUCTIPQKQ &$ IUCDPKQ 70% IPEIUCDPKQ ࢹௌσʔλ 0" ϥΠϒ഑৴ ΦϑϥΠϯΠϕϯτ

    άοζγϣοϓ *%౷߹ ԣஅϨίϝϯυ
  53. KBXTVHKGUKGU@D ͜ͷωλ͜͢Γ·͢

  54. KBXTVHKGUKGU@D ΠγοτɾϰΝγϡϥδϟʔχ ࢯ ΞϚκϯ΢ΣϒαʔϏε ΤϯλʔϓϥΠζετϥςδετ ϑδςϨϏͷCloud StrategyʙNowˍFuture ʙ ۚ৿ ݈඙

    ࢯ גࣜձࣾϑδςϨϏδϣϯ ٕज़ہ ܭը෦ σεΫ୲౰෦௕ αʔόϨεΞʔΩςΫνϟʹΑΔ༗ྉϥΠϒ ഑৴αʔϏεͷߏங ࡾӜ Ұथ ࢯ ๺ւಓςϨϏ์ૹגࣜձࣾʢHTBʣ ίϯςϯπϏδωεہ ωοτσδλϧࣄۀ ෦ U-NEXTͷϚϧνCDNઓུʹ͓͚Δ CloudFrontͷ׆༻ࣄྫͱɺࣗࣾ։ൃϑΝΠϧ సૹγεςϜʮSnowpumpʯͷ͝঺հ ֟ݩ ਸར ࢯ גࣜձࣾU-NEXT ࣄۀاը ୲౰෦௕ AlexaʹΑΔTVࢹௌͷະདྷ # SP-142 ! 11݄14೔ʢ໦ʣ ! 13:00ʙ15:00 " ʮࠃࡍձٞࣨʯ ϝσΟΞۀքʹ͓͚ΔΫϥ΢υ׆༻࠷৽ࣄྫ 2019 Ϋϥ΢υ͕Մೳʹ͢ΔϝσΟΞۀքͷΠϊϕ ʔγϣϯ ΠγοτɾϰΝγϡϥδϟʔχ ࢯ ΞϚκϯ΢ΣϒαʔϏε ΤϯλʔϓϥΠζετϥςδετ ϑδςϨϏͷCloud StrategyʙNowˍFuture ʙ ۚ৿ ݈඙ ࢯ גࣜձࣾϑδςϨϏδϣϯ ٕज़ہ ܭը෦ σεΫ୲౰෦௕ αʔόϨεΞʔΩςΫνϟʹΑΔ༗ྉϥΠϒ ഑৴αʔϏεͷߏங ࡾӜ Ұथ ࢯ ๺ւಓςϨϏ์ૹגࣜձࣾʢHTBʣ ίϯςϯπϏδωεہ ωοτσδλϧࣄۀ ෦ ೔ӳಉ࣌௨༁෇ " # EN ٕज़ہ ܭը෦ σεΫ୲౰෦௕ αʔόϨεΞʔΩςΫνϟʹΑΔ༗ྉϥΠϒ ഑৴αʔϏεͷߏங ࡾӜ Ұथ ࢯ ๺ւಓςϨϏ์ૹגࣜձࣾʢHTBʣ ίϯςϯπϏδωεہ ωοτσδλϧࣄۀ ෦ U-NEXTͷϚϧνCDNઓུʹ͓͚Δ CloudFrontͷ׆༻ࣄྫͱɺࣗࣾ։ൃϑΝΠϧ సૹγεςϜʮSnowpumpʯͷ͝঺հ ֟ݩ ਸར ࢯ גࣜձࣾU-NEXT ࣄۀاը ୲౰෦௕ AlexaʹΑΔTVࢹௌͷະདྷ ๺ഭ ਗ਼܇ ࢯ ΞϚκϯδϟύϯ߹ಉձࣾ ΞϨΫαϏδωε౷ׅຊ෦ɹ ٕज़ຊ෦ɹຊ ෦௕/ϓϦϯγύϧιϦϡʔγϣϯΞʔΩς Ϋτ Ϋϥ΢υϝσΟΞϫʔΫϩʔυ࠷৽ࣄྫ ۚ໨ɹ݈ೋ ࢯ ΞϚκϯ΢ΣϒαʔϏεδϟύϯגࣜձࣾ ιϦϡʔγϣϯΞʔΩςΫτ # *OUFS#&&Ͱ ొஃ͠·͢ʂ ์ૹۀք޲͚ ΧϯϑΝϨϯε !ນு
  55. KBXTVHKGUKGU@D ே̍ൃΊʂʂ 4FSWFSMFTTEBZT 5PLZP ָ͗ͯ͢͠ $G1ͩͪ͠Όͬͨ !෱Ԭ ! " ✔

    ✔ ✔ ✔ Tickets One Day. One Track. One Community Get Tickets 2019/11/02 13:05 1 / 1ϖʔδ Agenda ΧϯϑΝϨϯε͸12݄14೔(౔)ɺLINE FukuokaͰ։ ࠵͞Ε·͢ɻ ※λΠϜςʔϒϧ͸ௐ੔ͷՄೳੑ͕͋Γ·͢ Registration ͸͡Ίʹ / ॾઆ໌ 3೔ؒͰ࢖͍ࣺͯʂΠϕϯτ༻༗ྉϥ Πϒ഑৴αʔϏεͷߏங ࡾӜ Ұथ break Keynote Keisuke Nishitani (AWS) break B2Bاۀ͕CloudFunctionsͰC2C αʔϏεΛ্ཱͪ͛ͨ࿩ WATANABE KENICHIRO 08:00 09:00 09:10 09:50 10:00 10:40 10:45
  56. KBXTVHKGUKGU@D ΤϯδχΞϦϯάͰ ίϯςϯπΛ ̍ਓ̍ਓʹಧ͚͍ͨ

  57. KBXTVHKGUKGU@D Ҿ͖ଓ͖ษڧଓ͚·͢ JAWS-UGͳͲ Ͱձ͍·͠ΐ͏

  58. KBXTVHKGUKGU@D THANK YOU! Don't be concerned ! Think ! Just

    Do IT!