更新时间:2025-09-11 GMT+08:00
分享

源端配置同步请求

操作场景

创建同步任务后,您需要在源端配置同步请求,以确保源端云服务提供商的对象存储服务可以针对源端新增、修改对象实时调用OMS同步接口(例如通过消息通知或函数计算服务方式),以完成对源端新增、修改对象数据的同步迁移。

源端同步请求配置条件

  • 实时获取源端新增、修改对象名称。
  • 调用OMS同步接口,将源端变化对象传递给对象存储迁移服务,从而完成源端同步迁移。

源端同步请求配置方式

  • 基于源端云服务提供商的对象存储服务和函数工作流服务:通过配置源端云服务提供商的对象存储服务和函数工作流服务来触发新增、修改对象的同步请求。

    客户需要在源端云服务提供商的函数工作流服务中,创建OMS数据同步函数,然后在对象存储服务中设置基于函数工作流服务的事件通知,从而完成源端对象存储服务,函数工作流服务以及OMS服务之间的数据链调用配置。

    当源端对象发生新增、修改时,源端对象存储服务会主动调用函数工作流服务中配置的OMS数据同步函数,从而完成源端对象同步迁移。

  • 基于客户自建业务系统:通过客户自建业务系统触发新增、修改对象的同步请求。

    当源端对象发生新增,修改时,客户自建业务系统通过接收源端对象存储服务的消息通知或解析业务系统数据库变化来主动捕获对象信息,然后调用OMS服务的同步接口,从而完成源端同步迁移。

步骤一:创建函数

以下是源端云服务商为华为云时,通过函数工作流服务配置源端同步请求的操作步骤。

创建的函数工作流需要与源端桶在同一区域。

  1. 登录函数工作流管理控制台
  2. 单击左侧导航树“函数模板”,进入函数模板页面。
  3. 函数模板页面的搜索框中输入OMS,筛选出“OMS数据同步”模板,如图1 OMS数据同步模板所示。

    图1 OMS数据同步模板

    单击模板“详情”,可查看数据类别、输入参数、输出参数、注意事项等说明。

  4. 单击“使用模板”,进入创建函数页面。
  5. 设置“基本信息”区域参数,参数说明参见表1

    图2 设置基本信息参数
    表1 基本信息参数说明

    参数名称

    说明

    函数模板

    OMS数据同步,请勿更改。

    区域

    选择源端桶所在区域。

    函数名称

    用户自定义。可包含字母、数字、下划线和中划线,以大/小写字母开头,以字母或数字结尾,长度不超过60个字符。

    企业项目

    用户根据实际场景来选择,默认为default。

    委托

    选择“未使用任何委托”。

    运行时

    选择用来编写函数的语言,默认“Python 3.6”,此处不支持用户选择其他运行时语言。

  6. 设置“环境变量”区域参数,参数说明参见表2

    图3 设置环境变量参数
    表2 环境变量参数说明

    参数名称

    说明

    sync_url

    同步请求接收地址,从同步任务详情中获取。

    sync_task_id

    同步任务ID,从同步任务页面获取。

    log_bucket

    填写日志桶名,用于记录发送同步请求成功和失败的对象。

    注意:

    日志桶必须为创建同步任务所用账号下的桶。

    obs_endpoint

    OBS域名,区域需要和日志桶所在区域一致,获取地址:地区和终端节点

    hw_ak

    填写创建同步任务所用账号的访问密钥ID。

    hw_sk

    填写创建同步任务所用账号的私有访问密钥。

  7. 创建函数完成之后,进入函数详情页面。参考步骤二:配置函数触发器

步骤二:配置函数触发器

