Создайте index.html для AWS S3 - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь смоделировать список каталогов для моей корзины на ASW S3.В настоящее время я создаю «index.html» локально следующим образом:

    for root, dirs, files in os.walk(job_dir):
    objects = []

    for obj in dirs+files:
        m_time_epoch = os.stat(os.path.join(path,obj)).st_mtime
        mtime = datetime.fromtimestamp(m_time_epoch).strftime('%c')
        size = os.stat(os.path.join(path,obj)).st_size
        type = 'dir' if os.path.isdir(os.path.join(path,obj)) else 'file'
        objects.append({'name': obj,
                        'mtime': mtime,
                        'size': size,
                        'type': type})

    generate_index(objects, dest_path)

И затем передаю его вместе с целевым путем (URL-адресом корзины) функции, которая создаст «index.html» с использованием шаблона jinja.

Есть ли лучший способ сделать это?Я хотел бы избежать JavaScript, хотя.Я немного погуглил, но до сих пор не нашел элегантного решения.

Какая была бы самая простая альтернатива "os.walk" с использованием python-клиента boto3?

Я нашел несколько фрагментов, например, здесь:

Как мне перечислить содержимое каталога корзины S3, используя Python и Boto3?

Но там нетболее простое решение?

Спасибо ...

1 Ответ

0 голосов
/ 08 июня 2018

Я бы рекомендовал использовать метод list_objects_v2 в boto3.

import boto3

s3 = boto3.client('s3')

paginator = s3.get_paginator('list_objects_v2')

response_iterator = paginator.paginate(
    Bucket='MyBucket'
)

objects = []
for response in response_iterator:
    for r in response['Contents']:
        print("File is called {}".format(r['Key']))

Итерируя по объектам в корзине, вы могли бы построить объект, который вы могли бы передатьJinja шаблон для создания index.html страницы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...