$30 off During Our Annual Pro Sale. View Details »

サーバレス × フルマネージド × 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
    αʔόϨε
    ༗ྉϥΠϒ഑৴αʔϏεߏங
    ϑϧϚωʔδυ
    4BB4࿈ܞ
    ×
    ×
    ೝূɾܾࡁ

    ̏೔ؒͰ࢖͍ࣺͯʂ

    View Slide

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

    View Slide

  3. KBXTVHKGUKGU@D
    *".

    View Slide

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

    View Slide

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

    View Slide

  6. KBXTVHKGUKGU@D
    5PEBZ`TUIFNF

    View Slide

  7. KBXTVHKGUKGU@D

    View Slide

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

    View Slide

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

    View Slide

  10. KBXTVHKGUKGU@D

    View Slide

  11. KBXTVHKGUKGU@D
    ˟儗꟦כ✮㹀דׅկ鿪さח״׶㢌刿ׅ׷㜥さָ֮׶תֿׅ
    ה✮׭׀✪䪫ֻ׌ְׁկ
    ꆃ 㕼 傈
    Ꟛ㜥⳿䏄ـ٦أꟚ䏄
    ىصٓ؎ـװ⳿䏄13ة؎يזו
    ⼯⵸⚥ַ׵嚂׃ְ؎كٝز׾׋ֻׁ׿׀欽䠐׃גת
    ׅԒ
    ً؎ٝ؎كٝز儎ך鿇
    ؔ٦فصؚٝإٌٖص٦⳿怴罏ز٦ؙءّ٦
    չ痥㔐וֲדى٦颣պ涪邌խקַ
    ؜أز،٦ذ؍أز-*7&ىص⟰歗갫♶ず
    ཁ݅
    ʻனͷ෦ʼΛର৅
    ̏೔ؒ ̎࣌ؒͣͭ
    ༗ྉϥΠϒ഑৴
    ΞʔΧΠϒແ͠
    ̍ສਓདྷͯ΋଱͑ΒΕΔ

    View Slide

  12. KBXTVHKGUKGU@D
    αʔόʁ%#ʁ
    ษڧ͢Δ͔

    View Slide

  13. KBXTVHKGUKGU@D
    ̍೥͘Β͍લ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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༻
    ϦΫΤετ

    View Slide

  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༻
    ϦΫΤετ

    View Slide

  20. KBXTVHKGUKGU@D
    ʮTJUFEFWDMBTTNFUIPEKQ\αʔϏε໊^ʯ
    υϝΠϯࢦఆݕࡧʂ
    ޿ࠂ΋ग़ͯ͜ͳ͍͠Φεεϝʂ

    View Slide

  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

    View Slide

  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
    ࢖͑ͳ͍໰୊

    View Slide

  23. KBXTVHKGUKGU@D
    ࠶ੜຖʹ
    DRM֬ೝ
    Lambda
    Proxy
    Lambda
    API Gateway
    Endpoint
    SPA
    s3
    API Gateway
    DRM SaaS
    json
    XML
    octet-stream
    %3.Ͱ෮߸
    ϓϨΠϠʔ͔ΒͷΈ
    ࠶ੜՄೳ
    ࡞ͬͯ΋Β͍·ͨ͠
    ͚ͩ͜͜
    ײँʂʂ

    View Slide

  24. KBXTVHKGUKGU@D
    SPA
    s3
    AWS
    Secrets Manager
    Key/token ֨ೲ
    API Gateway
    Lambda
    API Gateway
    Endpoint
    ܾࡁ࣌
    ॻ͖ࠐΈ
    ಡΈࠐΈ
    user_metadata
    ܾࡁ
    Lock checkSession()
    ܾࡁɾೝূ
    ̍ͭͷ-BNCEBʹ
    ٧ΊࠐΈ͗͢

    View Slide

  25. KBXTVHKGUKGU@D
    ͜Ε
    J04ͩͱ͏͔͝ͳ͍

    View Slide

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

    View Slide

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

    View Slide

  28. KBXTVHKGUKGU@D
    -BNCEB૿΍ͦ͏

    View Slide

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

    View Slide

  30. KBXTVHKGUKGU@D
    SPA
    s3
    ಡΈࠐΈ
    user_metadata
    Lock checkSession()
    API Gateway
    Endpoint
    API Gateway
    iOS
    ࢖͑ͳ͍໰୊
    ($1
    $MPVE'VODUJPOT
    Cloud Functions
    ೦ͷͨΊ
    ݁Ռ
    ্ݶ؇࿨௨ͬͨ
    ະ࢖༻

    View Slide

  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

    View Slide

  32. KBXTVHKGUKGU@D
    ظؒ͸ͲΕ͘Β͍ʁ

    View Slide

  33. KBXTVHKGUKGU@D
    ̍ϲ݄͘Β͍

    View Slide

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

    View Slide

  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
    ࠂ஌ ϦϦʔε ຊ൪ᶃ ຊ൪ᶄ ຊ൪ᶅ
    ௐࠪɾυΩϡϝϯτಡΜͰ৮ͬͯΈΔ
    ࣮૷ɾ୯ମςετ
    ࣮૷ɾ݁߹ςετ
    ࣾ಺εςʔδϯάςετɾमਖ਼ νΣοΫ
    νΣοΫ
    νΣοΫ
    όοΫΞοϓߏங

    View Slide

  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
    ࠂ஌ ϦϦʔε ຊ൪ᶃ ຊ൪ᶄ ຊ൪ᶅ
    ௐࠪɾυΩϡϝϯτಡΜͰ৮ͬͯΈΔ
    ࣮૷ɾ୯ମςετ
    ࣮૷ɾ݁߹ςετ
    ࣾ಺εςʔδϯάςετɾमਖ਼ νΣοΫ
    νΣοΫ
    νΣοΫ
    όοΫΞοϓߏங
    νΣοΫ



    ग़ ग़ ग़
    ग़ ग़

    View Slide

  37. KBXTVHKGUKGU@D
    ԿਓͰ΍ͬͨͷʁ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  46. KBXTVHKGUKGU@D
    SPA
    s3
    AWS
    Secrets Manager
    Key/token ֨ೲ
    API Gateway
    Lambda
    API Gateway
    Endpoint
    ܾࡁ࣌
    ॻ͖ࠐΈ
    ಡΈࠐΈ
    user_metadata
    ܾࡁ
    Lock checkSession()
    ങ͚ͬͨͲ
    ݟΕͳ͍ɻ
    खಈରԠ
    Ͱ͖Δ༷ʹ
    "VUIʹίϐϖ͢Ε͹͍͚
    ΔςΩετΛ࡞ͬͯૹ৴
    Ұ൪ࠔΔͷ͕

    View Slide

  47. KBXTVHKGUKGU@D
    ϑΟʔυόοΫϧʔϓ
    प͚ͩ͠·ͨ͠X

    View Slide

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

    View Slide

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

    View Slide

  50. KBXTVHKGUKGU@D
    ࠓޙͷల๬

    View Slide

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

    View Slide

  52. KBXTVHKGUKGU@D
    IUCTIPQKQ
    &$
    IUCDPKQ
    70%
    IPEIUCDPKQ
    ࢹௌσʔλ
    0"
    ϥΠϒ഑৴
    ΦϑϥΠϯΠϕϯτ
    άοζγϣοϓ
    *%౷߹
    ԣஅϨίϝϯυ

    View Slide

  53. KBXTVHKGUKGU@D
    ͜ͷωλ͜͢Γ·͢

    View Slide

  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#&&Ͱ
    ొஃ͠·͢ʂ
    ์ૹۀք޲͚
    ΧϯϑΝϨϯε
    !ນு

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide