Запуск кода Python (Boto3) удаленно (AWS) - PullRequest
1 голос
/ 20 мая 2019

У меня есть код, который перемещает предметы из одной корзины s3 в другую. Я запускаю его локально на моем компьютере. Однако для завершения работы потребуется много времени, так как в ведре много предметов.

import boto3
#Get resource
s3 = boto3.resource('s3')
#Get reference to buckets
src = s3.Bucket('src')
dst = s3.Bucket('dst')

#Iterate through the items in the source bucket
for item in src.objects.all():
    #Creates a copy of the item?
    copy_source = {
        'Bucket' : 'src',
        'Key' : item.key
    }
    #Places the copy of the item in the destination bucket
    dst.copy(copy_source,'Images/'+item.key)

Можно ли как-нибудь запустить этот код удаленно, чтобы мне не приходилось его контролировать? Я пробовал AWS лямбда, но у него максимальное время работы 15 минут. Есть ли что-то подобное, что я мог бы использовать, но на более длительное время.

1 Ответ

2 голосов
/ 20 мая 2019

Вы можете использовать конвейер данных . Конвейер данных порождает экземпляр EC2, где вы можете выполнить свою работу. Вы можете запланировать запуск конвейера как минимум каждые 15 минут. (Но не меньше) Существует также возможность создать конвейер, который вы запускаете по требованию. Он также предлагает консоль, где вы можете просматривать задания и их результаты, а также иметь возможность повторно запускать сбойные задания.

Для этого вида деятельности вы, вероятно, должны использовать это:

https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-shellcommandactivity.html

Другой вариант - просто запустить экземпляр EC2 и запустить его, а затем остановить его.

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