全部产品

事件源服务

更新时间:2018-04-27 16:06:58

事件源服务 是可以触发函数的服务的集合,例如对象存储 OSS,日志服务,API 网关,定时器(Timer)和 HTTP 请求等。事件发生时,承载触发器的事件源服务决定是否运行您的函数。例如,当您创建一个 OSS PutObject 触发器后,上传对象到指定的 OSS Bucket 就是一次事件,继而触发对应函数,这个过程中 OSS 就是事件源服务。函数的触发器设置了哪些事件源服务可以触发此函数的运行。例如,您的 OSS BucketA 中有文件上传之所以触发 FunctionA 而不是 FunctionB 是因为在 FunctionA 上设置了对应的触发器。

如何配置事件源服务

配置事件源服务有三个步骤:

  1. 创建事件源服务触发器。即设置可以触发函数的事件类型。

  2. 授予事件源服务访问函数计算的权限。事件源服务必须被授予能访问函数计算。

  3. 设置不同的事件源服务 event 对象。由触发器触发的事件传递到函数的 event 对象的格式因事件源服务而异,event 内设置的参数会作为函数计算的输入信息以获取事件源服务信息。

配置事件源服务示例

此处以创建一个 OSS PutObject 触发器为例,示范如何配置事件源服务。

步骤 1. 创建 OSS 触发器

此处使用函数计算管理控制台设置触发器。更多详情,请参阅 创建触发器

前提条件

操作步骤

  1. 登录 函数计算管理控制台

  2. 选择地域,如华东 2(上海)。

  3. 选择服务和函数,单击 触发器 > 创建触发器

    创建触发器

  4. 在创建触发器页面:

    1. 选择 服务类型,如对象存储触发器。
    2. 填写 触发器名称,如 PutObjectDemo
    3. 选择 Bucket列表
    4. 选择一类或者多类 触发事件,如 oss:ObjectCreate:PutObject。更多详情,请参阅 对象存储 OSS 服务
    5. 自定义 触发规则 的前缀和后缀。如 AlibabaCloud*****.py 表示当有类似 AlibabaCloud*****.py 的文件上传到指定的 Bucket 会触发对应的函数。
    6. 选择 角色创建方式,如 快捷授权
    7. 单击 点击授权
    8. 单击 确定
      授权

      说明:授权过程是授权函数计算和指定的 OSS Bucket 间互访。不同阿里云服务之间建立访问关系之前均需要完成授权,提供授权的阿里云服务为 访问控制RAM

现在您已经创建了一个 OSS PutObject 触发器。同样地,您也可以选择命令行工具 fcli 为触发器授权。更多详情,请参阅 应用实例4

步骤 2. 设置 event

event 是函数的输入对象。由触发器触发的事件传递到函数接口的 event 对象的格式因触发器而异,您的函数会在您编写 event 中搜寻事件源信息,例如指定的 Bucket 名称,Bucket 所在地域,Bucket 所属账号 ID 等。更多详情,请参阅 事件处理函数配置触发器和事件格式

此处我们以上述步骤创建的 OSS 触发器 PutObjectDemo 设置 event 为例,给出一段 event 示例。

  1. {
  2. "events": [
  3. {
  4. "eventName": "ObjectCreated:PutObject",
  5. "eventSource": "acs:oss",
  6. "eventTime": "2017-04-21T12:46:37.000Z",
  7. "eventVersion": "1.0",
  8. "oss": {
  9. "bucket": {
  10. "arn": "acs:oss:cn-shanghai:1237050315505689:bucketname",
  11. "name": "bucketname",
  12. "ownerIdentity": "1237050315505689",
  13. "virtualBucket": ""
  14. },
  15. "object": {
  16. "deltaSize": 122539,
  17. "eTag": "688A7BF4F233DC9C88A80BF985AB7329",
  18. "key": "image/a.jpg",
  19. "size": 122539
  20. },
  21. "ossSchemaVersion": "1.0",
  22. "ruleId": "9adac8e253828f4f7c0466d941fa3db81161e853"
  23. },
  24. "region": "cn-shanghai",
  25. "requestParameters": {
  26. "sourceIPAddress": "140.205.128.221"
  27. },
  28. "responseElements": {
  29. "requestId": "58F9FF2D3DF792092E12044C"
  30. },
  31. "userIdentity": {
  32. "principalId": "262561392693583141"
  33. }
  34. }
  35. ]
  36. }

相关链接