通过Lambda实现URL文件直接上传到S3
2023-02-26 12:32:27 时间
对象存储已经是公有云厂商的标准服务,所有厂商都支持在对象存储服务上提供基于对象的上传,下载等服务。但原生的服务接口通常默认上传下载的数据位置一端为本地,一端为云上。但如果需要上传到对象服务的文件是存在某个通过URL可访问的数据,在AWS上还需要客户自行完成下载之后,再使用cli或者sdk向S3上传。另外,在很多业务场景中,用户需要批量下载互联网资源并上传到S3中。
本文介绍一个基于lambda的实现,可以帮助客户直接指定数据源的URL并自动完成数据的下载和上传过程。如下图所示,用户可以通过设置url,bucket,prefix等参数调用Lambda函数完成网上数据的抓取和S3上传,上传后的文件位置会返回给客户。
AWS Lambda 是一项无服务器计算服务,可运行代码来响应事件并为您自动管理底层计算资源。Lambda 在高可用性计算基础设施上运行代码,用于执行计算资源的所有管理工作。这包括服务器和操作系统维护、容量调配和弹性伸缩、代码和安全补丁部署以及代码监控和日志记录。您只需要提供代码,而无需关心后端计算资源的管理和运维。
在这篇blog中,我们将介绍通过lambda实现URL文件直接上传到S3并通知到客户的具体方法。
第一步 构建docker容器镜像
- 在你的运行环境中安装docker与git, 并确保你有AWS账户可以访问ECR,Lambda等服务。
- 在terminal 中运行:#git clone https://github.com/zhaoanbei/url2s3.git
- clone到本地的文件目录如下:
- 查看Dockerfile内容如下:
- py代码如下:其中,get_file用于下载文件,upload_file用于上传文件:
第二步 容器镜像上传到ECR服务
- 按照https://docs.aws.amazon.com/zh_cn/AmazonECR/latest/userguide/repository-create.html创建私有 repository(AWS控制台进入repository, 根据右上角view push demands进行image build与push操作)
第三步 创建Lambda函数
- 进入lambda控制台,选择create function, Container image, 选择之前构建的repository,latest镜像版本。
- 创建完成后,配置对应的Memory, Ephemeral storage与Timeout。这里需要注意的是,如果预期要获取的文件较大,请调整‘Ephemeral storage’的大小到合理的取值(最大为10GB)
- 在Test下编辑测试事件,点击右上角save changes, Test。测试过程中可以通过Lambda的控制台结合CloudWatch的日志组进行过程的跟踪和分析。
第四步 本地触发Lambda函数
通过git代码仓库中的python_invoke.ipynb,可以实现对应的lambda调用。有关boto3可参考:https://boto3.amazonaws.com/v1/documentation/api/latest/index.html
以下是python_invoke.ipynb的具体实现,可以返回已保存的文件在S3中的位置:
通过本工具,用户可以自动完成针对特定URL文件的自动S3上传。后续会继续改进本工具,以期实现批量数据的自动同步和异步上传等功能。
本篇作者
相关文章
- Jgit的使用笔记
- 利用Github Action实现Tornadofx/JavaFx打包
- 叹息!GitHub Trending 即将成为历史!
- 微软软了?开源社区讨论炸锅,GitHub CEO 亲自来答
- GitHub Trending 列表频现重复项,前后端都没去重?
- Photoshop Elements 2021版本软件安装教程(mac+windows全版本都有)
- (ps全版本)Photoshop 2020的安装与破解教程(mac+windows全版本都有)
- (ps全版本)Photoshop cc2018的安装与破解教程(mac+windows全版本,包括2023
- 环境搭建:Oracle GoldenGate 大数据迁移到 Redshift/Flat file/Flume/Kafka测试流程
- 每个开发人员都要掌握的:最小 Linux 基础课
- 来撸羊毛了!Windows 环境下 Hexo 博客搭建,并部署到 GitHub Pages
- 超实用!手把手入门 MongoDB:这些坑点请一定远离
- 【GitHub日报】22-10-09 zustand、neovim、webtorrent、express 等4款App今日上新
- 【GitHub日报】22-10-10 brew、minio、vite、seaweedfs、dbeaver 等8款App今日上新
- 【GitHub日报】22-10-11 cobra、grafana、vue、ToolJet、redwood 等13款App今日上新
- Photoshop 2018 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2017 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2020 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2023 资源免费下载(mac+windows全版本都有,包括最新的2023)
- 最新版本Photoshop CC2018软件安装教程(mac+windows全版本都有,包括2023