在aws-sdk-go-v2 for Go中为AWS s3添加预签名URL配置

ztmd8pv5  于 2023-09-28  发布在  Go
关注(0)|答案(2)|浏览(262)

有一个very fine example使用aws-sdk-go-v2来创建预签名的URL。
这工作得很好,但我坚持设置到期时间。我确实看到PresignOptions结构体有一个Expires,但我不确定如何实现。
我也看到了WithPresignExpires,但唉,我也不知道如何使用这个例子。
能否在此提供一个例子?我在学围棋,但有些东西我还是不懂。

wvmv3b1j

wvmv3b1j1#

看来我可以做到这一点为60分钟的过期。

func GetPresignedURL(c context.Context, api S3PresignGetObjectAPI, input *s3.GetObjectInput) (*v4.PresignedHTTPRequest, error) {
    return api.PresignGetObject(c, input, s3.WithPresignExpires(3600*time.Second))
}
egmofgnx

egmofgnx2#

您还可以将更多选项传递给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)
})

相关问题