触发器是FunctionGraph中用于启动函数执行的重要机制。OMS支持以下两种触发器。

  1. 在左侧的导航栏选择“函数 > 函数列表”。
  2. 选择步骤一创建的待配置的函数,单击函数名称进入函数详情。
  3. 选择“设置 > 触发器”,单击“创建触发器”,弹出“创建触发器”对话框。
  4. 设置触发器参数,参数说明参见表3

    表3 对象存储服务(OBS)触发器参数说明

    参数名称

    说明

    触发器类型

    选择“对象存储服务(OBS)”。

    下拉选择源端桶,即需要进行同步复制的桶。

    事件

    选择触发函数的事件。

    事件通知名称(可选)

    自定义的事件通知名称。用于在事件发生时,SMN服务给您推送消息。

    前缀(可选)

    用来限制以此关键字开头的对象的事件通知,该限制可以实现对OBS对象名的过滤。

    后缀(可选)

    用来限制以此关键字结尾的对象的事件通知,该限制可以实现对OBS对象名的过滤。

  5. 单击“设置”页签,选择“常规设置”,“执行超时时间”建议设置为60s,单击“保存”按钮。
  6. 单击“代码”页签,在代码源区域的下拉菜单中选择“配置测试事件”,弹出配置测试事件页面,如图4所示。配置相关参数,参见表4

    图4 配置测试事件

    表4 参数配置说明

    参数

    配置说明

    配置测试事件

    选择创建新的测试事件

    事件模板

    下拉选择“对象存储服务(OBS)

    事件名称

    事件名称必须以大写或小写字母开头,支持字母(大写或小写),数字和下划线“_”(或中划线“-”),并以字母或数字结尾,长度为1-25个字符,例如:event-123test。

  7. 选择创建的事件,单击“测试”,页面右侧将返回测试执行结果。

    配置测试结果成功后,在源端桶上传一个对象,等待10分钟后,该对象会同步到目的端桶中。

  1. 在左侧的导航栏选择“函数 > 函数列表”。
  2. 选择步骤一创建的待配置的函数,单击函数名称进入函数详情。
  3. 选择“设置 > 触发器”,单击“创建触发器”,弹出“创建触发器”对话框。
  4. 创建触发器参数,参数说明参见表5

    表5 EventGrid触发器(OBS应用事件源)参数说明

    参数名称

    说明

    触发器类型

    选择“OBS应用事件源”。

    触发器名称

    触发器的名称。只能包含字母、数字、下划线和中划线。不能以数字、中划线开头。长度在 1-128 之间。

    下拉选择源端桶,即需要进行同步复制的桶。

    事件类型

    下拉选择需要的触发事件类型。选择“通过页面或Put请求创建或覆盖桶对象”、“使用Copy请求创建或覆盖桶对象”和“使用Post请求创建或覆盖桶对象”。

    对象名前缀

    用来限制以此关键字开头的对象的事件通知,该限制可以实现对OBS对象名的过滤。

    对象名后缀

    用来限制以此关键字结尾的对象的事件通知,该限制可以实现对OBS对象名的过滤。

    对象名编码

    选择是否对对象名进行编码。默认为开启状态。

  5. 创建成功之后,单击触发器名称进入触发器。

  6. 单击云服务进入事件目标配置页面。
  7. 事件目标页面,规则配置类型选择变量。

  8. 分别在参数和模板输入以下命令,输入完成单击“确定”保存设置。

    参数:

    {
      "eventVersion": "$.data.eventVersion",
      "eventTime": "$.data.eventTime",
      "requestParameters": "$.data.requestParameters.sourceIPAddress",
      "configurationId": "$.data.obs.configurationId",
      "eTag": "$.data.obs.object.eTag",
      "sequencer": "$.data.obs.object.sequencer",
      "key": "$.data.obs.object.key",
      "size": "$.data.obs.object.size",
      "arn": "$.data.obs.bucket.arn",
      "name": "$.data.obs.bucket.name",
      "ownerIdentity": "$.data.obs.bucket.ownerIdentity.ID",
      "awsRegion": "$.data.eventRegion",
      "eventName": "$.type",
      "userIdentity": "$.data.userIdentity.ID"
    }

    模板:

    {
        "Records": [
            {
                "eventVersion": "${eventVersion}",
                "eventTime": "${eventTime}",
                "requestParameters": {
                    "sourceIPAddress": "${requestParameters}"
                },
                "s3": {
                    "configurationId": "${configurationId}",
                    "object": {
                        "eTag": "${eTag}",
                        "sequencer": "${sequencer}",
                        "key": "${key}",
                        "size": "${size}"
                    },
                    "bucket": {
                        "arn": "${arn}",
                        "name": "${name}",
                        "ownerIdentity": {
                            "PrincipalId": "${ownerIdentity}"
                        }
                    }
                },
                "awsRegion": "${awsRegion}",
                "eventName": "${eventName}",
                "userIdentity": {
                    "principalId": "${userIdentity}"
                }
            }
        ]
    }

  9. 单击“设置”页签,选择“常规设置”,“执行超时时间”建议设置为60s,单击“保存”按钮。
  10. 单击“代码”页签,在代码源区域的下拉菜单中选择“配置测试事件”,弹出配置测试事件页面,如图5所示。选择空白模板,事件名称自定义设置,事件内容输入以下命令,单击“创建”保存。

    图5 配置测试事件

    {
        "Records": [
            {
                "eventVersion": "2.0",
                "eventTime": "2018-01-09T07:50:50.028Z",
                "requestParameters": {
                    "sourceIPAddress": "103.218.216.125"
                },
                "s3": {
                    "configurationId": "UK1DGFPYUKUZFHNQ00000160CC0B471D101ED30CE24DF4DB",
                    "object": {
                        "eTag": "9d377b10ce778c4938b3c7e2c63a229a",
                        "sequencer": "00000000160D9E681484D6B4C0000000",
                        "key": "job.png",
                        "size": 777835
                    },
                    "bucket": {
                        "arn": "arn:fss:s3:::syj-input2",
                        "name": "functionstorage-template",
                        "ownerIdentity": {
                            "PrincipalId": "0ed1b73473f24134a478962e631651eb"
                        }
                    }
                },
                "awsRegion": "region",
                "eventName": "ObjectCreated:Post",
                "userIdentity": {
                    "principalId": "9bf43789b1ff4b679040f35cc4f0dc05"
                }
            }
        ]
    }

  11. 选择创建的事件,单击“测试”,页面右侧将返回测试执行结果。

    配置测试结果成功后,在源端桶上传一个对象,等待10分钟后,该对象会同步到目的端桶中。

相关操作

如果...

那么...

查看发送同步请求成功对象列表

获取路径:oms_source_record/success_object/

查看发送同步请求失败对象列表

获取路径:oms_source_record/failed_object/

路径下的对象名即为同步对象。

相关文档