Go S3 SignedURL失败
我正在尝试为S3中的GET对象请求创建一个签名URL。我的代码可以完美地将对象放入S3,但我似乎无法让它在get中工作。我用这个代码在URL上签名Go S3 SignedURL失败,go,amazon-s3,Go,Amazon S3,我正在尝试为S3中的GET对象请求创建一个签名URL。我的代码可以完美地将对象放入S3,但我似乎无法让它在get中工作。我用这个代码在URL上签名 //Create the signed url using the company id func (user *User) signURLForUser(sess *session.Session) (*URLSign, error) { svc := s3.New(sess) svc.Config.Region = aws
//Create the signed url using the company id
func (user *User) signURLForUser(sess *session.Session) (*URLSign, error) {
svc := s3.New(sess)
svc.Config.Region = aws.String(os.Getenv("REGION"))
req, _ := svc.GetObjectRequest(&s3.GetObjectInput{
Bucket: aws.String("bucket"),
Key: aws.String(user.CompanyID + "/" + user.FileRequest),
})
var urlSign URLSign
//urlSign.Size = *out.ContentLength
str, err := req.Presign(time.Minute * 60 * 24 * 5) //Expire in 5 days
if err != nil {
log.Println("Error signing URL Request")
return nil, err
}
urlSign.URL = str
return &urlSign, nil
}
但是当我尝试使用它返回的URL时,我得到以下错误:
<Error>
<Code>AuthorizationQueryParametersError</Code>
<Message>X-Amz-Algorithm only supports "AWS4-HMAC-SHA256"</Message>
<RequestId>9D7CFB14B195A260</RequestId>
<HostId>
Dgh+SqrHbrdKcbkCYrAj3nObLMAwS7k5+VR1zwC/8ZMS3S4++IAAEXXh3zMZ3CpOAyxX1Kc7Opg=
</HostId>
</Error>
我已经检查了IAM权限,它们是为GetObject设置的。我想不出还有什么我做错了
编辑:下面是一个URL示例
当然:
/CFDMP_ServoGear.gcode?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-SHA256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAVEENPDKJRUDZKEVM%2fs20180812%2Fus-east-1%2Fs3%2Faws4_请求&X-Amz-Date=20180812T005443Z&X-Amz-Expires=432000&X-Amz-Security-Token=432000&X-Amz-Security-Token=fqlogzyxyxyxyxDzebodz7v4x7g8gwvv7vv4xyxyx7v4xyx5bzyx7v4xyx5bzv4x5vv2.2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)BBBBBBBBBBBBBBBBBBBB6 6 6 6 6 6 6)BBBBBBBBBB6 6 6 6 6 6 6 6 6 6 6 6 6六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六六44C7140259AD884E696B48F8094BDD223B8650EBDF59F7当您没有正确指定算法时,就会出现此类问题。对于我来说,我使用的是以下url:\u0026
这让我想起了同样的错误。我将\u0026替换为&并且它工作正常。这与权限无关。URL的实际格式有问题。您可以与我们共享其中一个吗?我添加了一个对其中一个URL的编辑。我知道问题出在哪里了,&被替换为\u。我只是不知道为什么。这和go的字节到字符串转换有关。我将json对象解包到一个结构中,当我现在登录它时,一切看起来都是正确的。不相关,但
s3.amazonaws.com//CFDMP\u ServoGear.gcode?X-
在某个时候会给您带来问题。S3对象键不应有前导斜杠,但URL中出现的/
表明您正在添加它们。这最终可能会导致意外/奇怪/混乱的行为或兼容性问题。正确的对象键是cat.jpg
或pics/cat.jpg
,而不是/cat.jpg
或/pics/cat.jpg
。。。但是你需要在上传端和下载端解决这个问题。现在修总比以后修好。