远程(AWS)远程运行Python代码(Boto3)

时间:2019-05-20 19:04:03

标签: python-3.x amazon-web-services

我有将项目从一个s3存储桶移动到另一个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 lambda,但最长运行时间为15分钟。有更长的时间可以使用吗?

1 个答案:

答案 0 :(得分:2)

您可以使用Data Pipeline。 数据管道会产生一个EC2实例,您可以在其中运行作业。 您可以安排管道至少每15分钟运行一次。 (但不少) 还可以选择创建一个按需运行的管道。 它还提供了一个控制台,您可以在其中查看作业及其结果,并有机会重新运行失败的作业。

对于这种活动,您可能应该使用:

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

另一种选择是仅启动EC2实例运行您的作业,然后停止它。