Как выполнить итерацию в папке на s3 с помощью boto3? - PullRequest
0 голосов
/ 19 декабря 2018

В моем экземпляре в s3 у меня есть папка с N файлами, мне нужно выполнить итерации по этому сценарию, приведенному ниже, мне нужно получить все файлы и преобразовать его, этот сценарий размещен на экземпляре ec2, работающем с django.

Я много пробовал, используя функцию boto3 get_object, но все, что я получаю, это ничего.

Может кто-нибудь сказать, пожалуйста, как я могу сделать что-то подобное? Мне нужно скачать этофайлы перед конвертированием или можно сделать это напрямую?

 def upload_folder_to_s3(local_folder, destination_folder, s3_bucket):
    '''
    Function to upload a specific local folder to S3 bucket.

    Parameters:
    local_folder (str): Path to local folder.
    destination_folder (str): Path to destination folder on S3.
    s3_bucket (str): Bucket name on S3.

    Return:
    '''
    # Global variables
    global client

    # Iterate over files on folder
    for root, dirs, files in os.walk(local_folder):
        for filename in files:
            print(filename)
            # construct the full local path
            local_path = os.path.join(root, filename)

            # construct the full Dropbox path
            relative_path = os.path.relpath(local_path, local_folder)
            s3_path = os.path.join(destination_folder, relative_path)

            # relative_path = os.path.relpath(os.path.join(root, filename))

            print('Searching "%s" in "%s"' % (s3_path, s3_bucket))
            try:
                client.get_object(Bucket=s3_bucket, Key=s3_path)
                print("Path found on S3! Skipping %s..." % s3_path)

                # try:
                    # client.delete_object(Bucket=bucket, Key=s3_path)
                # except:
                    # print "Unable to delete %s..." % s3_path
            except:
                print("Uploading %s..." % s3_path)
                client.upload_file(local_path, s3_bucket, s3_path)
    return local_folder
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...