【问题标题】:AWS Pre-Signed Post URL suddenly stopped workingAWS Pre-Signed Post URL 突然停止工作
【发布时间】:2021-07-13 22:33:33
【问题描述】:

所以我已经使用 aws-s3 后签名 URL 一个月了,它突然变得很有吸引力(我没有更改我的 IAM 用户或存储桶的任何策略)它开始给我禁止请求.

<?xml version="1.0" encoding="UTF-8"?>
<Error>
    <Code>AccessDenied</Code>
    <Message>Invalid according to Policy: Policy expired.</Message>
</Error>

我发现 AWS 给我发了一封电子邮件,通知我我的追踪结束了,这与它有什么关系。

注意:我仍然可以手动将文件上传到我的 s3

编辑

代码

const params = {
    Bucket: 'ratemycourses',
    Fields: {
      key: `profileImage/${userId}/profile.jpeg`,
      acl: 'public-read',
      'Content-Type': 'multipart/form-data',
    },
    Expires: 60,
  };
  const data = await s3.createPresignedPost(params) //I made the callback function promisifed;
  return data;

【问题讨论】:

  • S3 预签名 URL 是临时的。所以看起来它们对你来说已经过期了。你必须生成新的。
  • 请向我们展示您的代码。有关提出好问题的提示,请参阅:How do I ask a good question?
  • @Marcin 我编辑添加了代码,但我认为代码不是问题,因为我没有更改它。它突然开始失败

标签: amazon-web-services amazon-s3 pre-signed-url


【解决方案1】:

您的 POST 政策中的到期元素指定政策的到期日期/时间。您的保单似乎已过期。更正政策过期时间,然后重新创建您的签名 URL。

这是一个 POST 策略的示例:

{
    "expiration": "2021-07-10T12:00:00.000Z",
    "conditions": [
        {"bucket": "mybucket" },
        ["starts-with", "$key", "user/shahda/"],
    ]
}

【讨论】:

  • 你的意思是我给 IAM 用户的策略本身已经过期了吗?
  • 不,过期的签名凭据会导致不同的过期消息。 S3 POST 请求具有关联的policy,在生成 POST URL 时显示。
  • 能否检查生成 URL 的机器和使用 URL 的客户端的时间同步?
  • 前端(消费 post 请求的那个)和后端(生成 s3 post 请求的那个)都在我的本地机器上,我还没有在生产中使用它
  • 好吧,检查 POST 策略,如前所述。并确保将您的机器时间同步到 NTP。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-22
  • 2021-02-01
  • 2016-12-29
  • 2018-05-09
  • 2015-12-07
  • 2015-08-23
相关资源
最近更新 更多