簡體   English   中英

默認情況下,AWS GetSignedUrl 使用 us-east-1 區域生成錯誤的 url

[英]AWS GetSignedUrl generates wrong url with us-east-1 region by default

我正在嘗試生成 url,以便我可以從 AWS 下載文件。 問題是生成我的 url 設置了錯誤的區域,它應該是 eu-west-3 並且它默認放置 us-east-1。 我查看了我在 aws 中的配置,並且我在該地區有 eu-west-3,所以我不知道發生了什么。

這是我得到的錯誤區域的 de URL 示例:

https://atlasfitness-trainings-s3.s3.amazonaws.com/7d447302-3542-4fd9-84c4-937255e6ee79-try.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-CredentialUISAKIA%2FAKIA1 2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20211018T053136Z&X-Amz-Expires=300&X-Amz-Signature=17731e93fdf43924b30dfe56911850784b3cHeader28c8c8c3c8c8c18c8c16cHeader

當我使用 aws configure list 時,我得到以下信息:

      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ******************* shared-credentials-file
secret_key     ******************* shared-credentials-file
    region                eu-west-3      config-file    ~/.aws/config

在這里我們可以看到區域是正確的,所以我不知道為什么會發生。

這是我使用 nodeJS 生成 de URL 的代碼。

import AWS from 'aws-sdk';

const s3 = new AWS.S3({
    region: process.env.AWS_TRAININGS_BUCKET_REGION, //configured correctly (eu-west-3)
    accessKeyId: process.env.AWS_ACCESS_KEY_ID,
    secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
    signatureVersion: 'v4'
});

export const getUrlS3 = (fileKey) => {
    const getUrlParams = {
        Key: fileKey,
        Bucket: process.env.AWS_TRAININGS_BUCKET_NAME,
        Expires: 60*5,

    }
    return s3.getSignedUrl('getObject',getUrlParams);;
}

因此,如果有人知道如何解決該問題,我將非常感謝聆聽。

我猜你使用的是 Linux 或 MacOS。 所以請添加一些參數:

export AWS_TRAININGS_BUCKET_REGION=eu-west-3

或添加: [ default]~/.aws/config

[default]
access_key
secret_key
region
output

或:直接放:

region: eu-west-3,

暫無
暫無

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

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