[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/
S3ʹεϥΠυΛอଘ͢Δ͜ͱʹͨ͠2014-05-03 LTۦಈ։ൃ03
View Slide
ࣗݾհͻΉΒ ͱͻ͜Tw: eielh, GH: eiel!http://eiel.info/͍͢͝ౡLTۦಈ։ൃHiroshima.rbCSS Nite in HIROSHIMA
4݄ͷ͓͢͢ΊπΠʔτ
࠷ۙͷΈ
֎ʹग़͞ͳ͚Ε…
.keyϑΝΠϧ…Slide Share ͱ͔ Speaker Deck ʹ PDF͍͔͍ͭ·ΘͤΔΑ͏ʹൃදͨ͠Βมߋ͢Δ͜ͱ͕ͳ͍
S3 ͱ૬ੑ͕ྑͦ͞͏
ં֯ͳͷͰɺ୭ͰDLՄೳhttp://keynotes.eiel.info/
γϣϘΠͱ͔͍͏ͳ
S3 ͱʁAmazon Web Service ͷετϨʔδαʔϏε1GB͋ͨΓ 0.03$੩తϖʔδͷϗεςΟϯά͕Ͱ͖ΔೖΕʹ༰ྔ੍ݶ͕ͳ͍ແݶʹೖΔ֎͚HDDͷΑ͏ʹ͑Δ
GitHub͡ΌμϝͳͷʁΓ͗ͯ͢εύϜఆ͞Εͨ͜ͱ͕…
index.html ͷੜ
https://github.com/eiel/keynotes-eiel
ར༻ݴޠHaskell
ࠓճࢼͨ͠ϥΠϒϥϦawshaskell Ͱ aws ͷ api Λୟ͚ΔshakespeareYesod Ͱར༻͞ΕͯΔςϯϓϨʔτΤϯδϯ
awscfg <- Aws.baseConfigurationlet s3cfg = Aws.defServiceConfig :: S3.S3ConfigurationAws.NormalQuery!withManager $ \mgr -> doS3.GetBucketResponse { S3.gbrContents = objectInfo } <-Aws.pureAws cfg s3cfg mgr $S3.getBucket bucketName
Aws.pureAws cf s3cfg mgr [apiͬΆ͍ؔ]
Α͘Θ͔Βͳͯ͘APIͷͱ͚ͩ͜ม͑Ε͑ͦ͏
shakespearetoHtml infos = renderHtml $ [shamlet|$doctype 5keynotes.eiel.infoεϥΠυͷอଘॴ͜͜εϥΠυͷอଘݿ$forall info <- infos^{list info}|]
shakespearelist S3.ObjectInfo { S3.objectKey = key } =[shamlet|#{name}|]where name = key
Haml ͱ͔Έ͍ͨʹॻ͚·͢Ͷ
ͭ·͍ͮͨ
MimeTypeࢦఆ͠ͳͯ͘ϋϚͬͨϖʔδΛදࣔ͢Δͱμϯϩʔυͯ͠͠·͏!ϑΝΠϧΛૹ৴͢Δ࣌ʹ text/html Λࢦఆͨ͠
String ͔Β ByteString ʹมͨ͠ΒจࣈԽ͚ͨ͠String ͔Β Text Λܦ༝ͯ͠ ByteStringʹͨ͠Β͏·͍ͬͨ͘!T.encodeUtf8 . T.pack :: String -> ByteString
͔͠͠ɺrenderHtml ͕ؔͦͦByteStringʹͰ͖ͨͰ Lazy.ByteString Ͱ ByteString ʹม͑ͳ͍ͱ͍͚ͳ͍ɻΓํ͕͋ͬͯΔͷ͔Θ͔Βͳ͍ɻ!B.concat . B.toChunks:: Lazy.ByteString -> ByteString
Ϩίʔυ͕͍͜ͳͤͯͳ͍let object = S3.putObject bucketName "index.html" bodyAws.pureAws cfg s3cfg mgr $object { S3.poContentType = Just "text/html" }!let Λܦ༝ͤͣγϯϓϧʹॻ͘ํ๏͕Θ͔Βͳ͍
ࠓޙͷల
ελΠϧγʔτ͔͜͏ը૾ཉ͍͠൚Խͯ͠ଞͷ༻్ʹ͑ΔΑ͏ʹΞΫηεϩάͷऩूͱ͔ͪΌΜͱΖ͏
·ͱΊS3σʔλอݿͱͯ͠ྑ͍ͣAPIͰૢ࡞Ͱ͖ͯૉఢHaskell ࣮༻Ͱ͖·͢
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