我有将项目从一个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分钟。有没有类似的东西我可以用更长的时间。
发布于 2019-05-21 03:38:29
你可以使用Data Pipeline。数据管道会产生一个EC2实例,您可以在该实例中运行作业。您可以安排管道至少每15分钟运行一次。(但不是更少)也可以选择创建一个您可以按需运行的管道。它还提供了一个控制台,您可以在其中查看作业及其结果,并有机会重新运行失败的作业。
对于这类活动,您可能应该使用以下代码:
https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-shellcommandactivity.html
另一种选择是启动一个EC2实例,运行作业,然后停止它。
https://stackoverflow.com/questions/56226742
复制相似问题