go-cloudを利用してオブジェクトの内容を読んでみます。
- アクセスキーとシークレットキーは環境変数で渡す
- blobのドライバーはblank importする(ドライバ固有オプションは利用しない)
# オブジェクトストレージのアクセスキーとシークレットキーは環境変数で渡す
export AWS_ACCESS_KEY_ID=your-access-key
export AWS_SECRET_ACCESS_KEY=your-secret-key
package main
import (
"context"
"fmt"
"io"
"os"
"gocloud.dev/blob"
_ "gocloud.dev/blob/s3blob"
)
const (
endpoint = "https://s3.isk01.sakurastorage.jp"
region = "jp-north-1"
)
var (
bucketName = "your-bucket-name" // バケット名を指定
objectKey = "path/to/your/object" // オブジェクトのキーを指定
)
func main() {
url := fmt.Sprintf("s3://%s?region=%s&endpoint=%s", bucketName, region, endpoint)
ctx := context.Background()
// バケットのオープン
bucket, err := blob.OpenBucket(ctx, url)
if err != nil {
panic(err)
}
defer bucket.Close()
// オブジェクトの読み取り
r, err := bucket.NewReader(ctx, objectKey, nil)
if err != nil {
panic(err)
}
defer r.Close()
// 標準出力へコピー
fmt.Println("Content-Type:", r.ContentType())
fmt.Println()
if _, err := io.Copy(os.Stdout, r); err != nil {
panic(err)
}
}
blob.OpenBuckt()
に渡すURLでパラメータとしてエンドポイントとリージョンを指定しています。
url := fmt.Sprintf("s3://%s?region=%s&endpoint=%s", bucketName, region, endpoint)
この例では扱いませんでしたがオブジェクトの書き込みも可能なはずです。
参考: https://gocloud.dev/howto/blob/#writing
以上です。