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

本文涉及的产品
对象存储 OSS,20GB 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。

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
8天前
|
监控 Serverless 测试技术
Serverless 应用引擎常见问题之生成的图片的oss地址配成自定义的域名如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
31 0
|
8天前
|
存储 关系型数据库 分布式数据库
PolarDB常见问题之PolarDB冷存数据到OSS之后恢复失败如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
8天前
|
机器学习/深度学习 存储 分布式计算
机器学习PAI常见问题之DLC的数据写入到另外一个阿里云主账号的OSS中如何解决
PAI(平台为智能,Platform for Artificial Intelligence)是阿里云提供的一个全面的人工智能开发平台,旨在为开发者提供机器学习、深度学习等人工智能技术的模型训练、优化和部署服务。以下是PAI平台使用中的一些常见问题及其答案汇总,帮助用户解决在使用过程中遇到的问题。
|
3天前
|
存储 弹性计算 数据库
阿里云oss备份网站数据的详细步骤
该教程指导如何使用阿里云OSS备份网站数据。首先,注册阿里云账号并购买40GB的OSS存储空间。创建Bucket,选择与服务器相同的区域和私有权限。安装阿里云OSS插件,获取AccessKey信息。在宝塔面板中设置计划任务进行网站或数据库备份,选择内网域名以节省流量。备份完成后,通过文件管理器检查OSS中是否有备份文件。下载备份文件需点击文件名,然后打开文件URL。
|
8天前
|
存储 Serverless 对象存储
通过FC运行脚本下载文件到OSS
本文介绍了在阿里云中使用函数计算服务(Function Compute)从URL下载文件并存储到OSS(Object Storage Service)的步骤。首先,需开通函数计算服务并创建RAM角色,授权函数计算访问OSS权限。费用详情参考官方计费概述。操作步骤包括:登录OSS控制台,使用公共模板创建执行,配置参数并运行Python脚本,脚本负责从URL下载文件并上传至指定OSS Bucket。执行成功后,文件将出现在目标OSS Bucket中。
47 0
|
8天前
|
分布式计算 DataWorks 数据处理
DataWorks产品使用合集之在DataWorks中管理MaxCompute模块的步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
35 0
|
8天前
|
DataWorks 对象存储 分布式计算
DataWorks产品使用合集之DataWorks在将数据写入OSS时,会将所有的字符串类型的字段进行trim操作如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
30 1
|
8天前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之在DataWorks中,同步OSS中的数据的步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
30 0
|
8天前
|
运维 Serverless 文件存储
Serverless 应用引擎产品使用之阿里函数计算中Serverless应用进行数据持久化操作如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
27 2
|
8天前
|
运维 Java Serverless
Serverless 应用引擎产品使用之数据文件(例如sdxl)超过了OSS(对象存储服务)的单个上传大小限制(5GB)如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
26 1

热门文章

最新文章