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

S3にスライドを保存することにした

 S3にスライドを保存することにした

[LT駆動開発 03](https://github.com/LTDD/Sessions/wiki/LT%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA03) での発表資料

データをどこにバックアップをとろうかと考えた時、やっぱS3かなと思ってまずは試しに、.keyファイルをS3に保存してみることにした話。

http://blog.eiel.info/blog/2014/05/03/ltdd-03-s3/

Tomohiko Himura

May 03, 2014
Tweet

More Decks by Tomohiko Himura

Other Decks in Programming

Transcript

  1. S3ʹεϥΠυΛอଘ͢Δ͜ͱʹͨ͠
    2014-05-03 LTۦಈ։ൃ03

    View Slide

  2. ࣗݾ঺հ
    ͻΉΒ ͱ΋ͻ͜
    Tw: eielh, GH: eiel
    !
    http://eiel.info/
    ͍͢͝޿ౡ
    LTۦಈ։ൃ
    Hiroshima.rb
    CSS Nite in HIROSHIMA

    View Slide

  3. 4݄ͷ͓͢͢ΊπΠʔτ

    View Slide

  4. ࠷ۙͷ೰Έ

    View Slide

  5. View Slide

  6. ֎ʹग़͞ͳ͚Ε͹…

    View Slide

  7. View Slide

  8. View Slide

  9. .keyϑΝΠϧ…
    Slide Share ͱ͔ Speaker Deck ʹ͸ PDF
    ͍͔ͭ࢖͍·ΘͤΔΑ͏ʹ
    ൃදͨ͠Βมߋ͢Δ͜ͱ͕ͳ͍

    View Slide

  10. S3 ͱ૬ੑ͕ྑͦ͞͏

    View Slide

  11. ં֯ͳͷͰɺ୭Ͱ΋DLՄೳ
    http://keynotes.eiel.info/

    View Slide

  12. View Slide

  13. γϣϘΠͱ͔͍͏ͳ

    View Slide

  14. S3 ͱ͸ʁ
    Amazon Web Service ͷετϨʔδαʔϏε
    1GB͋ͨΓ 0.03$
    ੩తϖʔδͷϗεςΟϯά͕Ͱ͖Δ
    ೖΕ෺ʹ༰ྔ੍ݶ͕ͳ͍
    ແݶʹೖΔ֎෇͚HDDͷΑ͏ʹ࢖͑Δ

    View Slide

  15. GitHub͡Όμϝͳͷʁ
    ΍Γ͗ͯ͢εύϜ൑ఆ͞Εͨ͜ͱ͕…

    View Slide

  16. index.html ͷੜ੒

    View Slide

  17. https://github.com/eiel/keynotes-eiel

    View Slide

  18. ར༻ݴޠ
    Haskell

    View Slide

  19. ࠓճࢼͨ͠ϥΠϒϥϦ
    aws
    haskell Ͱ aws ͷ api Λୟ͚Δ
    shakespeare
    Yesod Ͱར༻͞ΕͯΔςϯϓϨʔτΤϯδϯ

    View Slide

  20. aws
    cfg <- Aws.baseConfiguration
    let s3cfg = Aws.defServiceConfig :: S3.S3Configuration
    Aws.NormalQuery
    !
    withManager $ \mgr -> do
    S3.GetBucketResponse { S3.gbrContents = objectInfo } <-
    Aws.pureAws cfg s3cfg mgr $
    S3.getBucket bucketName

    View Slide

  21. Aws.pureAws cf s3cfg mgr [apiͬΆ͍ؔ਺]

    View Slide

  22. Α͘Θ͔Βͳͯ͘΋
    APIͷͱ͚ͩ͜ม͑Ε͹࢖͑ͦ͏

    View Slide

  23. shakespeare
    toHtml infos = renderHtml $ [shamlet|
    $doctype 5


    keynotes.eiel.info

    εϥΠυͷอଘ৔ॴ
    ͜͜͸εϥΠυͷอଘݿ

    $forall info <- infos
    ^{list info}
    |]

    View Slide

  24. shakespeare
    list S3.ObjectInfo { S3.objectKey = key } =
    [shamlet|

    #{name}
    |]
    where name = key

    View Slide

  25. Haml ͱ͔Έ͍ͨʹॻ͚·͢Ͷ

    View Slide

  26. ͭ·͍ͮͨ఺

    View Slide

  27. MimeTypeࢦఆ͠ͳͯ͘ϋϚͬͨ
    ϖʔδΛදࣔ͢Δͱμ΢ϯϩʔυͯ͠͠·͏
    !
    ϑΝΠϧΛૹ৴͢Δ࣌ʹ text/html Λࢦఆͨ͠

    View Slide

  28. String ͔Β ByteString ʹม׵ͨ͠Β
    จࣈԽ͚ͨ͠
    String ͔Β Text Λܦ༝ͯ͠ ByteStringʹͨ͠
    Β͏·͍ͬͨ͘
    !
    T.encodeUtf8 . T.pack :: String -> ByteString

    View Slide

  29. ͔͠͠ɺrenderHtml ؔ਺͕ͦ΋ͦ΋
    ByteStringʹͰ͖ͨ
    Ͱ΋ Lazy.ByteString Ͱ ByteString ʹม͑ͳ͍ͱ͍͚ͳ
    ͍ɻ΍Γํ͕͋ͬͯΔͷ͔Θ͔Βͳ͍ɻ
    !
    B.concat . B.toChunks
    :: Lazy.ByteString -> ByteString

    View Slide

  30. Ϩίʔυ͕࢖͍͜ͳͤͯͳ͍
    let object = S3.putObject bucketName "index.html" body
    Aws.pureAws cfg s3cfg mgr $
    object { S3.poContentType = Just "text/html" }
    !
    let Λܦ༝ͤͣγϯϓϧʹॻ͘ํ๏͕Θ͔Βͳ͍

    View Slide

  31. ࠓޙͷల๬

    View Slide

  32. ελΠϧγʔτ͔͜͏
    ը૾ཉ͍͠
    ൚Խͯ͠ଞͷ༻్ʹ΋࢖͑ΔΑ͏ʹ
    ΞΫηεϩάͷऩूͱ͔ͪΌΜͱ΍Ζ͏

    View Slide

  33. ·ͱΊ
    S3͸σʔλอ؅ݿͱͯ͠ྑ͍͸ͣ
    APIͰૢ࡞Ͱ͖ͯૉఢ
    Haskell ͸࣮༻Ͱ͖·͢

    View Slide

  34. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide