簡體   English   中英

AWS S3沒有此類密鑰存在錯誤

[英]AWS S3 No Such Key Exist Error

我的客戶端在AWS-S3上存儲了許多圖像。 我能夠得到那些圖像。 問題是,他們以前使用數字鍵存儲圖像,而現在使用GUID。 例如,密鑰可以是12345 / MyFile.jpg或ASDF-XYZ / MyFile.jpg,並且它們不存儲密鑰。 存儲在數據庫中的唯一內容是userId和fileName。 所以我在數據庫中只有12345 / MyFile.jpg。 當我嘗試使用以下代碼時:

var params = {
    Bucket: bucketName,
    Key: "12345/MyFile.jpg",
    IfMatch: eTag,
    };

var fileStream = s3.getObject(params).createReadStream();

這僅在存在的情況下有效。 如果文件不存在,則會引發異常“不存在這樣的密鑰”。 因此該文件位於GUID密鑰下。

var params = {
    Bucket: bucketName,
    Key: "ASDF-XYZ/MyFile.jpg",
    IfMatch: eTag,
    };

var fileStream = s3.getObject(params).createReadStream();

這可行。 那么,有什么方法可以檢查文件是否存在於數字目錄中(為澄清起見),代碼從該目錄中讀取,否則應該從GUID目錄獲取圖像? 我嘗試過try-catch,但這不起作用。

通常的做法是使用headObject檢查S3中的元數據,您可以使用它來查找是否存在該錯誤,如果存在,則返回舊樣式。

以下代碼博客假定您首先嘗試數字目錄,然后回退到GUID。

s3.headObject(numericDirectoryParams).on('success', function(response) {
  return s3.getObject(numericDirectoryParams).createReadStream();
}).on('error',function(error){
  // File did not exist in numeric directory, get in GUID
  return s3.getObject(GUIDparams).createReadStream();
}).send();

暫無
暫無

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

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