j9九游会登录/ 函数工作流 functiongraph/ api参考/ / 示例1:创建函数和timer触发器实现定时从obs桶中下载文件
更新时间:2025-10-31 gmt 08:00

示例1:创建函数和timer触发器实现定时从obs桶中下载文件-j9九游会登录

场景描述

本章节以python 2.7为例,指导您通过api创建functiongraph函数和timer触发器,实现定时从obs桶中下载文件。

api的调用方法请参见。

前提条件

  • 已在obs服务中上传文件,并记录文件名、文件所在的obs桶名,以及obs地址的链接。
  • 已配置具有obs服务访问权限的委托,并记录委托名。

总体思路

创建functiongraph函数和timer触发器,实现定时从obs桶中下载文件,步骤如下:

  1. 创建函数 - createfunction:创建下载文件的函数。
  2. 修改函数的metadata信息 - updatefunctionconfig:修改函数配置信息中的obs地址、obs桶名和文件名。
  3. 同步执行函数 - invokefunction:确认函数能够成功从obs桶中下载文件。
  4. 创建触发器 - createfunctiontrigger:创建timer触发器,实现定时下载文件。

步骤1:创建下载文件的函数

uri:post /v2/{project_id}/fgs/functions

api文档详情请参见:创建函数 - createfunction

  • 请求示例
    post  https://{endpoint}/v2/{project_id}/fgs/functions
    {
     "code_filename": "index.zip",
     "code_type": "inline",
     "func_code": {
      "file": "uesdbaoaaaaiabeswldhsm8coqyaajyraaaiaaaaaw5kzxguchm9v91v2zyqf9dfcxaelkekkryzngtqq9jvpg2cjsowj4gwajulrgok5vt963dhupzsj82gofvdqh2pd8e7333wai4oj6bqpzdlm2jt4ug3okqh8meks9ctllgddiumgfy3fsdmdlybkwpudfxd3ctqqrbq1lgwds/eogmmgs25ldq4f3yfy0rnwqwg67uoeh 04bowxggldcrka7nqcyzs3bku/adjli0wwtvorz2quumlsnbpazn7jyi6udrc1dy8cort/hqtr0y65dzx8794yfmvzyxx/bf33f45 nthfuqw5n 33ni90188pqp005l quwufa3wafm ebxpg4axzzce0iothzas5nh/rtmrabhnnj2fzta652vpmcoyds8knbsmiufmfyv3aeg7amua6vkoydp2uim5zlpwk0zol9fcmoblmt4zbbzft28 xedfrq5u8 vz2/do6ety1s3xbpzvaf6re1kphgyxoipgfebhq/0ooxgn9insxrppvsqwoprpsrkstwh7dwc3daanrr9ydeupuagplejosxi4xzuvmfzif5mlqqwqinyajnwtzt 2srco451mzsogiduc4n053pcj9lvdctj7/wjtyimz9qzm16c/ e4obxmcnr6eh34/wjuckte2qx72/g/wfkd1gzwlpmqcznevqx5jdmnq6ne07lb3raxaeqmqng7arpmqqokiauhsjvadqlgkvxvuicvfslaysgzvy9mi0/m9mljhlckprtatqk5yhb2yrzhveiwu0vkvdnywkdzklze4mfvkkjyfhs2ewao/ayx3fm2lfeqjgcvljnrozibqo/kbi2/7zkqp76vfm8vi6yhlonohjc4u2uko28eobbims7f9byrflzwxdufci8l4ae9kvtgwtxvlxae9dnufw0w9cksil9pefcy2n0ncd4wjlbtrhjple5otwgb74l9da0wct2prv tseiurv9dgz0qivd22l1b9iicwp1xrpepjnbu9jscywovaacvrqulrrnjsxigib/me/ufwopltrgqopuxc/5qwer/9iq2dyuxyurbgj2ab0d7gfzrarqxfzt7tjccekpm8xzingi3qgbprheobcvoptudcss6knq mfbqko4xihvyogcahh4ed/wt0guzg2uca7z3pj4rlngx28ik3jnyzyhjqmkx3ch7pjl253b54ujjfzdcywhocsmovi6yp55 89exug5vnbv sd3hip539g15gip1 jy6sgw134kav1o9b6s1dcjbb5ikyc0aelmrrbglelcghvt1hav0xg5y4um4tmgywgtjmonsqcz9hbbq3cehom1adtkapucestlsqbpu5lb5vtgrattjcril xu 7we/ ubetwyutexeeeeh5baifqnhw3ihv1oqkvuudir5drudxrw1aqqstw8wbp1koc55pntmxbvv1m6sldpkune4r4s8h2up40dzdygqulya7khez4dxurdgthrwn3eelvw/fzqy3cah4cbtphacg d0zknoaenm8rlij3qoqdsq6cf3er1hthppmw cwx3j8g6dtny e2gm2v ndlsrm8bs0zienznwl0u7xfsb3a2xm/yvunoa629izmfiyzsqbyrtkhmucfjlo/l/emcphufiwyt4yjayew2eloz97dttskz5ero7yqrxszr8kyexnmz7zi5oqnr/v f0ytolail0rwtnfdg3ppvggqetbqawffxpnnmwpuf/henyi0dlqaal2xqbdyvxxbp/qv7bixxmsqfuv5ptis2eazqqp3tnbkudeqf9jffqq3o0fsneqd4z/821vbv/eizwnmnku7yswob73xelwenmkm10wb mtfgynzrzydz8sfyna32wi6tcwx3b1b/mj14hotmsf2w1tahb0r/3lcocb9qxhduszzdte41fnhstkxjak2u5w4c72l2yth31 krpsrpsjhy93ejrtyyyb4owsd3fywmwzfviikpsf4il1702q3hxpyjq4rwdscw2xezn15xlg3qy6svoi xuguv2us/v90htesapok2a5guowtpchaufr4fii9b7fbfpnpdprszupm8expd95ctq btff/wbqswechgmkaaaacaaresjqx0jphdkgaacweqaacaaaaaaaaaaaaaaa8wiaaaaaaw5kzxguchlqswugaaaaaaeaaqa2aaaaxwyaaaaa"
     },
     "func_name": "download_file_from_obs",
     "handler": "index.handler",
     "memory_size": 256,
     "package": "default",
     "runtime": "python2.7",
     "timeout": 30
    }
  • 响应示例
    {
     "func_urn": "urn:fss:{project_name}:{project_id}:function:default:download_file_from_obs:latest",
     "func_name": "download_file_from_obs",
     "domain_id": "89fexxxd636",
     "namespace": "{project_id}",
     "project_name": "xxx",
     "package": "default",
     "runtime": "python2.7",
     "timeout": 30,
     "handler": "index.handler",
     "memory_size": 256,
     "cpu": 400,
     "code_type": "inline",
     "code_filename": "index.zip",
     "code_size": 1707,
     "digest": "68891a6778848a78bd37a8c0798c91d75a5c87aee6e901303047a52edf05bf2170aac4149d79b3f6a40efe78406a83bf6d8683e7b25da4f0c07e7493aa4ccdcd",
     "version": "latest",
     "image_name": "latest-200603162219@zr2ym",
     "last_modified": "2020-06-03t16:22:19 08:00",
     "strategy_config": {
      "concurrency": -1
     },
     "strategyconfig": {},
     "enterprise_project_id": "0"
    }

    记录函数的urn,即响应示例中的“func_urn”信息。

