首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AWS S3签名的url -X-Amz-Security-token太早过期

AWS S3签名的url -X-Amz-Security-token太早过期
EN

Stack Overflow用户
提问于 2019-12-19 16:18:29
回答 2查看 3.6K关注 0票数 3

我在这种情况下,我需要有一个预先签署的网址,以生存约一个月。由于signature v4不能提供此功能,因此我决定暂时使用V2。

我将过期时间设置为一个月,但是由于某种原因,它在1天后过期了?(不知道确切的过期时间可能在同一天内)

代码语言:javascript
运行
复制
<Code>ExpiredToken</Code>
<Message>The provided token has expired.</Message>

当我深入研究这个问题时,我发现问题可能出在X-Amz-Security-Token上,它太早到期了。但是我不知道如何为这个头设置一个值?(找不到任何关于它的信息)

Setup:它是一个lambda函数,可以生成一个带签名的url来从S3获取文件。一切都是通过cloudformation完成的。并使用JavaScript SDK完成

代码语言:javascript
运行
复制
    const s3 = new AWS.S3({
    signatureVersion: 'v2',
    region: 'eu-west-1'
});

const bucketParam = {
    Bucket: 'test-bucket',
    Key: 'testFile-1111-2222',
    Expires: 2592000
};

任何帮助都将不胜感激

EN

回答 2

Stack Overflow用户

发布于 2019-12-19 20:06:08

我相信Lambda使用的IAM角色使用的是临时凭据,该凭据在链接之前过期。根据亚马逊网络服务,您需要生成带有IAM用户和signatureVersion =4的预签名URL,该链接将在7天后过期:

要创建有效期长达7天的预签名URL,请首先将IAM用户凭据(访问密钥和秘密访问密钥)指定给您正在使用的SDK。然后,使用AWS Signature Version 4生成预签名URL。

有关详细信息,请参阅Why is my presigned URL for an Amazon S3 bucket expiring before the expiration time that I specified?

您应该尝试创建一个IAM用户来生成这些URL,并实际使用其凭据并承担其在Lambda函数中的角色(使用STS),以便生成URL。别忘了使用signatureVersion='s3v4'

希望这能有所帮助

票数 3
EN

Stack Overflow用户

发布于 2021-01-23 03:48:25

策略过期时间不能超过x-amz-date超过7天。

我没有找到解决这个问题的办法。这似乎是错误的,或者至少没有很好的记录。解决方法似乎是在将来设置"x-amz-date“。虽然不直观,但这似乎是允许的,这使您能够在未来进一步设置到期时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59405707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档