
# 源端配置同步请求
创建同步任务后，您需要在源端配置同步请求，以确保源端云服务提供商的对象存储服务可以针对源端新增、修改对象实时调用OMS同步接口（例如通过消息通知或函数计算服务方式），以完成对源端新增、修改对象数据的同步迁移。
#### 源端同步请求配置条件
- 实时获取源端新增、修改对象名称。
- 调用OMS同步接口，将源端变化对象传递给对象存储迁移服务，从而完成源端同步迁移。
 
#### 源端同步请求配置方式
- 基于源端云服务提供商的对象存储服务和函数工作流服务，可触发新增或修改对象的同步请求。 客户需在源端云服务提供商的函数工作流服务中创建OMS数据同步函数，并在源端对象存储服务中设置基于函数工作流服务的事件通知，从而完成源端对象存储服务、函数工作流服务与OMS服务之间的数据链路调用配置。
  当源端对象发生新增或修改时，源端对象存储服务会主动调用函数工作流服务中配置的OMS数据同步函数，以完成源端对象的数据同步迁移。
  
- 基于客户自建业务系统：通过客户自建业务系统触发新增、修改对象的同步请求。 当源端对象发生新增，修改时，客户自建业务系统通过接收源端对象存储服务的消息通知或解析业务系统数据库变化来主动捕获对象信息，然后调用OMS服务的同步接口，从而完成源端同步迁移。
  
 
#### 操作流程
配置函数触发器的完整操作流程，请参见[表1]。
 表1配置函数触发器操作流程 
| 操作步骤                                              | 说明                                                                            |
|:---|:---|
| [步骤一：创建函数]    | 源端云服务商为华为云时，通过函数工作流服务配置源端同步请求。                                                |
| [步骤二：配置函数触发器] | 触发器是FunctionGraph中用于启动函数执行的重要机制。OMS支持对象存储服务（OBS）触发器和配置EventGrid触发器（OBS应用事件源）。 |
   
 #### 步骤一：创建函数
