Aws-sdk-net: 我可以将 PreSignedUrl 过期日期设置为永远吗?

创建于 2017-01-13  ·  4评论  ·  资料来源: aws/aws-sdk-net

我正在将 presignedUrl 保存到我们的数据库中,当我在 10 天或更长时间后浏览 url 时,该 url 已损坏,这意味着已过期,我可以让它永久使用吗? 或者有任何预签名网址的替代品,以便我可以像预签名工作一样将文件从亚马逊直接显示到我们的应用程序,但没有过期时间或日期?

guidance

最有用的评论

您不能创建没有到期日期的预签名 URL。 签名版本 4的最长有效期为 7 天,签名版本 2的最长有效期为一年。

所有4条评论

您不能创建没有到期日期的预签名 URL。 签名版本 4的最长有效期为 7 天,签名版本 2的最长有效期为一年。

那么,如何在下面的代码中设置签名版本 2,以便获得 1 年的到期日期:

var credentials = new BasicAWSCredentials("xxxxxxxxxx", "xxxxxxx");
var client = new AmazonS3Client(credentials, RegionEndpoint.APSouth1);
var expiryUrlRequest = new GetPreSignedUrlRequest()
{
    BucketName = "xxxxxx",
    Key = keyName,
    Expires = DateTime.Now.AddDays(7)
};
url = client.GetPreSignedURL(expiryUrlRequest);

你能建议我如何在现有代码中使用签名版本 2 吗?

另一种解决方案是在需要显示的地方创建预先签名的 URL,而不是提前创建并保存它。

您可以通过设置AWSConfigsS3.UseSignatureVersion4 = false;来使用签名版本 2。 请注意,并非所有 AWS 区域都支持签名版本 2。

来自http://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html -
_Amazon S3 支持 Signature Version 4,这是一种用于在所有 AWS 区域对 AWS 服务的入站 API 请求进行身份验证的协议。 目前,2014 年 1 月 30 日之前创建的 AWS 区域将继续支持之前的协议,即签名版本 2。2014 年 1 月 30 日之后的任何新区域将仅支持签名版本 4,因此对这些区域的所有请求都必须使用签名版本 4._

关闭此问题,如果您有其他问题,请随时重新打开。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

Rodrigo-Andrade picture Rodrigo-Andrade  ·  3评论

imkheong picture imkheong  ·  3评论

McDoit picture McDoit  ·  4评论

berkeleybross picture berkeleybross  ·  3评论

AlfredoDiaz90 picture AlfredoDiaz90  ·  4评论