Amazon SNSでモバイルPush/HTTP Push通知

B4666fa6f42fb3b6535efda1230bce34?s=47 kiharu sasaki
February 08, 2015

Amazon SNSでモバイルPush/HTTP Push通知

JAWS-UG KANSAI特別編
 AWSのフルマネージドサービス活用による
 ネイティブクラウドシステムへの誘い サービス紹介編
〜AmazonSNS〜
初心者向けの内容です

B4666fa6f42fb3b6535efda1230bce34?s=128

kiharu sasaki

February 08, 2015
Tweet

Transcript

  1. Amazon Simple Notification Service ᕵΔʂ !CVNQ@PG@LJIBSV ,*)"364"4",*

  2. ϚελʔλΠτϧͷॻࣜઃఆ ࣗݾ঺հ +"846(ઍ༿ࢧ෦ͷίΞϝϯόʔ΋͍ͯ͠·͢ 2 ϑϦʔϥϯεͰɺWebσβΠϯ΍γεςϜ։ൃΛ͍ͯ͠·͢ɻ https://www.facebook.com/kiharu.sasaki @bump_of_kiharu http://bump.hatenablog.com/ Kiharu Sasaki

  3. ϚελʔλΠτϧͷॻࣜઃఆ ຊ೔͓࿩͍ͨ͜͠ͱ "84͸ΠϯϑϥΤϯδχΞ͚ͩͷαʔϏεͳͷ͔ʁ 3 •  "84͸*BB4ͳͷ͔ʁ •  ΞϓϦΤϯδχΞʹ͸ؔ܎ͳ͍ʁ SaaS  

    BaaS   PaaS   IaaS  
  4. ϚελʔλΠτϧͷॻࣜઃఆ ΞϓϦΤϯδχΞ޲͚ͷ಺༰Λ͓࿩͠·͢ "84͸ΠϯϑϥΤϯδχΞ͚ͩͷαʔϏεͳͷ͔ʁ 4 •  1BB4Ͱ͋Γ#BB4ͳαʔϏε΋͋Δ •  ΞϓϦΤϯδχΞʹͱͬͯ΋خ͍͠αʔϏε͕ଟ͍ SaaS  

    BaaS   PaaS   IaaS  
  5. Amazon SNS ͱ͸ʁ ͓·ͨͤʂ

  6. ϚελʔλΠτϧͷॻࣜઃఆ l  164)ܕͷϝοηʔδϯάαʔϏε l  )551 4 &NBJM  4.4 424

    .PCJMF1VTI͕Մೳ l  ඇৗʹ҆Ձ 4/4ͱ͸  1VTI͢Δઌ͸͋ͳͨ࣍ୈɻͷϝοηʔδϯάαʔϏε 6 "NB[PO 4JNQMF/PUJGJDBUJPO4FSWJDF
  7. ϚελʔλΠτϧͷॻࣜઃఆ ഁ֨ͷ஋ஈઃఆʢ2015೥ ݄ ݱࡏʣ ϞόΠϧ1VTI௨஌͸ɺສ݅ͱ͍͏ڻ͖ͷ஋ஈ 7 ዗ᇋ࿮ Ձ֨ .PCJMF1VTI ሾฒ

    ሾฒ &NBJM  ฒ ሾฒ )551 4  ሾฒ ሾฒ 4.4 ฒ ฒ 424 ዗ᇋĈ ዗ᇋĈ
  8. ϚελʔλΠτϧͷॻࣜઃఆ ࠓ೔͓࿩͢Δͷ͸͜͜ ࠓճ͸ϞόΠϧ1VTIͱ)551ͷ1VTI௨஌ʹ͍͓ͭͯ࿩͠·͢ 8 ዗ᇋ࿮ Ձ֨ .PCJMF1VTI ሾฒ ሾฒ &NBJM

     ฒ ሾฒ )551 4  ሾฒ ሾฒ 4.4 ฒ ฒ 424 ዗ᇋĈ ዗ᇋĈ
  9. ϞόΠϧPush௨஌ ·ͣ͸͜Ε

  10. ϚελʔλΠτϧͷॻࣜઃఆ ϞόΠϧPush௨஌ͱ͸ʁ ϞόΠϧ୺຤ʹϦΞϧλΠϜʹ௨஌ΛૹΔ࢓૊Έɻ 10 Android iOS

  11. ϚελʔλΠτϧͷॻࣜઃఆ ରԠϓϥοτϑΥʔϜ ֤ϓϥοτϑΥʔϜͷ"1*ࠩҟΛٵऩͨ͠தؒϓϩόΠμ 11 Amazon   ADM Google   GCM

    Apple   APNs Baidu   CloudPush Microso<   MPNS/WNS Kindle  Fire Android   iOS   Android   (China)   Windows   phone   ΞϓϦ αʔϏε
  12. ϚελʔλΠτϧͷॻࣜઃఆ ରԠϓϥοτϑΥʔϜ ࠓճ͸J04ΞϓϦͷ৔߹Λྫʹ͓ͯ͠࿩͠·͢ 12 Amazon   ADM Google   GCM

    Apple   APNs Baidu   CloudPush Microso<   MPNS/WNS Kindle  Fire   Android   iOS   Android   (China)   Windows   phone   ΞϓϦ αʔϏε
  13. SNSʹ৮ͬͯΈΑ͏ ͍͟ʂ

  14. ϚελʔλΠτϧͷॻࣜઃఆ ࣮ࡍʹ࢖ͬͯΈΔ "84Ϛωʔδϝϯτίϯιʔϧ͔Β4/4Λબ୒͢Δ 14 ϞόΠϧ1VTIͷ৔߹͸·ͣʮ"EEB/FX"QQʯ ͦΕҎ֎ͷ৔߹͸ʮ$SFBUF/FX5PQJDʯ

  15. ϚελʔλΠτϧͷॻࣜઃఆ SNSͷओͳొ৔ਓ෺ ॳΊͷ͏ͪ͸৭ʑࠞཚ͕ͪ͠ͳ༻ޠͨͪ 15 n  Endpointɿ ௨஌ઌɻϝΞυ΍URL (ϞόΠϧͷ৔߹device token) n 

    Topicɿ EndpointΛάϧʔϓԽ͢Δ୯Ґ n  ARNɿ ֤ϦιʔεͷIDΈ͍ͨͳ෺ n  Publishɿ ௨஌ߦҝ
  16. ϚελʔλΠτϧͷॻࣜઃఆ SNSͷओͳొ৔ਓ෺ ॳΊͷ͏ͪ͸৭ʑࠞཚ͕ͪ͠ͳ༻ޠͨͪ 16 n  Endpointɿ ௨஌ઌɻϝΞυ΍URL (ϞόΠϧͷ৔߹device token) n 

    Topicɿ EndpointΛάϧʔϓԽ͢Δ୯Ґ n  ARNɿ ֤ϦιʔεͷIDΈ͍ͨͳ෺ n  Publishɿ ௨஌ߦҝ Publish Ͱ͖Δ୯Ґ
  17. ϚελʔλΠτϧͷॻࣜઃఆ SNSͰϋϚΓͦ͏ͳϙΠϯτൈਮ جຊతʹ͸ެࣜυΩϡϝϯτͰे෼ཧղͰ͖Δ 17 5PQJDʹ͸ҟͳΔϓϩτίϧͷ&1 ΤϯυϙΠϯτ ͷࠞࡏ΋Մೳ ʢFHϞόΠϧ୺຤ͱϝʔϧΞυϨεͳͲʣ جຊతʹ1VCMJTIʢ௨஌ʣग़དྷΔ୯Ґ͸5PQJD͕ͩɺ ϞόΠϧ1VTIͷ৔߹ʹݶͬͯ͸&OEQPJOUʹ௚઀ૹΔࣄ΋Մೳ

    ௨஌͢ΔͨΊʹ͸ࣄલʹ4VCTDSJCFʢࣄલঝೝʣ͕ඞཁ
  18. ϚελʔλΠτϧͷॻࣜઃఆ ࣄલঝೝͷ಺༰ʢྫɿϝʔϧʗ)551ʣ ϓϩτίϧʹΑͬͯঝೝॲཧ͕·ͬͨ͘ҟͳΔ 18 ϝʔϧͷ৔߹ l  &1࡞੒ɿϝʔϧΞυϨεΛࢦఆ l  ࣄલঝೝɿૹΒΕ͖ͯͨϝʔϧʹهࡌ͞Ε͍ͯΔ 63-ΛΫϦοΫ

     )551ͷ৔߹ʢ˞ৄࡉ͸ޙड़ʣ l  &1࡞੒ɿαʔόͷ63-Λࢦఆ l  ࣄલঝೝɿ&1࡞੒࣌ʹαʔόѼʹKTPOσʔλ͕ 1045͞Εɺड৴಺༰ͷҰ෦ʢUPLFOʣΛϦλʔϯ ͢ΔॲཧΛαʔόαΠυʹ࣮૷͢Δ
  19. ϚελʔλΠτϧͷॻࣜઃఆ device token औಘ ϞόΠϧ1VTI௨஌͢Δ·Ͱͷେ·͔ͳྲྀΕ J04  ϞόΠϧ1VTIͷࣄલঝೝ͸ɺϢʔβʔͷϓογϡ௨஌ঝ୚͓ΑͼEFWJDFUPLFOͷऔಘ 19 ΞϓϦ࡟আ࣌

    ௨ৗ࣌ SNSʹΤϯυϙΠϯτ࡞੒ Push௨஌ʢpublishʣ ΤϯυϙΠϯτ࡟আ Πϯετʔϧ࣌ API API API SDK   •  AWS  SDK  for  Android   •  AWS  SDK  for  iOS   •  AWS  SDK  for  Java   •  AWS  SDK  for  JavaScript   •  AWS  SDK  for  .NET   •  AWS  SDK  for  PHP   •  AWS  SDK  for  Python   •  AWS  SDK  for  Ruby  
  20. ϚελʔλΠτϧͷॻࣜઃఆ "484%,GPS1)1Λ࢖ͬͨαϯϓϧίʔυ "84ެࣜϖʔδʹهࡌ͞Ε͍ͯΔαϯϓϧίʔυʢ"QQͱ&1͸ొ࿥ࡁͷલఏʣ 20 require_once  ('aws.phar');     //֘౰ΞϓϦέʔγϣϯͷARN  

    $AppArn  =  'XXXXXXXXXXXXXXXXXXXX';     //  ৽نʹAmazon  SNS  ΫϥΠΞϯτΛ࡞੒͢Δ $sns  =  Aw\Sns\SnsClient::factory(array(   'key'        =>  'XXXXXXXXXXXXXXXXXX',   'secret'  =>  'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX',    'region'  =>  'ap-­‐northeast-­‐1'   ));     //  ΞϓϦέʔγϣϯͷΤϯυϙΠϯτΛऔಘ͢Δ $Model  =  $sns-­‐>listEndpointsByPlaZormApplica[on(array('PlaZormApplica[onArn'  =>  $AppArn));     //  ֤ΤϯυϙΠϯτʹϝοηʔδΛૹ৴(publish)   foreach  ($Model['Endpoints']  as  $Endpoint)  {   $EndpointArn  =  $Endpoint['EndpointArn'];    try  {      $sns-­‐>publish(array(          'Message'  =>  'Hello  from  PHP',          'TargetArn'  =>  $EndpointArn      ));    }  catch  (Excep[on  $e)  {      //Τϥʔॲཧ }   }   IAMͷ৘ใ ʻࢀߟɿʲAWSൃදʳ Amazon SNS Λ࢖ͬͨϞόΠϧσόΠε΁ͷϓογϡ௨஌ʼ http://aws.typepad.com/aws_japan/2013/08/push-notifications-to-mobile-devices-using-amazon-sns.html
  21. ϚελʔλΠτϧͷॻࣜઃఆ 4%,Λ࢖ͬͯ"1*Λίʔϧ͢Δ࣌ͷ஫ҙ఺ l  LFZ TFDSFUʹ͸*".Ͱ࡞੒ͨ͠ΞΧ΢ϯτͷ৘ใΛࢦ ఆ͢Δ l  QIQͷ৔߹ɺBXTQIBSΛར༻͢ΔͳΒQIQόʔδϣϯ͸ Ҏ্ʹ͢Δ l 

    αϯϓϧͰ͸ΤϯυϙΠϯτΛ݅ͣͭQVCMJTI͍ͯ͠Δ͕ɺ ௨஌ઌ͕ෳ਺͔ͭಉҰϝοηʔδͰ͋Ε͹ɺ5PQJDΛ࡞੒ ͔ͯ͠Βɺ5PQJDʹରͯ͠1VCMJTI͢Δɻ ࢲ͕ϋϚͬͨϙΠϯτ 21
  22. HTTPͰPush௨஌ͯ͠ΈΔ ࣍ʹ

  23. ϚελʔλΠτϧͷॻࣜઃఆ )551Ͱ1VTI௨஌ͱ͸ʁ %#ͷߋ৽ɺϑΝΠϧαʔό΁ͷΞοϓϩʔυͳͲɺ֤γεςϜͷ ঢ়ଶมԽΛτϦΨʔʹɺࣗಈతʹผͷγεςϜ͕ಈ͘ͱ͍ͬͨɺγ ϯϓϧͰૄ݁߹ͳγεςϜΛ໨ࢦ͢ɻ ͦͷঢ়ଶมԽͷ௨஌खஈͷҰͭͱͯ͠)551QVTI௨஌Λ׆༻͢Δ ϦΞΫςΟϒΞʔΩςΫνϟͷைྲྀʹͷͬͯૄ݁߹ͳγεςϜΛ໨ࢦ͢ 23 l  ΠϕϯτۦಈͰσʔλϑϩʔΛཱ֬

    l  খ͍͞୯ҐͰσʔλͷೖग़ྗΛݶఆతʹ
  24. ϚελʔλΠτϧͷॻࣜઃఆ )551Ͱ1VTI௨஌͢ΔͨΊͷࣄલঝೝ ࣄલঝೝͷͨΊͷॲཧΛ༻ҙ͠ͳ͚Ε͹͍͚ͳ͍ͷ͕ɺ͔ͳΓ໘౗ 24 1) Subscribe֬ೝΛPOST 2) Subscribeঝೝ EPొ࿥ 

      +40/σʔλૹ৴ʢΤϯυϙΠϯτొ࿥࣌ʣɿ ࢦఆͨ͠63-ʹ4/4͔Β+40/σʔλ͕ૹ৴͞ΕΔͷͰɺͦΕΛ଴ͪ ड͚ΔॲཧΛαʔόଆʹ༻ҙ͢Δ    4VCTDSJCFঝೝॲཧɿ 5PQJDͷ"3/ͱड৴ͨ͠UPLFOΛ4/4ʹૹΓฦ͢ SNS ࣗαʔόʔ
  25. ϚελʔλΠτϧͷॻࣜઃఆ ࣄલঝೝʙ1VTI௨஌·Ͱࢼͯ͠ΈΔ /PEFKTΛ࢖ͬͯࢼͯ͠ΈΔ 25 ιʔείʔυ͸ ͍ͣΕQiita͋ͨΓʹެ։க͠·͢ɻ ʲࢀߟʳAmazon SNSͰHTTPΛ࢖ͬͯ௨஌Λड͚औΔ http://dev.classmethod.jp/cloud/amazonsns-http/ ˞ͨͩ͠ɺsns.client…

    ͱͳ͍ͬͯΔՕॴ͸͢΂ͯ ”client” Λ࡟ আ͠ͳ͍ͱಈ͔ͳ͍ͷͰ஫ҙ
  26. ϚελʔλΠτϧͷॻࣜઃఆ ϑΝΠϧΞοϓϩʔυ͕׬ྃͨ͜͠ͱΛ௨஌ͯ͠ΈΔ "84ͷαʔϏεΛ৭ʑ࢖ͬͯૄ݁߹ͳγεςϜͰ)551௨஌ͯ͠ΈΔ 26 4/4 Nodeα−όʔ 4 -BNCEB &$ 1)

    ϑΝΠϧΞοϓϩʔυ ˞ϒϥ΢β͔Β
  27. ϚελʔλΠτϧͷॻࣜઃఆ ϑΝΠϧΞοϓϩʔυ͕׬ྃͨ͜͠ͱΛ௨஌ͯ͠ΈΔ "84ͷαʔϏεΛ৭ʑ࢖ͬͯૄ݁߹ͳγεςϜͰ)551௨஌ͯ͠ΈΔ 27 4/4 Nodeα−όʔ 4 &$ 1) ϑΝΠϧΞοϓϩʔυ

    ˞ϒϥ΢β͔Β 2) Πϕϯτݕ஌ -BNCEB
  28. ϚελʔλΠτϧͷॻࣜઃఆ ϑΝΠϧΞοϓϩʔυ͕׬ྃͨ͜͠ͱΛ௨஌ͯ͠ΈΔ "84ͷαʔϏεΛ৭ʑ࢖ͬͯૄ݁߹ͳγεςϜͰ)551௨஌ͯ͠ΈΔ 28 4/4 Nodeα−όʔ 4 &$ 3) SNSʹPulblish

    1) ϑΝΠϧΞοϓϩʔυ ˞ϒϥ΢β͔Β 2) Πϕϯτݕ஌ -BNCEB
  29. ϚελʔλΠτϧͷॻࣜઃఆ ϑΝΠϧΞοϓϩʔυ͕׬ྃͨ͜͠ͱΛ௨஌ͯ͠ΈΔ "84ͷαʔϏεΛ৭ʑ࢖ͬͯૄ݁߹ͳγεςϜͰ)551௨஌ͯ͠ΈΔ 29 4/4 Nodeα−όʔ 4 &$ 3) SNSʹPulblish

    4) HTTP Push௨஌ʂ ௨஌ ड৴ 1) ϑΝΠϧΞοϓϩʔυ ˞ϒϥ΢β͔Β 2) Πϕϯτݕ஌ -BNCEB
  30. σϞͯ͠ΈΔ ࣮ࡍʹ

  31. ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ LOVE˒