LoginSignup
0
1

More than 3 years have passed since last update.

goでs3をいじるまで

Last updated at Posted at 2019-05-07

このページについて

golangを使ってs3のapiを叩くためにセットアップを行った際のメモです。

環境: Mac OS

手順

awscliのインストール

$ brew install awscli

cliが使う環境変数のセットアップ

$ aws configure
AWS Access Key ID [None]: your-key
AWS Secret Access Key [None]: your-token
Default region name [None]: ap-northeast-1
Default output format [None]: 

golang clientのインストール

こちらを使う

$ go get github.com/aws/aws-sdk-go

sdk はデフォルトで ~/.aws/credentials の設定情報を読みに行くので
aws configure でファイルを作りました。(ここに書いてあります)

あとはサンプルコードを動かすだけです

package main

import (
    "context"
    "fmt"
    "os"

    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/s3"
)

func main() {

    sess := session.Must(session.NewSession(aws.NewConfig().WithRegion("ap-northeast-1")))
    svc := s3.New(sess)

    ctx := context.Background()
    objects := []string{}
    myBucket := "your-backet"
    err := svc.ListObjectsPagesWithContext(ctx, &s3.ListObjectsInput{
        Bucket: aws.String(myBucket),
    }, func(p *s3.ListObjectsOutput, lastPage bool) bool {
        for _, o := range p.Contents {
            objects = append(objects, aws.StringValue(o.Key))
        }
        return true // continue paging
    })
    if err != nil {
        panic(fmt.Sprintf("failed to list objects for bucket, %s, %v", myBucket, err))
    }

    fmt.Println("Objects in bucket:", objects)
}

とりあえず、指定したbucket内のファイル名をとるスクリプトを公式からもってきました
そのため、動かす前にbucketの作成と中に適当なファイルを突っ込んでみてください

参考

自身の環境に入れるcredentialのユーザは権限しぼったもの入れましょう
作り方はこちらを見ました

0
1
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
0
1