簡體   English   中英

NodeJs AWS-SDK s3.upload 上傳 function 沒有按預期拋出錯誤

[英]NodeJs AWS-SDK s3.upload upload function not throwing error as expected

我正在使用以下代碼將文件上傳到 s3

const AWS = require('aws-sdk'); // v2.712.0
AWS.config.update({ region: process.env.AWS_REGION });

async function upload(params)
{
    try 
    {
        await s3.putObject(params).promise();
    }
    catch(error)
    {
        console.log(error);
    }
}

const params = {...};// set params 
upload(params)

它在正確設置憑據時起作用。 但如果它們丟失,錯誤CredentialsError: Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1將在幾分鍾后拋出。

我的問題是:

  • 我的錯誤處理是否正確?
  • 有沒有辦法配置 SDK 以便它立即(至少幾秒鍾)拋出此錯誤而不是等待幾分鍾?

我曾嘗試查看文檔並在httpOptions配置中設置較低的timeout值(如幾秒鍾),但沒有成功。

任何幫助表示贊賞。 謝謝。

您需要await最后一行的 function 調用以確保調用完成(成功或記錄錯誤),例如

await upload(params);

或者,您可以使用 promise 構造,例如

upload(params)
  .then(data => { console.log('done', data); })
  // .catch(err => { console.log('error', err); })

最后一行已被注釋掉,因為upload() function 已經在內部捕獲並記錄錯誤。 就個人而言,我會在這里進行錯誤處理。 或者,如果整個流程如示例所示那樣小,我會直接調用s3.putObject() function:

const AWS = require('aws-sdk');
AWS.config.update({ region: process.env.AWS_REGION });

const params = {...};
s3.putObject(params).promise()
  .then(data => { console.log('done', data); })
  .catch(err => { console.log('error', err); });

暫無
暫無

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

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