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/

1a679952cdf455ecd6a15cbde7ae80d5?s=128

Tomohiko Himura

May 03, 2014
Tweet

Transcript

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

  2. ࣗݾ঺հ ͻΉΒ ͱ΋ͻ͜ Tw: eielh, GH: eiel ! http://eiel.info/ ͍͢͝޿ౡ

    LTۦಈ։ൃ Hiroshima.rb CSS Nite in HIROSHIMA
  3. 4݄ͷ͓͢͢ΊπΠʔτ

  4. ࠷ۙͷ೰Έ

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

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

  10. S3 ͱ૬ੑ͕ྑͦ͞͏

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

  12. None
  13. γϣϘΠͱ͔͍͏ͳ

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

    ແݶʹೖΔ֎෇͚HDDͷΑ͏ʹ࢖͑Δ
  15. GitHub͡Όμϝͳͷʁ ΍Γ͗ͯ͢εύϜ൑ఆ͞Εͨ͜ͱ͕…

  16. index.html ͷੜ੒

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

  18. ར༻ݴޠ Haskell

  19. ࠓճࢼͨ͠ϥΠϒϥϦ aws haskell Ͱ aws ͷ api Λୟ͚Δ shakespeare Yesod

    Ͱར༻͞ΕͯΔςϯϓϨʔτΤϯδϯ
  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
  21. Aws.pureAws cf s3cfg mgr [apiͬΆ͍ؔ਺]

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

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

    <head> <title>keynotes.eiel.info <body> <h1>εϥΠυͷอଘ৔ॴ ͜͜͸εϥΠυͷอଘݿ <ul> $forall info <- infos ^{list info} |]
  24. shakespeare list S3.ObjectInfo { S3.objectKey = key } = [shamlet|

    <li> <a href=#{key}>#{name} |] where name = key
  25. Haml ͱ͔Έ͍ͨʹॻ͚·͢Ͷ

  26. ͭ·͍ͮͨ఺

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

  28. String ͔Β ByteString ʹม׵ͨ͠Β จࣈԽ͚ͨ͠ String ͔Β Text Λܦ༝ͯ͠ ByteStringʹͨ͠

    Β͏·͍ͬͨ͘ ! T.encodeUtf8 . T.pack :: String -> ByteString
  29. ͔͠͠ɺrenderHtml ؔ਺͕ͦ΋ͦ΋ ByteStringʹͰ͖ͨ Ͱ΋ Lazy.ByteString Ͱ ByteString ʹม͑ͳ͍ͱ͍͚ͳ ͍ɻ΍Γํ͕͋ͬͯΔͷ͔Θ͔Βͳ͍ɻ !

    B.concat . B.toChunks :: Lazy.ByteString -> ByteString
  30. Ϩίʔυ͕࢖͍͜ͳͤͯͳ͍ let object = S3.putObject bucketName "index.html" body Aws.pureAws cfg

    s3cfg mgr $ object { S3.poContentType = Just "text/html" } ! let Λܦ༝ͤͣγϯϓϧʹॻ͘ํ๏͕Θ͔Βͳ͍
  31. ࠓޙͷల๬

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

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

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