2017-05-05 7 views
0

私はバケット内の特定のフォルダにファイルをアップロードできるように、ユーザーのS3トークンを生成する必要があるGolang REST APIを作成しています。Golang REST APIのAmazon S3トークン生成

これは私が実装するために必要なものです:

Method: GET 
Endpoint: myapp.com/images/:imageid/token 
Description: Return 2 tokens so that the user can upload files to the S3 
      bucket related to the image ID parameter. 

私はGolangエコーフレームワークを使用しています。 そして、私はこの機能をどのように実装するのかは分かりません。

これはAWS SDKを介して行う必要がありますか、またはAmazonがプログラムで他の方法でトークンを生成する方法はありますか?

+0

トークンのどのような生成しようとしていますか?短命のAWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYのペアを生成しようとしているかもしれません(2トークンと言っているので)? –

+0

正直言って私はトークンがどうあるべきかわかりません。私はあなたにスポットがあると思う。プログラム内からこれらのアクセスキーをどのように生成するのですか? – Anurope

+0

事前に署名されたURLはあなたの行き先になります。実行されるアップロードごとに1つ返す必要があります。明確にするために、私の最初のコメントで言及された短命のキーペアは、あなたが行きたいところではありません。 –

答えて

1

ユーザーがファイルをs3に直接アップロードするためのトークンを生成するには、pre-signed URLSを使用できます。

事前署名されたURLを生成した後、それをユーザーに返し、呼び出し元のアプリケーションがそのファイルをアップロードすることができます。上記のリンクから

この例では、あなたが探しているものであるべきである:

svc := s3.New(session.New(&aws.Config{Region: aws.String("us-west-2")})) 
req, _ := svc.PutObjectRequest(&s3.PutObjectInput{ 
    Bucket: aws.String("myBucket"), 
    Key: aws.String("myKey"), 
}) 
str, err := req.Presign(15 * time.Minute) 

log.Println("The URL is:", str, " err:", err) 
+0

これは素晴らしいです、ありがとう。 – Anurope

関連する問題