AWS 按计划将文件下载到 s3

用户433342

现在我有一个每天运行一次的 cron 作业。它将 curl 命令通过管道传输到文件中,对该文件进行 gzip,然后将其上传到 s3 存储桶。我想把它从我的服务器上移到 aws 工具中。目前推荐的方法是什么?制作一个 lambda 函数并安排它每天运行?

塞巴斯蒂安·斯托马克

最具成本效益的选项是您描述的选项:

aws lambda add-permission --function-name my-function\
                          --action 'lambda:InvokeFunction' --principal events.amazonaws.com
                          --statement-id events-access \
                          --source-arn arn:aws:events:*:123456789012:rule/*

[更新]:如果要下载的文件是 4Gb 怎么办?

在这种情况下,您将有两个选择。一种具有更多工作但更具成本效益的方法。一个更容易实现,但可能会花费更多。

选项 1:完全无服务器

您可以设计您的 AWS Lambda 函数来下载 4GB 内容并将其以 5 Mb 块的速度流式传输到 S3 并逐块压缩。我不是压缩专家,但我相信一定可以找到一个为您处理的库。缺点是你需要编写特定的代码,它不会像结合 AWS CLI 和 GZIP 命令行工具那么容易。

选项 2:在作业期间启动 EC2 实例

计划的 Lambda 函数可以使用 EC2 的 API 来启动实例。可以使用userdata实例将在启动时执行的脚本)将作业脚本传递给实例该脚本可以TerminateInstance在工作完成时调用以杀死自己并停止为其收费。缺点是,你将不得不为此付出代价的实例在运行的时候(你可以有750H /月免费t2.micro情况下),值得肯定的是,你可以使用标准的命令行工具,如AWS CLI和GZIP,你将有很多用于您的任务的本地存储。

以下是如何从 Python 启动实例:https : //boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#EC2.Client.start_instances

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章