【问题标题】:Error when using presigned url to download from S3 [duplicate]使用预签名 URL 从 S3 下载时出错 [重复]
【发布时间】:2018-05-21 00:40:32
【问题描述】:

我正在成功生成预签名的 GetObject URL。然后将生成的 URL 粘贴到浏览器上以下载请求的项目。到目前为止,我能够从弗吉尼亚和新加坡检索对象。但是在俄亥俄州,我收到以下错误。 "不支持您提供的授权机制,请使用AWS4-HMAC-SHA256。"

【问题讨论】:

    标签: amazon-s3 pre-signed-url


    【解决方案1】:

    Amazon 有 2 种身份验证方案:AWS Signature Version 4 和 AWS Signature Version 2。Amazon 已决定在 2014 年 1 月 30 日之后部署的区域中仅支持较新的 V4 版本。因此,预计某些区域会遇到此问题。 但是,V4 有一些更改,如果您想正确签署请求并访问 S3,您需要了解这些更改。您可以找到更多详细信息here

    【讨论】:

    • 我正在使用方法“getSignedUrl”来检索签名的 URL。这意味着 AWS S3 团队尚未更新此特定方法以支持 v4?
    • @ngzhongcai 不,但是假设您使用的是当前版本,那么根据您构建、调用等的方式,您可能会无意中触发它以使用旧版行为。您没有提及您使用的是什么语言,也没有显示任何代码。请记住在发布问题时提供这些信息。
    • 为了解决我的问题,我将区域添加到凭据中,然后重新实例化 s3 对象
    • 为了完成@ngzhongcai评论,在调用凭证时,例如使用nodeJs:AWS.config.credentials = new AWS.SharedIniFileCredentials({profile: 'default'}); AWS.config.update({region: 'eu-west-3'});如果需要,您将能够通过 AWS4 语法的自动集成为您的区域获得正确的预签名 URL: const params = {Bucket: bucketName, Key: keyName}; const url = new AWS.S3().getSignedUrl('getObject', params); console.log('网址是', url);
    猜你喜欢
    • 2020-09-25
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 2018-12-25
    • 2021-12-11
    相关资源
    最近更新 更多