【问题标题】:How to check an AWS S3 key for existence with the AWS CPP SDK?如何使用 AWS CPP 开发工具包检查 AWS S3 密钥是否存在?
【发布时间】:2019-07-01 10:50:01
【问题描述】:

我使用 S3 SDK CPP 并有以下场景:

  1. 我收到一些信息从客户端发送到我的服务器(客户端想要从 S3 下载)
  2. 根据发送的信息,我创建了一个 S3 密钥
  3. 我想检查 S3 上是否存在密钥(有文件)
  4. 我创建了一个预签名 URL,允许客户端从 S3 下载文件
  5. 向客户端发送 URL
  6. 客户端下载文件

在执行第 4 步之前,我想检查密钥是否真的存在于 S3 上。客户端无法下载不存在的文件。

我有一个AWS::S3Client 对象。我真的需要为此创建一个 TransferManager 还是有一种简单的方法可以使用客户端对象来处理它?

客户端本身与 S3 没有关系,所以我无法在那里检查它。服务器必须完成所有工作。

【问题讨论】:

    标签: c++ amazon-web-services amazon-s3 aws-sdk aws-sdk-cpp


    【解决方案1】:

    我找到了一个可行的解决方案:

    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?
    

    【讨论】:

      【解决方案2】:

      针对对象发出经过身份验证的 HTTP HEAD 请求。您可以使用:

      引用:

      HEAD 操作从对象中检索元数据而不返回 对象本身。如果您只感兴趣,此操作很有用 在对象的元数据中。要使用 HEAD,您必须对 对象。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-16
        • 1970-01-01
        • 2011-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-14
        • 2016-11-10
        相关资源
        最近更新 更多