考虑我只想从存储桶中下载10个文件,我们如何将10作为参数传递。
答案 0 :(得分:0)
您的用例似乎是:
据推测,这10个文件不应该是以前下载过的文件。
没有内置的S3功能可以下载随机选择的文件。相反,您需要:
这可以通过编程语言(例如Python)轻松完成,您可以在其中获取文件名数组,随机化,然后遍历列表并下载每个文件。
您也可以在shell脚本中调用AWS Command-Line Interface (CLI)获取列表(aws s3 ls
)并复制文件(aws s3 cp
)。
或者,您可以选择将 ALL 文件同步到本地计算机(aws s3 sync
),然后选择要处理的随机本地文件。
尝试以上步骤。如果您遇到困难,请发布您的代码以及您遇到的错误/问题,我们可以提供帮助。
答案 1 :(得分:0)
最简单的方法是创建一个可以每30分钟运行一次的python脚本。我编写了可以完成工作的python代码:
import boto3
import random
s3 = boto3.client('s3')
source=boto3.resource('s3')
keys = []
resp = s3.list_objects_v2(Bucket='bucket_name')
for obj in resp['Contents']:
keys.append(obj['Key'])
length = len(keys);
for x in range(10):
hello=random.randint(0,length)
source.meta.client.download_file('bucket_name', keys[hello] , keys[hello])
在第12行中,您可以传递一个数字作为参数,该参数将定义您要下载的随机文件的数量。此外,如果您希望脚本每30分钟自动执行一次任务,那么您可以将上面的代码定义为单独的方法,然后可以使用" sched" python模块重复调用此方法,您可以在此处找到链接中的代码: What is the best way to repeatedly execute a function every x seconds in Python?