簡體   English   中英

使用預簽名 URL“SignatureDoesNotMatch”獲取 AWS S3 Object

[英]Fetching AWS S3 Object using Presigned URL "SignatureDoesNotMatch"

我在愛爾蘭地區創建了一個存儲桶,並阻止了對它的所有公共訪問。 此外,我創建了一個腳本來生成預簽名的 URL 以獲取 object。出於某種原因,我總是收到 SignatureDoesNotMatch 錯誤。 我無法理解其背后的原因。 下面是我的代碼:

let getPresignedUrl = async () => {
    const AWS = require('aws-sdk');
    const s3 = new AWS.S3({apiVersion: '2006-03-01', region: 'eu-west-1'});

    console.log(`Starting...`);

    const params = {Bucket: 'mybucket', Key: 'potato.jpeg', Expires: 300};
    const url = await s3.getSignedUrlPromise('getObject', params);
    console.log('The URL is', url); // expires in 60 
};

getPresignedUrl();

這是我收到的消息

<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
<AWSAccessKeyId>key</AWSAccessKeyId>
<StringToSign>GET 1603525258 /mybucket/potato.jpeg</StringToSign>
</Error>

嘗試修改這個:

const s3 = new AWS.S3({apiVersion: '2006-03-01', region: 'eu-west-1'});

對此:

const s3 = new AWS.S3({apiVersion: '2006-03-01', region: 'eu-west-1', signatureVersion: 'v4'});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM