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

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

Kazuki Miura
November 02, 2019

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

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

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

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

#jft2019

Kazuki Miura

November 02, 2019
Tweet

More Decks by Kazuki Miura

Other Decks in Technology

Transcript

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

    ⼯⵸⚥ַ׵嚂׃ְ؎كٝز׾׋ֻׁ׿׀欽䠐׃גת ׅԒ  ً؎ٝ؎كٝز儎ך鿇 ؔ٦فصؚٝإٌٖص٦⳿怴罏ز٦ؙءّ٦ չ痥㔐וֲדى٦颣պ涪邌խקַ  ؜أز،٦ذ؍أز-*7&ىص⟰歗갫♶ず ཁ݅ ʻனͷ෦ʼΛର৅ ̏೔ؒ ̎࣌ؒͣͭ ༗ྉϥΠϒ഑৴ ΞʔΧΠϒແ͠ ̍ສਓདྷͯ΋଱͑ΒΕΔ
  2. 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༻ ϦΫΤετ
  3. 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༻ ϦΫΤετ
  4. 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
  5. 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 ࢖͑ͳ͍໰୊
  6. KBXTVHKGUKGU@D ࠶ੜຖʹ DRM֬ೝ Lambda Proxy Lambda API Gateway Endpoint SPA

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

    Lambda API Gateway Endpoint ܾࡁ࣌ ॻ͖ࠐΈ ಡΈࠐΈ user_metadata ܾࡁ Lock checkSession() ܾࡁɾೝূ ̍ͭͷ-BNCEBʹ ٧ΊࠐΈ͗͢
  8. KBXTVHKGUKGU@D SPA s3 ಡΈࠐΈ user_metadata Lock checkSession() API Gateway Endpoint

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

    API Gateway iOS ࢖͑ͳ͍໰୊ ($1 $MPVE'VODUJPOT Cloud Functions ೦ͷͨΊ ݁Ռ ্ݶ؇࿨௨ͬͨ ະ࢖༻
  10. 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
  11. 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 ࠂ஌ ϦϦʔε ຊ൪ᶃ ຊ൪ᶄ ຊ൪ᶅ ௐࠪɾυΩϡϝϯτಡΜͰ৮ͬͯΈΔ ࣮૷ɾ୯ମςετ ࣮૷ɾ݁߹ςετ ࣾ಺εςʔδϯάςετɾमਖ਼ νΣοΫ νΣοΫ νΣοΫ όοΫΞοϓߏங
  12. 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 ࠂ஌ ϦϦʔε ຊ൪ᶃ ຊ൪ᶄ ຊ൪ᶅ ௐࠪɾυΩϡϝϯτಡΜͰ৮ͬͯΈΔ ࣮૷ɾ୯ମςετ ࣮૷ɾ݁߹ςετ ࣾ಺εςʔδϯάςετɾमਖ਼ νΣοΫ νΣοΫ νΣοΫ όοΫΞοϓߏங νΣοΫ ग़ ग़ ग़ ग़ ग़ ग़ ग़ ग़
  13. KBXTVHKGUKGU@D SPA s3 AWS Secrets Manager Key/token ֨ೲ API Gateway

    Lambda API Gateway Endpoint ܾࡁ࣌ ॻ͖ࠐΈ ಡΈࠐΈ user_metadata ܾࡁ Lock checkSession() ങ͚ͬͨͲ ݟΕͳ͍ɻ खಈରԠ Ͱ͖Δ༷ʹ "VUIʹίϐϖ͢Ε͹͍͚ ΔςΩετΛ࡞ͬͯૹ৴ Ұ൪ࠔΔͷ͕
  14. 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#&&Ͱ ొஃ͠·͢ʂ ์ૹۀք޲͚ ΧϯϑΝϨϯε !ນு
  15. 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