OSS使用函数计算实现数据实时同步方案

本文涉及的产品
对象存储 OSS,20GB 3个月
函数计算FC,每月15万CU 3个月
对象存储 OSS,内容安全 1000次 1年
简介: OSS作为存储文件的服务是用户储存业务的首选,本文介绍了使用函数计算服务实现不同bucket之间的自动实时同步方案

实现原理

OSS和函数计算无缝集成,通过为OSS各种类型的事件设置处理函数,当OSS系统捕获到指定类型的事件后,会自动调用函数处理。例如,您可以设置函数来处理PutObject事件,当您调用OSS PutObject API上传图片到bucket后,相关联的函数会自动触发获取该图片实时同步上传到其他的bucket中。
image.png

准备工作

需要准备的内容有:
开通OSS服务:有对应的AccessKey ID,AccessKey Secret,OSS EndPoint;
授权:需要给函数计算的账号授权OSS的读写权限。

实现方式

我们需要在函数计算上实现的内容有:
1.创建函数计算的服务;
2.创建生成任务的函数,创建OSS触发器;
3.函数计算代码接收到回调后上传到文件到新bucket,完成同步;

实现步骤

1.创建新服务
在函数计算的控制台创建一个服务,可以在创建时进行高级配置,也可以创建后再行设置。
image.png
高级配置:在高级配置—>权限配置中,如果没有已有角色,需要创建一个新角色,选择AliyunOSSFullAccess,点击授权。
image.png
登录RAM访问控制 > RAM角色管理,找新创建的角色,点击添加权限,添加AliyunOSSFullAccess、AliyunSTSAssumeRoleAccess、AliyunLogFullAccess权限(如果已经授权,则不要添加)。
2 编写函数
在创建的服务下,创建一个函数,用于生成任务:
新建一个函数:bucket_synvc
函数入口:oss_sync.handler
运行环境:Python3
函数执行内存:512MB(选择最小值128MB已经够用,这个和函数计算的计费相关)
超时时间:600s
函数内容如下,需要用户替换的参数:
OSS账号相关的Bucket、OSS EndPoint(如果bucket同区域可以选择内网)

# -*- coding: utf-8 -*-
import json
import time
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.auth.credentials import StsTokenCredential
from aliyunsdkcore.request import CommonRequest
import oss2
import logging
ossEndPoint = "您的OSS EndPoint"            # oss账号EndPoint,请选择外网访问
remoteEndpoint = "目的bucket Endpoint"   
remoteBucket = "目的bucket" 
def handler(event, context):
    logger = logging.getLogger()
    logger.info(event)
    eventObj = json.loads(event)["events"]
    eventName=eventObj[0]["eventName"]
    bucketName=eventObj[0]["oss"]["bucket"]["name"]
    ossFileName=eventObj[0]["oss"]["object"]["key"]
    logger.info("eventName: %s" % eventName)
    logger.info("bucketName: %s" % bucketName)
    logger.info("ossFileName: %s" % ossFileName)
    appKey = fileTransAppkey
    # create file url
    auth = oss2.StsAuth(creds.accessKeyId, creds.accessKeySecret, creds.securityToken)
    bucket = oss2.Bucket(auth, ossEndPoint, bucketName)
    fileLink = bucket.sign_url('GET', ossFileName, 3600)
    logger.info("file link = " + fileLink)
    # 上传到目的bucket
    bucket1 = oss2.Bucket(auth, remoteEndpoint, remoteBucket)
    input = requests.get('http://www.aliyun.com')
    bucket.put_object(ossFileName, input)    
    logger.info("Sync upload Completed  ")
    

