Вызов API для получения списка файлов по пути s3 в aws с использованием библиотеки boto3 python - PullRequest
0 голосов
/ 10 июля 2020

Я новичок в aws. Я ищу python вызовы API библиотеки boto3 в aws для приведенного ниже сценария ios.

  1. вызов API для получения списка файлов с использованием s3 path
  2. API вызов для удаления всех файлов по пути s3
  3. вызов API, чтобы проверить, является ли данный путь s3 выходом или нет

Я ценю, если кто-нибудь может мне помочь в этом.

1 Ответ

1 голос
/ 10 июля 2020

«Пути» (каталоги, папки) фактически не существуют в Amazon S3. Он использует плоскую (неиерархическую) модель хранения, в которой имя файла (Key) каждого объекта содержит полный путь к объекту .

Однако большая часть функциональных возможностей путей по-прежнему предоставляется путем ссылки на Prefix, который относится к первой части ключа.

Например, предположим, что существует объект с ключом: invoices/january/invoice.txt

Это имеет префикс invoices/, а также префикс invoices/january/. Префикс просто проверяет «Начинается ли ключ с этой строки?»

Следовательно, вы можете получить список файлов, используя путь s3 с:

import boto3

s3_resource = boto3.resource('s3')

for object in s3_resource.Bucket('my-bucket').objects.filter(Prefix='invoices/'):
    print(object.key)

Или , используя метод client:

import boto3

s3_client = boto3.client('s3')

response = s3_client.list_objects_v2(Bucket='my-bucket', Prefix='invoices/')

for object in response['Contents']:
    print(object['Key'])

To удалить все файлы по пути s3 , вам нужно будет использовать приведенный выше код для итерации по каждому объекту, а затем позвоните по номеру delete_object(). В качестве альтернативы вы можете создать список ключей для удаления, а затем вызвать delete_objects().

To проверить, является ли данный путь s3 выходом или нет вы можете позвонить head_object(). Обратите внимание, что это будет работать с объектом , , но не будет работать с «путем», потому что каталоги на самом деле не существуют.

Однако, если вы создаете папку в управлении Amazon S3 console, создается объект нулевой длины с именем каталога. Это заставит "казаться", что каталог существует, но это не обязательно. Вы можете создать объект по любому пути, фактически не создавая каталоги. Они просто «появятся». Затем, когда все объекты в этом каталоге будут удалены, каталог больше не будет отображаться. Это magi c!

См. Также: Примеры Amazon S3 - документация Boto3

...