当前位置: 首页 > news >正文

使用S3和Lambda构建AWS文件同步系统,

一、背景与需求

在实际业务中,经常会遇到这样一个需求:
当文件上传到 S3 后,自动进行处理
本案例实现的目标是:
当文件上传到源 S3 Bucket 后
自动触发处理流程

`import json
import boto3
from datetime import datetime
client = boto3.client('s3')
dynamodb_client = boto3.client('dynamodb')

def lambda_handler(event, context):
# TODO implement
source_bucket_name = "source_bucket_name"
target_bucket_name = "target_bucket_name"
file_time = datetime.now().strftime("%Y-%m-%dT%H:%M:%S.%f")
for record in event['Records']:
body = json.loads(record['body'])
message = json.loads(body['Message'])
print(message)
print(f"message:{message}")
s3_key = message['Records'][0]['s3']['object']['key']
file_size = message['Records'][0]['s3']['object']['size']
print(f"s3_key:{s3_key},file_size:{file_size}")
response = client.copy_object(
Bucket=target_bucket_name,
CopySource=f'/{source_bucket_name}/{s3_key}',
Key=s3_key,
)
dynamodb_response = dynamodb_client.put_item(
Item={
'sync_id': {
'S': s3_key,
},
'file_name': {
'S': s3_key,
},
'source_bucket': {
'S': source_bucket_name,
},
'target_bucket': {
'S': target_bucket_name,
},
'file_size': {
'N': str(file_size),
},
'sync_time': {
'S': file_time,
},
'status': {
'S': 'SUCCESS',
},
},
TableName='TableName',
)
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
`

http://www.jsqmd.com/news/609214/

相关文章:

  • Bootstrap Switch终极指南:如何在10分钟内创建精美切换开关
  • 4324324
  • 5分钟学会B站4K视频下载:免费开源工具完整指南
  • 二轮追问反杀清单:3D Spatial Agent × 镜像视界 · 现场压制级答辩
  • RagFlow实战:5分钟搞定OCR文档解析与LLM集成(附常见报错解决方案)
  • 好写作AI:当论文遇见“写作建筑师”,你的学术蓝图从此无需独自浇筑
  • 2026年如何挑市场专业对折浴帘机企业?看这里,鸡眼机/全自动桌布机/对折浴帘机/全自动浴帘机,浴帘机公司推荐 - 品牌推荐师
  • 为什么92%的Python工程师还没掌握无锁并发?——CPython 3.13 subinterpreter实战避坑清单(含内存泄漏检测脚本)
  • AI开发-python-langchain框架(--并行流程 )糯
  • 别再为CUDA版本头疼了!手把手教你用PyTorch 1.8.1 + CUDA 10.1搞定YOLOv5环境(附避坑指南)
  • sam3本地部署
  • Prometheus+Grafana:一站式搞定监控告警全链路【转】
  • ARDUINO编码器反馈电机初步代码
  • 设计模式之原型模式
  • 【车载C#中控系统开发黄金法则】:20年一线专家亲授5大避坑指南与实时响应优化秘技
  • UnattendedWinstall版本演进:从V1.0到V3.0的完整发展历程
  • 创维SK-E622v0-江西电信-2+8G-安卓11-原机备份改MAC
  • 爬虫数据分析新利器:RexUniNLU实战,从杂乱文本中提取黄金信息
  • 就在今天,DeepSeek迎来一波重要更新!DeepSeek V4要来了?
  • 别再吹牛了,% Vibe Coding 存在无法自洽的逻辑漏洞!鼐
  • 从实战出发:详解64位PWN中payload构造的堆栈对齐陷阱与调试技巧
  • 1995-1996 年阿拉斯加北坡 ARCSS/LAII 通量站点的北极植被样地
  • SOLIDWORKS右键菜单功能消失?3分钟快速恢复‘打包‘‘重命名‘功能(附注册表修复指南)
  • 系统思考与艺术浸润
  • AI开发-python-langchain框架(--并行流程 )改
  • 手把手教你:在无外网服务器上用Docker离线搭建Jitsi-Meet视频会议系统
  • 构建仓库与包管理
  • 利用SESSION进行文件包含
  • Docker(1) 底层原理一站式学习!!!(零基础保姆式 通俗易懂)
  • SetFit模型性能基准测试:与主流小样本方法的全面对比