Aws лямда, перемещая все xmls из ведра в другое ведро - Python - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть требование, когда у меня есть два примера bucket Bucket1 и bucket2. Bucket1 содержит все XML файлы. Я хочу переместить все файлы xmls из bucketA в BucketB (все файлы). а затем Удалить все файлы из BucketA.

Я использую Boto3 с Python лямбда-функцией - Это будет запускать на основе событий, как только любой файл обновляется в BucketA

1 Ответ

0 голосов
/ 25 февраля 2020

Вы можете попробовать ниже:

import boto

c = boto.connect_s3()
src = c.get_bucket('source_bucket')
dst = c.get_bucket('destination_bucket')

for k in src.list():
    # copy files to your destination bucket
    dst.copy_key(k.key.name, src.name, k.key.name)
    # then delete the source key
    k.delete()

Другой метод, который я сделал, как показано ниже:

def get_object(s3, bucketName, file):

    try:
        s3_file = s3.get_object(
        Bucket = bucketName,
        Key = file
        )


        return s3_file

    except Exception as e:

        logger.info('file not found')



#Decription: This method enables to put file long with its conetent from one location to another
def move_objects(s3, bucketName, file, newFolder):

    #s3_object = s3.get_object(Bucket=bucketName, Key=file)

    #serializedObject = file['Body'].read().decode('utf-8')

    response = s3.put_object(
        Bucket = bucketName,
        Key = newFolder,
        Body = file.read().decode('utf-8')
        )


#Decription: This method enables to delete file from its original location
def delete_objects(s3, bucketName, file):

    response = s3.delete_object(
        Bucket = bucketName,
        Key = file

        )

Также см. Это видео: https://youtu.be/7gqvV4tUxmY

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