鳩舎

レースしない

golang s3

go 言語から S3 にアクセスする。

goamz つかえばあとは大体どうとでもなるみたい。

Mac に bzr が入ってなかったのでまず入れる。

$ brew install bzr
$ echo "export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH" >> ~/.zshrc

つぎは goamz/s3 のインストール

go get launchpad.net/goamz/s3

そこそこ時間かかる。

入ったらコード書いてみる。

package main

import (
  "fmt"
  "launchpad.net/goamz/aws"
  "launchpad.net/goamz/s3"
)

func main() {
  auth, err := aws.envauth()
  if err != nil {
    panic(err)
  }

  s3clinet := s3.new(auth, aws.apnortheast)
  bucket := s3clinet.bucket("rosylilly")

  data := []byte("hello, s3!!")
  err = bucket.put("sample.txt", data, "text/plain", s3.bucketownerfull)
  if err != nil {
    panic(err.error())
  }

  content, err := bucket.get("sample.txt")
  if err != nil {
    panic(err.error())
  }
  fmt.println(string(content))
}

ほぼサンプルのコピペ、書き込んで読み込んで表示するだけ。これで動く。bucket.Get で取得も出来る。

err にはステータスコードとか入ってるので、例外処理とかはそこでやる感じになる。