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

Lambdaを使ってJawsDaysをHackしてみよう!

toshihirock
March 12, 2016
1.6k

 Lambdaを使ってJawsDaysをHackしてみよう!

Lambdaを使ってJawsDaysをHackしてみよう!
2016 3/12 13:00-13:50(50min)

toshihirock

March 12, 2016
Tweet

Transcript

  1. LambdaΛ࢖ͬͯJawsDays
    ΛHackͯ͠ΈΑ͏!

    +"84%":4
    5PTIJIJSP'VSVOP

    View Slide

  2. ɾWiFi SSID->jawsdays_workshop
    ɾWiFi ύεϫʔυ->workshop02
    ɾࢿྉ-> https://github.com/toshihirock/
    jaws2016-lambda-hands-on

    View Slide

  3. લఏ
    ɾॳ৺ऀ޲͚ͷߨशͳͷͰ೉қ౓͸ߴ͋͘Γ
    ·ͤΜɻ͕࣌ؒ༨ͬͨํ͸վ଄͢ΔͳͲࣗ༝
    ʹ༡ΜͰΈ͍ͯͩ͘͞ɻ
    ɾLambdaͷίʔυ࣮૷αϯϓϧ͸Node.jsͰ
    ߦ͓ͬͯΓ·͢ɻJava,PythonͰͷαϯϓϧ͸
    ͳ͍఺͸ྃ͝ঝ͍ͩ͘͞ɻ

    View Slide

  4. ΍Δ͜ͱɺ΍Βͳ͍͜ͱ
    ΍Δ͜ͱ
    ɾϋϯζΦϯܗࣜͰLambdaͰԿ͔Λ࡞ͬͯ
    ༡ΜͰΈΔ(༡ͼͳͷͰۀ຿޲͚Ͱ͸ͳ͍)
    ΍Βͳ͍͜ͱ
    ɾLambdaͷৄࡉͳઆ໌
    ɾTwitterAPIͷৄࡉ

    View Slide

  5. ࣗݾ঺հ
    ɾݹ໺ढ़޿(@toshihirock)
    ɾNTTιϑτ΢ΣΞגࣜձࣾ
    ɾAWSۀ຿͸1೥͙Β͍
    ɾ޷͖
    - Lambda
    - Podcast
    - ϫʔϧυτϦΨʔ

    View Slide

  6. ຊ೔ͷϋϯζΦϯ

    View Slide

  7. -BNCEBΛ࢖ͬ
    ͯKBXTEBZTʹπ
    Πʔτ͠Α͏

    View Slide

  8. LambdaΛ࢖ͬͯJawsDaysΛHackͬͧ͢
    ɾπΠʔτ͍ͤͨ͞಺༰ͷςΩετΛS3ʹ഑ஔ
    ɾIAMϩʔϧΛ෇༩ͨ͠LambdaͰS3͔ΒςΩ
    ετϑΝΠϧΛऔಘ͠ɺϥϯμϜʹϐοΫΞοϓ
    ɾ༧Ί࡞੒ͯ͋͠ΔAPIGatewayʹ޲͚ͯPOST
    ϦΫΤετΛ࣮ࢪ
    ɾAPIGatewayܦ༝Ͱ@jaws2016_lambda͔Β
    ϋογϡλά #jawsdays Λ෇͚ͯπΠʔτ͞Ε
    Δ(࡞੒ࡁΈ)

    View Slide

  9. ֓ཁਤ

    View Slide

  10. ஌ࣝฤ

    View Slide

  11. S3?
    ɾΦϯϥΠϯετϨʔδ
    ɾߴ͍ݎ࿚ੑ(99.999999999%)
    ɾ҆Ձ
    ɾ༰ྔແ੍ݶ(1ϑΝΠϧ5TB·Ͱ)
    ࠓճ͸πΠʔτจݴΛஔ͘৔ॴͱͯ͠ར༻

    View Slide

  12. Lambda?
    ɾΠϕϯτυϦϒϯ΍
    cronͷΑ͏ʹఆظλΠϛϯάͰϢʔβʔ͕ॻ
    ͍ͨίʔυΛ࣮ߦͰ͖Δ
    ɾίʔυ͸Node.js,Java,Python
    ɾ࠷ۙVPC΋ରԠ
    ɾৄࡉ͸ެࣜࢀর

    View Slide

  13. IAMϩʔϧ?
    ɾϢʔβʔ΍LambdaɺEC2ͳͲͷϦιʔεʹର
    ͯ͠໾ׂ(Role)ΛࢦఆͰ͖Δɻྫ͑͹ʮS3ͷRead
    ݖݶʯͳͲ
    ɾϩʔϧ͸Lambda࡞੒࣌ʹ෇༩͢Δ͜ͱͰઃఆ
    ͞ΕͨAPIͷkick͕Ͱ͖Δ
    ࠓճͷྫͰ͸Lambda͔ΒS3ͷόέοτͷ৘ใΛ
    औಘ͍ͨ͠ͷͰLambda޲͚ͷ্هʹ֘౰͢Δ
    IAMϩʔϧΛ࡞੒͢Δ

    View Slide

  14. ࡞ۀͷྲྀΕ
    ɾS3όέοτʹπΠʔτจݴͷ഑ஔ
    ɾLambda༻IAMϩʔϧͷ࡞੒
    ɾLambda Functionͷ࡞੒
    ɾLambda Functionͷఆظ࣮ߦͷઃఆ

    View Slide

  15. ४උฤ(S3)

    View Slide

  16. αʔϏεҰཡ͔ΒS3ͷબ୒

    View Slide

  17. όέοτͷ࡞੒

    ʮ$SFBUF#VDLFUʯ
    Λબ୒
    όέο
    τ໊Λ࡞੒ɻόέοτ
    ໊͸SFHJPOͰϢχʔΫͳ
    ඞཁ͋Γ
    Ϧʔδϣϯ͸
    5PLZP
    ʮ$SFBUFʯ
    Λબ୒

    View Slide

  18. S3΁഑ஔ͢ΔςΩετϑΝΠϧͷ࡞੒
    ɾ֤ࣗͷPCͷ޷͖ͳΤσΟλͰπΠʔτͤ͞
    ͍ͨจݴूΛ࡞੒͍ͯͩ͘͠͞ɻจࣈίʔυ
    ͸UTF-8Ͱอଘ
    ɾ೚ҙͷσϦϛλ۠੾ΓͰ࡞੒͍ͯͩ͘͠͞ɻ
    ҎԼྫ͸σϦϛλ͸վߦ(\r\n)
    ɾ࡞੒ޙɺʮtweetList.txtʯͰϩʔΧϧʹอ

    View Slide

  19. ֬ೝ
    # จࣈίʔυ֬ೝ
    $nkf -g tweetList.txt
    # վߦίʔυ֬ೝ.LF = $.CR = ^MͰදࣔ
    $cat -e tweetList.txt

    View Slide

  20. S3΁ςΩετϑΝΠϧͷΞοϓϩʔυ
    ʮ6QMPBEʯΛ
    બ୒
    ςΩετΛ
    υϥοάΞϯυυϩο
    ϓͰΞοϓϩʔυ
    ʮ4UBSU
    6QMPBEʯΛબ୒
    ઌ΄Ͳ࡞੒ͨ͠όέοτΛબ୒ޙɺҎԼͷૢ
    ࡞ͰΞοϓϩʔυ

    View Slide

  21. ֬ೝ

    View Slide

  22. ४උฤ(IAMϩʔϧ)

    View Slide

  23. αʔϏεҰཡ͔ΒIAMͷબ୒

    View Slide

  24. ϩʔϧͷ৽ن࡞੒
    ʮ3PMFTʯΛબ

    ʮ$SFBUF
    /FX3PMFʯΛબ

    View Slide

  25. ϩʔϧ໊ͷܾఆ
    ೚ҙͷ
    3PMF/BNFΛೖྗ
    ʮ/FYU
    4UFQʯΛબ୒

    View Slide

  26. ϩʔϧλΠϓͷબ୒
    ʮ"84
    -BNCEBʯΛબ୒
    LambdaʹΞλον͍ͨ͠ϩʔϧΛ࡞੒͢ΔͷͰLambdaΛ
    બ୒͠·͢

    View Slide

  27. ϙϦγʔͷબ୒
    ʮTʯͱೖྗ

    ʮ"NB[PO43F
    BE0OMZ"DDFTTʯ
    Λબ୒
    ʮ/FYU
    4UFQʯΛબ୒
    طʹAWSଆͰ༻ҙ͍ͯ͠ΔS3΁ͷReadOnly
    ͷϙϦγʔΛ෇༩

    View Slide

  28. ϨϏϡʔ
    ֬ೝޙɺ
    ʮ$SFBUF3PMFʯ
    Λબ୒

    View Slide

  29. LambdaΛ࡞Ζ͏!

    View Slide

  30. (ޙͰར༻)ίʔυͷ४උ
    ɾҎԼͷ಺༰Λίϐϖͯ͠೚ҙͷςΩετΤ
    σΟλʹష͓ͬͯ͘
    ɾhttps://github.com/toshihirock/jaws2016-
    lambda-hands-on/blob/master/index.js

    View Slide

  31. (ޙͰར༻)ίʔυͷ४උ
    4ͷઃఆ͸
    దٓࣗ෼ͷઃఆʹ
    มߋ
    "1*(BUFXBZͷ
    ೝূΩʔΛࢦఆ

    View Slide

  32. αʔϏεҰཡ͔ΒLambdaͷબ୒

    View Slide

  33. Functionͷ࡞੒
    ※ॳΊͯͷํͷը໘
    ʮ$SFBUFB
    -BNCEBGVODUJPOʯ
    Λબ୒
    ʮ(FU4UBSUFE
    /PXʯΛબ୒
    ※طʹFunction͕͋Δਓͷը໘

    View Slide

  34. Blueprint
    ར༻͠ͳ͍
    ͷͰʮ4LJQʯΛબ

    View Slide

  35. Functionͷઃఆ(1/2)
    /PEFKT
    /BNFٴͼ
    %FTDSJQUJPO͸Կ
    Ͱ΋0,
    &EJUDPEF
    JOMJOF

    ΄Ͳͷ಺༰Λ
    ίϐϖ

    View Slide

  36. Functionͷઃఆ(2/2)

    ΄Ͳ࡞੒ͨ͠4΁
    ΞΫηεͰ͖Δ3PMF

    *OEFYIBO
    EMFS
    /P71$
    ࠷ޙʹ
    ʮ/FYUʯ

    View Slide

  37. ϨϏϡʔ
    ઃఆ͕໰୊ͳ
    ͚Ε͹ʮ$SFUF
    GVODUJPOʯ

    View Slide

  38. ࡞੒
    ೔ຊޠ͕จࣈԽ͚͠·
    ͢ɻɻؾʹͳΔਓ͸ຊϖʔδ
    Ͱ࠶౓ίϐϖͯ͠ߋ৽͢Δͱ௚
    Γ·͢ɻ

    View Slide

  39. ςετͯ͠ΈΔ
    ʮ5FTUʯΛબ୒

    View Slide

  40. ςετͯ͠ΈΔ
    ʮ4BWFBOE
    UFTUʯΛબ୒
    ςϯϓϨʔτ͸ԿͰ
    ΋0, πΠʔτ৘ใ͸4͔
    Βऔಘ͢ΔͷͰ

    View Slide

  41. ςετͯ͠ΈΔ
    ੒ޭ͢Ε͹ը໘Լ෦
    ʹπΠʔτͨ͠จࣈྻ͕දࣔ
    ͞ΕΔ
    ࣦഊ͢Δͱ੺͍Τϥʔදࣔ
    ʹͳΔ

    View Slide

  42. ςετͯ͠ΈΔ
    5XJUUFSͰ΋֬ೝ

    View Slide

  43. Τϥʔ͕ൃੜ͍ͯ͠Δ৔߹
    ɾը໘Լ෦(Log output)ʹϩά৘ใ͕දࣔ͞
    ΕΔͷͰ֬ೝ
    ɾඞཁʹԠͯ͡console.logͳͲΛ࢓ࠐΜͰσ
    όοάͯ͠ΈΔ

    View Slide

  44. botΒ͘͠
    ఆظ࣮ߦͤͯ͞ΈΔ

    View Slide

  45. ఆظ࣮ߦͷઃఆ
    ʮ&WFOUTPVSDFTʯλ
    ϒΛબ୒
    ʮ"EEFWFOU
    TPVSDFʯΛબ୒

    View Slide

  46. ఆظ࣮ߦͷઃఆ
    ೚ҙͷ࣌ؒؒ
    ִΛઃఆ
    ࠷খ෼

    ʮ$MPVE8BUDI&WFOUT
    4DIFEVMFʯΛબ୒
    ໊শΛదٓมߋ
    4VCNJUܾͯ͠ఆ

    View Slide

  47. ֬ೝ
    5XJUUFS্Ͱ΋֬ೝ
    ͠͹͠଴ͬͯ֬ೝ

    View Slide

  48. ͕࣌ؒ༨ͬͨਓ͸

    View Slide

  49. ͕࣌ؒ༨ͬͨਓ͸
    ɾ޷͖ʹ৭ʑ΍ͬͯΈ͍ͯͩ͘͞ʂʢఆظ࣮ߦ
    ִؒΛม͑ΔɺจݴͷύλʔϯΛ૿΍͢ͳͲʣ
    ɾLambda͔Β௚઀TwitterͷAPIΛୟ͘ͳͲΛ
    ͯ͠Έ͍ͨ৔߹͸Ҏલॻ͍ͨͪ͜ΒΛࢀߟʹ΍ͬ
    ͯΈ͍ͯͩ͘͞
    http://qiita.com/toshihirock/items/
    d28505442526e0ae7793

    View Slide

  50. Thanks!

    View Slide