是否可以使用预签名的URL将文件上载到AWS S3

时间:2013-11-06 16:02:35

标签: amazon-s3 pre-signed-url goamz

我正在尝试使用预先编写的网址将文件上传到S3,直到几分钟前我认为有可能(有关于此问题的文档),但我刚刚在S3开发人员指南中遇到过这句话:< / p>

Query string authentication is not supported for POST 

我缺少什么, 顺便说一句,我试图使用goamz(AWS的非官方golang SDK)这样做,并且我不断收到签名错误。

编辑:到目前为止,我想出了签名,所以我可以签署GET,POST,PUT的URL(我没有尝试过DELETE或PATCH,如果它们在亚马逊部分得到支持,它们也可以正常工作),对吧现在我的问题是我在PUT之后得到零大小的对象),当我使它工作时我会在这里发布代码。

EDIT2:正如@Basssethog下面提到的那样,这个问题现在在官方的go-SDK中解决了

3 个答案:

答案 0 :(得分:1)

我知道它支持PUTGETDELETE请求,但签名变得有点棘手。我知道官方的PHP和Ruby SDK都有支持;可能还有其他官方SDK。

您可以将实施移植到Go。

答案 1 :(得分:1)

现在aws-sdk-go SDK已经解决了这个问题:

svc := s3.New(nil)
req, _ := svc.PutObjectRequest(&s3.PutObjectInput{
    Bucket: aws.String("myBucket"),
    Key:    aws.String("myKey"),
    Body:   strings.NewReader("EXPECTED CONTENTS"),
})
str, err := req.Presign(15 * time.Minute)

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

Soure:http://zqsmm.qiniucdn.com/data/20150717110412/index.html

答案 2 :(得分:0)

记录是可能的,
我实际上已经去了,并为goamz的代码做出了贡献,在这里找到它:
https://github.com/crowdmob/goamz