Как проверить наличие ключа AWS S3 в AWS CPP SDK? - PullRequest
0 голосов
/ 07 февраля 2019

Я использую S3 SDK CPP и имею следующий ценарио:

  1. Я получаю некоторую информацию, отправленную клиентом на мой сервер (клиент хочет загрузить с S3 )
  2. С отправленной информацией я создаю S3 ключ
  3. Я хочу проверить, существует ли ключ (есть файл) на S3
  4. Я создаю заданный URL-адрес, который позволяет клиенту загружать файл с S3
  5. Отправить URL-адрес клиенту
  6. Клиент загружаетfile

Перед тем, как выполнить шаг 4, я хочу проверить, существует ли ключ на S3.Клиент не может загрузить файл, который все равно не существует.

У меня есть AWS::S3Client объект.Мне действительно нужно для этого создать TransferManager или есть простой способ справиться с этим с помощью объекта client?

Сам клиент не имеет отношения к S3 , поэтому я не могу проверить это там.Сервер должен делать всю работу.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Я нашел результат:

auto client = Aws::MakeShared<Aws::S3::S3Client>("client", getCredentials(), getClientConfig());
Aws::S3::Model::HeadObjectRequest request;
request.WithBucket(<bucketname>).WithKey(<s3key>);
const auto res = client->HeadObject(request);
res.IsSuccess(); //Is key existing on s3?
0 голосов
/ 07 февраля 2019

Выполнить аутентифицированный HTTP-запрос HEAD к объекту.Вы можете использовать:

Цитировать:

Операция HEAD извлекает метаданные из объекта, не возвращая сам объект.Эта операция полезна, если вас интересуют только метаданные объекта.Чтобы использовать HEAD, вы должны иметь доступ READ к объекту.

...