有一个使用aws-sdk-go-v2创建预签名url的非常好的示例。
这个工作得很好,但我被设置过期时间卡住了。我确实看到presignotions结构有一个Expires
,但我不确定如何做到这一点。
我也看到WithPresignExpires
,但唉,我也不知道如何使用这个例子。
这里可以提供一个例子吗?我正在学围棋,但有些事我掌握不了。
似乎我可以在60分钟到期时这样做。
func GetPresignedURL(c context.Context, api S3PresignGetObjectAPI, input *s3.GetObjectInput) (*v4.PresignedHTTPRequest, error) {
return api.PresignGetObject(c, input, s3.WithPresignExpires(3600*time.Second))
}
您还可以将更多选项传递给PresignGetObject函数(aws s3 sdk示例)
这个例子将产生这个标题X-Amz-Expires=604800
这将使链接在7天内可用:
request, err := presigner.PresignClient.PresignGetObject(context.TODO(), &s3.GetObjectInput{
Bucket: aws.String(bucketName),
Key: aws.String(objectKey),
}, func(opts *s3.PresignOptions) {
opts.Expires = time.Duration(7 * 24 * time.Hour)
})