如何使用 AWS CPP SDK 检查 AWS S3 密钥是否存在?
How to check an AWS S3 key for existence with the AWS CPP SDK?
我使用 S3 SDK CPP 并有以下情况:
- 我收到一些从客户端发送到我的服务器的信息(客户端想从 S3 下载)
- 根据发送的信息,我创建了一个 S3 密钥
- 我想检查密钥在 S3
上是否存在(有文件)
- 我创建了一个预签名 URL 允许客户端从 S3
下载文件
- 发送URL给客户
- 客户端下载文件
在执行第 4 步之前,我想检查密钥是否真的存在于 S3 上。客户端无法下载一个本来就不存在的文件。
我有一个 AWS::S3Client
对象。我真的需要为此创建一个 TransferManager 还是有一种简单的方法来处理客户端对象?
客户端本身与 S3 没有关系,所以我无法在那里查看。服务器必须完成所有工作。
针对对象发出经过身份验证的 HTTP HEAD 请求。您可以使用:
引用:
The HEAD operation retrieves metadata from an object without returning
the object itself. This operation is useful if you're only interested
in an object's metadata. To use HEAD, you must have READ access to the
object.
我找到了可行的解决方案:
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?
我使用 S3 SDK CPP 并有以下情况:
- 我收到一些从客户端发送到我的服务器的信息(客户端想从 S3 下载)
- 根据发送的信息,我创建了一个 S3 密钥
- 我想检查密钥在 S3 上是否存在(有文件)
- 我创建了一个预签名 URL 允许客户端从 S3 下载文件
- 发送URL给客户
- 客户端下载文件
在执行第 4 步之前,我想检查密钥是否真的存在于 S3 上。客户端无法下载一个本来就不存在的文件。
我有一个 AWS::S3Client
对象。我真的需要为此创建一个 TransferManager 还是有一种简单的方法来处理客户端对象?
客户端本身与 S3 没有关系,所以我无法在那里查看。服务器必须完成所有工作。
针对对象发出经过身份验证的 HTTP HEAD 请求。您可以使用:
引用:
The HEAD operation retrieves metadata from an object without returning the object itself. This operation is useful if you're only interested in an object's metadata. To use HEAD, you must have READ access to the object.
我找到了可行的解决方案:
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?