【问题标题】:Elixir Arc: Extend S3 Header Expiry TimeElixir Arc:延长 S3 标头到期时间
【发布时间】:2018-01-25 22:27:28
【问题描述】:

我正在为 elixir 使用 arc 附件库:https://github.com/stavro/arc,并且我想增加签名生成的 URL 的到期时间。

此处设置了 S3 标头的默认到期时间: https://github.com/stavro/arc/blob/3d1754b3e65e0f43b87c38c8ba696eadaeeeae27/lib/arc/storage/s3.ex#L3

这会在对 S3 的链接请求中产生以下内容: ...&X-Amz-Date=20180125T203430Z&X-Amz-Expires=300&X-Amz-SignedHeaders=host&X-Amz-Signature=...

readme 表示您可以通过向上传器添加s3_object_headers 方法来延长 S3 标头过期时间:

假设这是我需要做的,这就是我添加的内容: def s3_object_headers(version, {file, scope}) do [expires: 600] end 但我仍然得到相同的 Amz-Expires 值(300)。我也尝试使用 :expires_in 和 :expires_at ,因为代码似乎引用了这些值,但得到了相同的结果。

我做错了什么或未能理解它的工作原理?

【问题讨论】:

  • 我相信您需要将expires_in: 600 传递给传递给YourModule.url/3 函数的选项。至少这就是我在阅读您链接到的代码和自述文件时得出的结论。你能看看这是否有效吗?
  • Dogbert,就是这样 - 你是对的。我只需要重构我的 URL 函数以包含该参数。如果您想创建一个答案,我会认为它是正确的。非常感谢。

标签: amazon-s3 elixir phoenix-framework


【解决方案1】:

expires_in 需要在最后一个参数中传递给模块的url/3 函数,而不是放在s3_object_headers/2 中:

YourModule.url(..., ..., expires_in: 600)

【讨论】:

    【解决方案2】:

    我认为阅读signing 时自述文件可能有误,它是 :expires_in(或:expire_in)需要在s3_object_headers中定义

    【讨论】:

    • 谢谢米卡尔。我尝试了:expires_in:expire_in,但结果相同。
    • 也许用过arch的人可以插话
    猜你喜欢
    • 2021-08-16
    • 2012-11-14
    • 2021-05-10
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多