Удаление объектов из подпапки в корзине S3

Я пытаюсь удалить объекты, существующие в подпапке корзины S3. Ниже показано, что я пытаюсь сделать на С#:

string subBucketName = "TS-AP/";
var amazonS3Client = new AmazonS3Client(accessKeyId, secretAccessKey, RegionEndpoint.GetBySystemName(region));

amazonS3Client.DeleteObjectAsync(new Amazon.S3.Model.DeleteObjectRequest() { BucketName = BucketName, Key = subBucketName + "/" + d.StoredFileName});

В приведенном выше коде subBucketName — это подпапка внутри корзины S3, поэтому имя моей корзины — «Connect», а имя подпапки — «TS-AP». Файл, который я хочу удалить, существует в подпапке «TS-AP». когда я запускаю приведенный выше код, он не выдает никаких ошибок, он просто запускается, но я не вижу файлов, удаленных в корзине S3.

любая помощь будет оценена по достоинству.

Если вы добавите оператор отладки для печати subBucketName + "/" + d.StoredFileName, будет ли он точно соответствовать ключу объекта, как показано в консоли управления S3?

John Rotenstein 02.05.2024 07:50

Имя файла и имя подпапки точно такие же. Единственное отличие — одна косая черта. Не уверен, нужны ли мне 2 косые черты или одна косая черта. Я попробую два удара прямо сейчас. Имя подпапки выглядит следующим образом: «TS-AP/».

Anjali 02.05.2024 08:00

на самом деле имя подпапки — «TS-AP/».

Anjali 02.05.2024 08:10

Будет ли это работать, если вы жестко закодируете имя файла? Пример: { BucketName = BucketName, Key = "TS-AP/file1"});

John Rotenstein 02.05.2024 08:22

Нет, это не так. Файл все еще существует в подпапке. Возможно ли отложенное удаление.

Anjali 02.05.2024 08:36

Двойная косая черта в вашем коде будет означать Key = 'TS-AP//file1', что не сработает. Удаление происходит мгновенно. Подпапки на самом деле не существуют в S3 — вместо этого ключ содержит полный путь к объекту. Вы на 100% уверены, что у вас есть подходящее ведро и ключ? Обратите внимание: если удаляемый объект не существует, ошибка не возникнет. Я предлагаю вам скопировать ключ из консоли S3 и вставить его как жестко закодированный на данный момент, чтобы убедиться в отсутствии ошибок при вводе.

John Rotenstein 02.05.2024 09:08

Ты был прав. Это был ключевой вопрос. Я скопировал и вставил ключ, и все заработало! Мне бы хотелось получить ошибку в коде, тогда было бы проще. Спасибо за все что ты сделал для меня!

Anjali 02.05.2024 19:16
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
7
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Двойная косая черта в вашем коде будет означать Key = 'TS-AP//file1', что не сработает.

Удаление происходит мгновенно.

Подпапки на самом деле не существуют в S3 — вместо этого ключ содержит полный путь к объекту.

Вы на 100% уверены, что у вас есть подходящее ведро и ключ? Обратите внимание: если удаляемый объект не существует, ошибка не возникнет.

Я предлагаю вам скопировать ключ из консоли S3 и вставить его как жестко закодированный на данный момент, чтобы убедиться в отсутствии ошибок при вводе.

Спасибо. Я скопировал и вставил ключ, и все заработало!

Anjali 03.05.2024 02:08

Другие вопросы по теме

Похожие вопросы

Отображение цвета в datagridview со значением календаря
C# Как преодолеть обнуляемость интерфейса для геттеров
Невозможно получить ProjectContext для Project Online из SharePoint Office 365 и получить ошибку 403 в .NET 8
Как исправить значения положения мыши, чтобы они были большими в единице
WinUI 3 Как создать библиотеку пользовательских элементов управления
Несколько экземпляров объекта, предоставляемого посредством внедрения зависимостей
Могу ли я настроить автоматическое выполнение асинхронной операции после завершения другой асинхронной операции?
Как выбрать строку сетки данных, щелкнув за пределами содержимого
Как решить исключение «Неожиданный источник запроса: присоединиться к ICacheEntry в CacheQueryable» при выполнении левого соединения с использованием linq в Apache Ignite?
Вызов универсального метода расширения с типом, известным во время выполнения, в качестве аргумента