簡體   English   中英

如何使用 AWS CPP SDK 檢查 AWS S3 密鑰是否存在?

[英]How to check an AWS S3 key for existence with the AWS CPP SDK?

我使用S3 SDK CPP並有以下情況:

  1. 我得到一些從客戶端發送到我的服務器的信息(客戶端想從S3下載)
  2. 發送信息后,我創建了一個S3密鑰
  3. 我想檢查S3上是否存在密鑰(有文件)
  4. 我創建了一個預先簽名的 URL,允許客戶端從S3下載文件
  5. 發送 URL 給客戶端
  6. 客戶端下載文件

在執行第 4 步之前,我想檢查密鑰是否真的存在於 S3 上。 客戶端無法下載無論如何都不存在的文件。

我有一個AWS::S3Client對象。 我真的需要為此創建一個TransferManager還是有一種簡單的方法來處理這個客戶端對象?

客戶端本身與S3沒有關系,所以我無法在那里檢查它。 服務器必須完成所有工作。

我找到了一個可行的解決方案:

auto client = Aws::MakeShared<Aws::S3::S3Client>("client", getCredentials(), getClientConfig());
Aws::S3::Model::HeadObjectRequest request;
request.WithBucket(<bucketname>).WithKey(<s3key>);
const auto response = client->HeadObject(request);
response.IsSuccess(); //Is key existing on s3?

針對對象發出經過身份驗證的 HTTP HEAD 請求。 您可以使用:

報價:

HEAD 操作從對象中檢索元數據,而不返回對象本身。 如果您只對對象的元數據感興趣,則此操作很有用。 要使用 HEAD,您必須對該對象具有 READ 訪問權限。

暫無
暫無

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

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