gpt4 book ai didi

aws-sdk - 如何使用 aws-sdk for Ruby 对超过一周的 url 进行签名?

转载 作者:行者123 更新时间:2023-12-01 15:37:44 25 4
gpt4 key购买 nike

我一直在使用 marcel/s3直到我们最近不得不升级到 aws-sdk (版本 2)。

我们注意到的一个变化是,我们现在不能签署过期时间超过一周的 URL,因为我们得到一个异常(exception):ArgumentError: expires_in value of#{X} exceeds one week maximum.

我尝试覆盖 ONE_WEEK constant ,这让我创建了签名 URL。问题是现在 curl 获得的 URL 我得到 400 响应,包括 X-Amz-Expires 必须少于一周(以秒为单位);也就是说,给定的 X-Amz-Expires 必须小于 604800 秒

如何使用 aws-sdk v2(就像使用 marcel/s3 一样)为 URL 签名超过一周?切换到 aws-sdk v1 是实现此目标的替代方法吗?

我注意到每个库生成的 URL 之间的区别:

  • marcel-s3:使用AWSAccessKeyIdExpiresSignature 作为查询参数。
  • aws-sdk v2:使用X-Amz-AlgorithmX-Amz-CredentialX-Amz-Date X-Amz-ExpiresX-Amz-SignedHeadersX-Amz-Signature 作为查询参数。

最佳答案

使用 aws-sdk 的 v1(以及用于其他东西的 v2)对我有用。示例代码:

def url s3_key, public_path=false
s3 = AWS::S3.new # aws-sdk v1 s3 client
v1_obj = s3.buckets[BUCKET_NAME].objects[s3_key]
if public_path
v1_obj.public_url.to_s
else
v1_obj.url_for(:read, expires: (2.weeks.since - Time.now).to_i).to_s
end

关于aws-sdk - 如何使用 aws-sdk for Ruby 对超过一周的 url 进行签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35202879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com