LoginSignup
3
3

More than 5 years have passed since last update.

GolangでRiakCSにオブジェクトを書き出す

Posted at

GolangでAmazonS3にアクセスする方法はいくつかあるものの、RiakCSに対応してるかどうかはまた別の話のようでそれなりに苦戦したのでここに書く。

RiakCSにアクセスするために必要なこととして、古いバージョン(v2)のsignatureに対応してるかどうかと、Region指定で、RiakCSの動いてるホストを指定できるかの二点がある。とりあえず、最近Amazonから出てきたaws-sdk-goではv4しか対応してないので選択肢はgoamz シリーズに絞られる。今回はgoamzのあまたあるforkの中でもstarの多いmitchellh/goamz を使ってみた。

package main

import (
    "fmt"

    "github.com/mitchellh/goamz/aws"
    "github.com/mitchellh/goamz/s3"
)

var RiakCS = aws.Region{
    "riak-cs",
    "",
    "http://localhost:8080",
    "",
    true,
    true,
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
}

func main() {
    // The AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables are used.
    auth, err := aws.EnvAuth()
    if err != nil {
        fmt.Println("1: ", err)
        panic(err.Error())
    }

    // Open Bucket
    s := s3.New(auth, RiakCS)
    bucket := s.Bucket("test")

    data := []byte("hoge")
    err = bucket.Put("sample.txt", data, "text/plain", s3.Private)
    if err != nil {
        fmt.Println("2: ", err)
        panic(err.Error())
    }
}
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3