以下是源端云服务商为华为云时，通过函数工作流服务配置源端同步请求的操作步骤。创建的函数工作流需要与源端桶在同一区域。
1. 登录[函数工作流管理控制台](https://console.huaweicloud.com/functiongraph/?#/functiongraph/migrationTaskNew)。
2. 单击左侧导航树"函数模板"，进入"函数模板"页面。
3. 在"函数模板"页面的搜索框中输入"OMS"，筛选出"OMS数据同步"模板，如[图1 OMS数据同步模板]所示。单击模板"详情"，可查看数据类别、输入参数、输出参数、注意事项等说明。
   
   图1OMS数据同步模板   
   ![](https://support.huaweicloud.com/usermanual-oms/zh-cn_image_0000002239366156.png "点击放大")
   
   
4. 单击"使用模板"，进入"创建函数"页面。
5. 设置"**基本信息** "区域参数，参数说明参见[表2]。
   
   图2设置基本信息参数   
   ![](https://support.huaweicloud.com/usermanual-oms/zh-cn_image_0000002239217998.png "点击放大")
    表2基本信息参数说明 
   | 参数名称 | 说明                                                    |
   |:---|:---|
   | 函数模板 | OMS数据同步，请勿更改。                                         |
   | 区域   | 选择源端桶所在区域。                                            |
   | 函数名称 | 用户自定义。可包含字母、数字、下划线和中划线，以大/小写字母开头，以字母或数字结尾，长度不超过60个字符。 |
   | 企业项目 | 用户根据实际场景来选择，默认为default。                               |
   | 委托   | 选择"未使用任何委托"。                                          |
   | 运行时  | 选择用来编写函数的语言，默认"Python 3.6"，此处不支持用户选择其他运行时语言。          |
      
   
   
6. 设置"**环境变量** "区域参数，参数说明参见[表3]。
   
   图3设置环境变量参数   
   ![](https://support.huaweicloud.com/usermanual-oms/zh-cn_image_0000001450936640.png "点击放大")
    表3环境变量参数说明 
   | 参数名称         | 说明                                                                                                           |
   |:---|:---|
   | sync_url     | 同步请求接收地址，从同步任务详情中获取。                                                                                         |
   | sync_task_id | 同步任务ID，从同步任务页面获取。                                                                                            |
   | log_bucket   | 填写日志桶名，用于记录发送同步请求成功和失败的对象。 注意： 日志桶必须为创建同步任务所用账号下的桶。 |
   | obs_endpoint | OBS域名，区域需要和日志桶所在区域一致，获取地址：[地区和终端节点](https://developer.huaweicloud.com/endpoint?OBS)。                         |
   | hw_ak        | 填写创建同步任务所用账号的访问密钥ID。                                                                                         |
   | hw_sk        | 填写创建同步任务所用账号的私有访问密钥。                                                                                         |
      
   
   
7. 创建函数完成之后，进入函数详情页面。参考[步骤二：配置函数触发器]。
 
 #### 步骤二：配置函数触发器
触发器是FunctionGraph中用于启动函数执行的重要机制。OMS支持以下两种触发器。
- [配置对象存储服务（OBS）触发器]
  1. 在左侧的导航栏选择"函数 \> 函数列表"。
  
  2. 选择步骤一创建的待配置的函数，单击函数名称进入函数详情。
  
  3. 选择"设置 \> 触发器"，单击"创建触发器"，弹出"创建触发器"对话框。
  
  4. 设置**触发器** 参数，参数说明参见[表4]。
     
      表4对象存储服务（OBS）触发器参数说明 
     | 参数名称       | 说明                                     |
     |:---|:---|
     | 触发器类型      | 选择"对象存储服务(OBS)"。                       |
     | 桶          | 下拉选择源端桶，即需要进行同步复制的桶。                   |
     | 事件         | 选择触发函数的事件。                             |
     | 事件通知名称（可选） | 自定义的事件通知名称。用于在事件发生时，SMN服务给您推送消息。       |
     | 前缀（可选）     | 用来限制以此关键字开头的对象的事件通知，该限制可以实现对OBS对象名的过滤。 |
     | 后缀（可选）     | 用来限制以此关键字结尾的对象的事件通知，该限制可以实现对OBS对象名的过滤。 |
        
     
     
  
  5. 单击"设置"页签，选择"常规设置"，"执行超时时间"建议设置为60s，单击"保存"按钮。
  
  6. 单击"代码"页签，在**代码源** 区域的下拉菜单中选择"配置测试事件"，弹出"配置测试事件"页面，如[图4]所示。
     
     图4配置测试事件   
     ![](https://support.huaweicloud.com/usermanual-oms/zh-cn_image_0000002428586630.png "点击放大")
     
     
     
  
  7. 根据[表5]，配置相关参数。
     
      表5参数配置说明 
     | 参数     | 配置说明                                                                                   |
     |:---|:---|
     | 配置测试事件 | 选择创建新的测试事件。                                                                            |
     | 事件模板   | 下拉选择"对象存储服务（OBS）"。                                                                     |
     | 事件名称   | 事件名称必须以大写或小写字母开头，支持字母（大写或小写），数字和下划线"_"（或中划线"-"），并以字母或数字结尾，长度为1-25个字符，例如：event-123test。 |
        
     
     
  
  8. 选择创建的事件，单击"测试"，页面右侧将返回测试执行结果。配置测试结果成功后，在源端桶上传一个对象，等待10分钟后，该对象会同步到目的端桶中。 
     ![](https://support.huaweicloud.com/usermanual-oms/zh-cn_image_0000002462110781.png "点击放大")
     
     
     
   
- [配置EventGrid触发器（OBS应用事件源）]
  1. 在左侧的导航栏选择"函数 \> 函数列表"。
  
  2. 选择步骤一创建的待配置的函数，单击函数名称进入函数详情。
  
  3. 选择"设置 \> 触发器"，单击"创建触发器"，弹出"创建触发器"对话框。
  
  4. 创建触发器参数，参数说明参见[表6]。
     
      表6EventGrid触发器（OBS应用事件源）参数说明 
     | 参数名称  | 说明                                                                          |
     |:---|:---|
     | 触发器类型 | 选择"OBS应用事件源"。                                                               |
     | 触发器名称 | 触发器的名称。只能包含字母、数字、下划线和中划线。不能以数字、中划线开头。长度在 1-128 之间。                          |
     | 桶     | 下拉选择源端桶，即需要进行同步复制的桶。                                                        |
     | 事件类型  | 下拉选择需要的触发事件类型。选择"通过页面或Put请求创建或覆盖桶对象"、"使用Copy请求创建或覆盖桶对象"和"使用Post请求创建或覆盖桶对象"。 |
     | 对象名前缀 | 用来限制以此关键字开头的对象的事件通知，该限制可以实现对OBS对象名的过滤。                                      |
     | 对象名后缀 | 用来限制以此关键字结尾的对象的事件通知，该限制可以实现对OBS对象名的过滤。                                      |
     | 对象名编码 | 选择是否对对象名进行编码。默认为开启状态。                                                       |
        
     
     
  
  5. 创建成功之后，单击"触发器名称"，进入触发器。 
     ![](https://support.huaweicloud.com/usermanual-oms/zh-cn_image_0000002428308728.png "点击放大")
     
     
     
  
  6. 单击云服务，进入"事件目标"配置页面。
  
  7. 事件目标页面，规则配置类型选择"变量"。 
     ![](https://support.huaweicloud.com/usermanual-oms/zh-cn_image_0000002461949761.png "点击放大")
     
     
     
  
  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配置测试事件   
      ![](https://support.huaweicloud.com/usermanual-oms/zh-cn_image_0000002428831890.png "点击放大")
      
      
      
  
  11. 选择空白模板，事件名称自定义设置，事件内容输入以下命令，单击"创建"保存。 
      ```
      {
          "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"
                  }
              }
          ]
      }
      ```
      
      
  
  12. 选择创建的事件，单击"测试"，页面右侧将返回测试执行结果。配置测试结果成功后，在源端桶上传一个对象，等待10分钟后，该对象会同步到目的端桶中。 
      - 查看发送同步请求成功对象列表：获取路径：oms_source_record/success_object/，路径下的对象名即为同步对象。
      
      - 查看发送同步请求失败对象列表：获取路径：oms_source_record/failed_object/，路径下的对象名即为同步对象。
      
      
      ![](https://support.huaweicloud.com/usermanual-oms/zh-cn_image_0000002461879201.png "点击放大")
      
      
      
  
  
  
#### 相关链接
- [阿里云OSS配置同步请求](https://support.huaweicloud.com/bestpractice-oms/oms_05_5602.html)。
- [腾讯云COS配置同步请求](https://support.huaweicloud.com/bestpractice-oms/oms_05_5603.html)。
 