步骤2:修改函数配置信息中的obs地址、obs桶名和文件名

uri:put /v2/{project_id}/fgs/functions/{function_urn}/config

api文档详情请参见:修改函数的metadata信息 - updatefunctionconfig

  • 请求示例
    put  https://{endpoint}/v2/{project_id}/fgs/functions/{function_urn}/config
    {
     "func_name": "download_file_from_obs",
     "handler": "index.handler",
     "memory_size": 256,
     "runtime": "python2.7",
     "timeout": 30,
     "user_data": "{\"obs_address\":\"obs.example.example.com\",\"srcbucket\":\" xxx\",\"srcobjname\":\"xxx\"}",
     "xrole": "xxx"
    }

    function_urn为步骤1:创建下载文件的函数中记录的函数urn,obs_address为obs地址,srcbucket为obs桶名,srcobjname为文件名,xrole为委托名。

  • 响应示例
    {
     "func_urn": "urn:fss:{project_name}:{project_id}:function:default:download_file_from_obs:latest",
     "func_name": "download_file_from_obs",
     "domain_id": "89fexxxd636",
     "namespace": "{project_id}",
     "project_name": "xxx",
     "package": "default",
     "runtime": "python2.7",
     "timeout": 30,
     "handler": "index.handler",
     "memory_size": 256,
     "cpu": 400,
     "code_type": "inline",
     "code_filename": "index.zip",
     "code_size": 1707,
     "user_data": "{\"obs_address\":\"obs.example.example.com\",\"srcbucket\":\"xxx\",\"srcobjname\":\"xxx\"}",
     "digest": "68891a6778848a78bd37a8c0798c91d75a5c87aee6e901303047a52edf05bf2170aac4149d79b3f6a40efe78406a83bf6d8683e7b25da4f0c07e7493aa4ccdcd",
     "version": "latest",
     "image_name": "latest-200603165355@varrp",
     "xrole": "xxx",
     "app_xrole": "xxx",
     "last_modified": "2020-06-03t17:25:03 08:00",
     "strategy_config": {
      "concurrency": -1
     },
     "strategyconfig": {},
     "enterprise_project_id": "0"
    }

步骤3:确认函数能够成功从obs桶中下载文件

uri:post /v2/{project_id}/fgs/functions/{function_urn}/invocations

api文档详情请参见:同步执行函数 - invokefunction

  • 请求示例
    post  https://{endpoint}/v2/{project_id}/fgs/functions/{function_urn}/invocations
    {
     "message": "download file"
    }

    function_urn为步骤1:创建下载文件的函数中记录的函数urn。

  • 响应示例
    "the object downloaded successfully from obs, and the size is 14 kb"

步骤4:创建timer触发器,实现定时下载文件

uri:post /v2/{project_id}/fgs/triggers/{function_urn}

api文档详情请参见:创建触发器 - createfunctiontrigger

  • 请求示例
    post  https://{endpoint}/v2/{project_id}/fgs/triggers/{function_urn}
    {
     "event_data": {
      "name": "timer-download",
      "schedule_type": "rate",
      "schedule": "1d"
     },
     "event_type_code": "messagecreated",
     "trigger_status": "active",
     "trigger_type_code": "timer"
    }

    function_urn为步骤1:创建下载文件的函数中记录的函数urn。

    上述请求示例表示每天从obs桶中下载文件。

  • 响应示例
    {
     "trigger_id": "461bbe95-c85b-4dc9-a306-9701e77f1d66",
     "trigger_type_code": "timer",
     "trigger_status": "active",
     "event_data": {
      "name": "timer-download",
      "schedule": "1d",
      "schedule_type": "rate"
     },
     "last_updated_time": "2020-06-04t10:33:30 08:00",
     "created_time": "2020-06-04t10:33:30 08:00"
    }

相关文档

网站地图