我一直在使用marcel/s3,直到我们最近不得不升级到aws-sdk(版本 2)。
我们注意到的一个变化是,我们现在不能对过期时间超过一周的 URL 进行签名,因为我们得到了一个例外:ArgumentError: expires_in value of #{X} exceeds one-week maximum
.
我尝试覆盖ONE_WEEK 常量,这让我可以创建签名的 URL。问题是现在 curl 获得的 URL 我得到400
响应,包括X-Amz-Expires must be less than a week (in seconds); that is, the given X-Amz-Expires must be less than 604800 seconds
.
aws-sdk v2
如何使用(我可以使用)在一个 URL 上签名超过一周marcel/s3
?是否切换到aws-sdk v1
替代方案来实现这一目标?
我注意到每个库生成的 URL 之间的区别:
marcel-s3
: 使用AWSAccessKeyId
,Expires
和Signature
作为查询参数。aws-sdk v2
: 使用X-Amz-Algorithm
,X-Amz-Credential
,X-Amz-Date
,X-Amz-Expires
,X-Amz-SignedHeaders
和X-Amz-Signature
作为查询参数。