1

我正在尝试使用预先设置的 url 将文件上传到 S3,直到几分钟前我才相信这是可能的(有关于这个问题的文档),但我刚刚在 S3 开发人员指南中遇到了这个短语:

Query string authentication is not supported for POST 

我错过了什么,顺便说一句,我正在尝试使用 goamz(AWS 的非官方 golang SDK)这样做,但我不断收到签名错误。

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

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

4

3 回答 3

1

我知道它支持PUT,GETDELETErequests ,但是签名变得有点棘手。我知道官方的 PHP 和 Ruby SDK 有支持;可能是其他官方 SDK。

您也许可以将实现移植到 Go。

于 2013-11-10T11:25:14.017 回答
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)

源码:http: //zqsmm.qiniucdn.com/data/20150717110412/index.html

于 2016-10-03T15:22:19.210 回答
0

作为记录,这是可能的,
我实际上是在 go 中完成的,并为 goamz 贡献了代码,在这里找到它:
https ://github.com/crowdmob/goamz

于 2014-01-29T17:23:02.290 回答