3 配置触发器
说明:由于上传音频文件到OSS的Bucket中,上传方式:Put、Post和分片上传,所以为了能触发所有的上传事件,需要选择所有的事件:
触发器类型:对象存储触发器;
触发器名称:可自定义;
触发事件:分别选择 oss:ObjectCreated:PutObject 和 oss:ObjectCreated:PostObject oss:ObjectCreated:CompleteMultipartUpload触发器;
触发规则:这里不设置匹配整个bucket (根据自己实际情况填写);
后缀:这里不设置匹配整个bucket(根据自己实际情况填写);
角色:如果已有合适角色,可直接选择;如果没有角色,则选择新建角色。
创建结果:
image.png
创建成功后,可以在OSS控制台对应Bucket的函数计算中找到该触发器。
4日志配置
在函数设置中可以开启日志存储到日志服务,从而查看上传日志信息
image.png
至此所有配置完成,可在OSS源bucket中上传文件进行测试是否同步到目的bucket。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
2月前
|
消息中间件 缓存 Serverless
在进行实时数据处理时,FaaS 如何保证数据的一致性和处理的实时性?
在进行实时数据处理时,FaaS 如何保证数据的一致性和处理的实时性?
|
2天前
|
人工智能 Serverless API
尽享红利,Serverless构建企业AI应用方案与实践
本次课程由阿里云云原生架构师计缘分享,主题为“尽享红利,Serverless构建企业AI应用方案与实践”。课程分为四个部分:1) Serverless技术价值,介绍其发展趋势及优势;2) Serverless函数计算与AI的结合,探讨两者融合的应用场景;3) Serverless函数计算AIGC应用方案,展示具体的技术实现和客户案例;4) 业务初期如何降低使用门槛,提供新用户权益和免费资源。通过这些内容,帮助企业和开发者快速构建高效、低成本的AI应用。
33 12
|
3月前
|
Cloud Native 关系型数据库 Serverless
基于阿里云函数计算(FC)x 云原生 API 网关构建生产级别 LLM Chat 应用方案最佳实践
本文带大家了解一下如何使用阿里云Serverless计算产品函数计算构建生产级别的LLM Chat应用。该最佳实践会指导大家基于开源WebChat组件LobeChat和阿里云函数计算(FC)构建企业生产级别LLM Chat应用。实现同一个WebChat中既可以支持自定义的Agent,也支持基于Ollama部署的开源模型场景。
653 28
|
3月前
|
弹性计算 关系型数据库 Serverless
告别资源瓶颈,函数计算驱动多媒体文件处理方案:https://www.aliyun.com/solution/tech-solution/fc-drive-file
本文介绍了一种基于阿里云的一键部署解决方案,利用云服务器ECS、RDS MySQL、OSS、函数计算FC及MNS等服务,实现高效的多媒体文件处理。方案通过事件驱动机制,将文件处理任务解耦,并自动弹性扩展,按需付费,简化部署流程,提高处理效率。本文还提供了详细的部署步骤与体验反馈,展示了从配置到文件处理的全过程。
|
4月前
|
消息中间件 缓存 Serverless
在进行实时数据处理时,FaaS 如何保证数据的一致性和处理的实时性?
在进行实时数据处理时,FaaS 如何保证数据的一致性和处理的实时性?
|
4月前
|
存储 前端开发 Serverless
Serverless 魔法之旅:如何用 Funcraft、OSS 和 ROS 打造超级CI/CD流水线!
【8月更文挑战第8天】在现代软件开发中,CI/CD对于提升效率与代码质量至关重要。本文介绍如何运用阿里云的Serverless服务——Funcraft、OSS及ROS构建完整的CI/CD流程。首先配置Funcraft实现代码自动化构建与部署;接着利用OSS管理静态文件,确保网站内容正确加载;最后借助ROS自动化资源创建与管理,实现代码自动部署。通过整合这些服务,不仅加速了开发进程,还保证了代码质量和部署一致性,充分发挥Serverless架构的优势。
71 5
|
4月前
|
存储 弹性计算 Serverless
函数计算驱动多媒体文件处理方案评测体验分享
近期参与了函数计算处理多媒体文件的评测。阿里云提供了丰富的文档资源,覆盖实施全流程,适合新手上手;但部分配置细节说明不足,有待完善。示例代码优质且实用,便于学习与二次开发。函数计算展现出良好的性能与稳定性,并采用按需计费模式,有助于企业节省成本。配合阿里云生态中的其他产品,如云数据库与云存储,能有效提升多媒体文件处理的整体效能。
76 10
|
4月前
|
存储 安全 大数据
对象存储的意义:探索数据新纪元的关键基石
在信息爆炸时代,数据成为核心资产,而高效安全的数据存储至关重要。对象存储作为一种新兴技术,起源于20世纪90年代,旨在解决传统文件系统的局限性。随着云计算和大数据技术的发展,它已成为关键技术之一。对象存储具备高可扩展性、高可靠性、低成本、易于管理和多协议支持等优点。它支撑大数据发展、推动云计算繁荣、助力企业数字化转型并保障数据安全。未来,对象存储将进一步提升性能,实现智能化管理,并与边缘计算融合,获得政策支持,成为数据新时代的关键基石。
189 3
|
5月前
|
监控 Java Serverless
函数计算产品使用问题之对于OSS打包的zip的保存目录,该如何操作
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
4月前
|
存储 运维 Serverless
函数计算产品使用问题之OSS触发器是否可以只设置文件前缀
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
下一篇
DataWorks