👻
aws-sdk-go で S3 にファイルをアップロード
AWSの公式 Go SDK である aws-sdk-go で S3 にファイルをアップロードしてみました。
なお、このSDKはまだ正式リリースではなくAPIの仕様が変わる可能性があります(この記事は 2015/05/07 時点のものです)。
import
import (
"github.com/awslabs/aws-sdk-go/aws"
"github.com/awslabs/aws-sdk-go/aws/awsutil"
"github.com/awslabs/aws-sdk-go/aws/credentials"
"github.com/awslabs/aws-sdk-go/service/s3"
)
Credentials
APIにアクセスするためにCredentials
オブジェクトが必要です。
環境変数から作る場合:
creds := NewEnvCredentials()
KeyとSecretから作る場合:
creds := credentials.NewStaticCredentials("Your AWS Key", "Your AWS Secret", "")
他にもProvider
インタフェースを渡す関数もあるので、ネットワーク経由でKeyとSecretを取ってくるようなものや、ファイルなどから読み込むものなど、自前で実装することも出来ます。
Config
config := aws.Config{
Credentials: creds,
Region: "ap-northeast-1",
}
Config
にはいくつかの設定がありますが、最低限必要と思われるCredentials
とRegion
を設定すれば他はデフォルト値で大丈夫なようです。
S3 Client
client := s3.New(&config)
API
params := &s3.PutObjectInput{
Bucket: aws.String("your_bucket_name"), // Required
Key: aws.String("your_s3_key"), // Required
ACL: aws.String("public-read"),
Body: bytes.NewReader(body),
}
resp, err := client.PutObject(params)
Body
にはio.ReadSeeker
を渡します。
この記事はQiitaの記事をエクスポートしたものです
Discussion