triggers 字段

参数名必填类型参数描述
invocationRoleFalseString使用一个 RAM 角色的 ARN 为函数指定执行角色,事件源会使用该角色触发函数执行,请确保该角色有调用函数的权限
qualifierFalseString触发器函数的版本或者别名,默认 LATEST
sourceArnFalseString触发器事件源的 ARN
triggerConfigTrueStruct触发器配置,针对不同类型的触发器,配置有所不同。
triggerNameTrueString触发器名称
triggerTypeTrueEnum触发器类型

type 目前支持:http, timer, oss, log, mns_topic, cdn_events, tablestore, eventbridge

Http 触发器

参数名必填类型参数描述
authTypeTrueString鉴权类型,可选值:anonymous、function
disableURLInternetFalseBoolean是否禁用公网访问 URL,默认为 false
methodsTrueList<String>HTTP 触发器支持的访问方法,可选值:GET、POST、PUT、DELETE、PATCH、HEAD

权限配置相关

子账号需要的函数权限
最大权限

AliyunFCFullAccess

最小权限
{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "fc:GetTrigger",
        "fc:CreateTrigger",
        "fc:DeleteTrigger",
        "fc:UpdateTrigger",
        "fc:ListTriggers"
      ],
      "Effect": "Allow",
      "Resource": "acs:fc:<region>:<account-id>:functions/<functionName>/triggers/<triggerName>"
    }
  ]
}

Timer 触发器

参数名必填类型参数描述
cronExpressionTrueString时间触发器表达式,支持两种设置:@every、cron 表达式
enableTrueBoolean是否启用该触发器
payloadFalseString代表触发器事件本身的输入内容

权限配置相关

子账号需要的函数权限
最大权限

AliyunFCFullAccess

最小权限
{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "fc:GetTrigger",
        "fc:CreateTrigger",
        "fc:DeleteTrigger",
        "fc:UpdateTrigger",
        "fc:ListTriggers"
      ],
      "Effect": "Allow",
      "Resource": "acs:fc:<region>:<account-id>:functions/<functionName>/triggers/<triggerName>"
    }
  ]
}

OSS 触发器

参数名必填类型参数描述
eventsTrueList<String>OSS 端触发函数执行的事件列表, 参考文档:https://help.aliyun.com/document_detail/62922.html#section-mf3-l4l-1nf
filterTrueStruct触发条件

权限配置相关

子账号权限
最大权限

AliyunFCFullAccessAliyunOSSFullAccess

操作最小权限
{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "fc:GetTrigger",
        "fc:CreateTrigger",
        "fc:UpdateTrigger",
        "fc:DeleteTrigger",
        "fc:ListTriggers"
      ],
      "Effect": "Allow",
      "Resource": "acs:fc:<region>:<account-id>:functions/*/triggers/*"
    },
    {
      "Action": "ram:PassRole",
      "Resource": "*",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "acs:Service": "fc.aliyuncs.com"
        }
      }
    },
    {
      "Action": [
        "oss:ListBucket",
        "oss:GetBucketEventNotification",
        "oss:PutBucketEventNotification",
        "oss:DeleteBucketEventNotification"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
触发器角色权限
{
  "Version": "1",
  "Statement": [
    {
      "Action": ["fc:InvokeFunction"],
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}

filter

参数名必填类型参数描述
keyTrueStruct键值
Key
参数名必填类型参数描述
prefixTrueString前缀
suffixTrueString后缀

Log 触发器

参数名必填类型参数描述
enableTrueBoolean触发器开关
functionParameterTrueStruct该参数将作为函数 Event 的 Parameter 传入函数。默认值为空({})
jobConfigTrueStructjob 配置
logConfigTrueStruct日志配置

| sourceConfig | True | Struct | source 配置 |

权限配置相关

子账号权限
最大权限

AliyunFCFullAccessAliyunLogFullAccess

最小权限
{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "fc:GetTrigger",
        "fc:CreateTrigger",
        "fc:UpdateTrigger",
        "fc:DeleteTrigger",
        "fc:ListTriggers"
      ],
      "Effect": "Allow",
      "Resource": "acs:fc:<region>:<account-id>:functions/*/triggers/*"
    },
    {
      "Action": "ram:PassRole",
      "Resource": "*",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "acs:Service": "fc.aliyuncs.com"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": ["log:GetEtlJob", "log:UpdateEtlJob", "log:CreateEtlJob", "log:DeleteEtlJob"],
      "Resource": "*"
    }
  ]
}
触发器角色权限
{
  "Version": "1",
  "Statement": [
    {
      "Action": ["fc:InvokeFunction"],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "log:Get*",
        "log:List*",
        "log:PostProjectQuery",
        "log:PutProjectQuery",
        "log:DeleteProjectQuery",
        "log:GetProjectQuery",
        "log:PostLogStoreLogs",
        "log:BatchPostLogStoreLogs",
        "log:CreateConsumerGroup",
        "log:UpdateConsumerGroup",
        "log:DeleteConsumerGroup",
        "log:ListConsumerGroup",
        "log:ConsumerGroupUpdateCheckPoint",
        "log:ConsumerGroupHeartBeat",
        "log:GetConsumerGroupCheckPoint"
      ],
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}

logConfig

参数名必填类型参数描述
logstoreTrueString日志仓库名称,日志服务触发函数执行过程的日志会记录到该日志仓库中
projectTrueString日志项目名称

jobConfig

参数名必填类型参数描述
maxRetryTimeFalseString表示日志服务触发函数执行时,如果遇到错误,所允许的最大尝试次数,取值范围:[0,100]
triggerIntervalFalseString日志服务触发函数运行的时间间隔,取值范围:[3,600],单位:秒

sourceConfig

参数名必填类型参数描述
logstoreTrueString触发器会定时从该日志仓库中订阅数据到函数服务进行自定义加工

functionParameter

Object 格式,例如:

TempKey: tempValue

MNS 触发器

参数名必填类型参数描述
filterTagFalseString描述了该订阅中消息过滤的标签(标签一致的消息才会被推送),不超过 16 个字符的字符串,默认不进行消息过滤,即默认不填写该字段
notifyContentFormatFalseString推送给函数入参 event 的格式,可选值:STREAM, JSON
notifyStrategyFalseString调用函数的重试策略,可选值:BACKOFF_RETRY, EXPONENTIAL_DECAY_RETRY

权限配置相关

子账号需要的函数权限
最大权限

AliyunFCFullAccessAliyunMNSFullAccess

最小权限
{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "fc:GetTrigger",
        "fc:CreateTrigger",
        "fc:UpdateTrigger",
        "fc:DeleteTrigger",
        "fc:ListTriggers"
      ],
      "Effect": "Allow",
      "Resource": "acs:fc:<region>:<account-id>:functions/*/triggers/*"
    },
    {
      "Action": "ram:PassRole",
      "Resource": "*",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "acs:Service": "fc.aliyuncs.com"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": ["mns:Subscribe", "mns:Unsubscribe"],
      "Resource": "*"
    }
  ]
}
触发器角色权限
{
  "Version": "1",
  "Statement": [
    {
      "Action": ["fc:InvokeFunction"],
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}

CDN 触发器

参数名必填类型参数描述
eventNameTrueString为 CDN 端触发函数执行的事件,一经创建不能更改
eventVersionTrueString为 CDN 端触发函数执行事件的版本,一经创建不能更改
notesTrueString备注信息
filterTrueStruct过滤器(至少需要一个过滤器)

权限配置相关

子账号权限
最大权限

AliyunFCFullAccessAliyunCDNFullAccess

最小权限
{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "fc:GetTrigger",
        "fc:CreateTrigger",
        "fc:UpdateTrigger",
        "fc:DeleteTrigger",
        "fc:ListTriggers"
      ],
      "Effect": "Allow",
      "Resource": "acs:fc:<region>:<account-id>:functions/*/triggers/*"
    },
    {
      "Action": "ram:PassRole",
      "Resource": "*",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "acs:Service": "fc.aliyuncs.com"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "cdn:UpdateFCTrigger",
        "cdn:DeleteFCTrigger",
        "cdn:DescribeFCTrigger",
        "cdn:AddFCTrigger"
      ],
      "Resource": "*"
    }
  ]
}
触发器角色权限
{
  "Version": "1",
  "Statement": [
    {
      "Action": ["fc:InvokeFunction"],
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}

filter

参数名必填类型参数描述
domainTrueList<String>过滤参数值的集合

Tablestore 触发器

Tabletore 触发器的 triggerConfig 无需包含任何参数,但必填,为空 Object{}即可。

权限配置相关

子账号需要的函数权限
最大权限

AliyunFCFullAccessAliyunOTSFullAccess

最小权限
{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "fc:GetTrigger",
        "fc:CreateTrigger",
        "fc:UpdateTrigger",
        "fc:DeleteTrigger",
        "fc:ListTriggers"
      ],
      "Effect": "Allow",
      "Resource": "acs:fc:<region>:<account-id>:functions/*/triggers/*"
    },
    {
      "Action": "ram:PassRole",
      "Resource": "*",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "acs:Service": "fc.aliyuncs.com"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": ["ots:GetTrigger", "ots:UpdateTrigger", "ots:CreateTrigger", "ots:DeleteTrigger"],
      "Resource": "*"
    }
  ]
}
触发器角色权限
{
  "Version": "1",
  "Statement": [
    {
      "Action": ["ots:BatchGet*", "ots:Describe*", "ots:Get*", "ots:List*"],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": ["fc:InvokeFunction"],
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}

EventBridge 触发器

参数名必填类型参数描述
asyncInvocationTypeFalseBoolean触发器调用函数的方式。目前支持同步调用以及异步调用
eventRuleFilterPatternTrueString事件模式。JSON 格式,详细规则可以参考 EventBridge 事件模式官方文档
eventSinkConfigFalseStruct事件目标配置
eventSourceConfigTrueStruct事件源配置
runOptionsFalseStruct触发器运行时参数
triggerEnableFalseBoolean触发器禁用开关。对于 event-driven 事件投递模型,等同于 EventBridge 侧对应事件规则的禁用开关;对于 event-streaming 事件投递模型,等同于 EventBridge 侧对应事件流的启动/停止开关,由于事件流启动/停止需要一段时间,因此只有事件流成功启动后,读取到的 triggerEnable 字段才会是 true,其他情况下读取到的 triggerEnable 均为 false

权限配置相关

子账号权限
最大权限

AliyunFCFullAccessAliyunEventBridgeFullAccess

操作最小权限
{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "fc:GetTrigger",
        "fc:CreateTrigger",
        "fc:UpdateTrigger",
        "fc:DeleteTrigger",
        "fc:ListTriggers"
      ],
      "Effect": "Allow",
      "Resource": "acs:fc:<region>:<account-id>:functions/*/triggers/*"
    },
    {
      "Action": "ram:PassRole",
      "Resource": "*",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "acs:Service": "fc.aliyuncs.com"
        }
      }
    },
    {
      "Action": [
        "eventbridge:CreateEventBus",
        "eventbridge:GetEventBus",
        "eventbridge:DeleteEventBus",
        "eventbridge:CreateRule",
        "eventbridge:GetRule",
        "eventbridge:UpdateRule",
        "eventbridge:EnableRule",
        "eventbridge:DisableRule",
        "eventbridge:DeleteRule",
        "eventbridge:ListRules",
        "eventbridge:UpdateTargets",
        "eventbridge:DeleteTargets",
        "eventbridge:ListTargets"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
触发器角色权限

EventBridge 触发器创建时无需指定 role,但是需要在开通 EventBridge 产品后,进行 SLR 授权,授权方式有如下两种:

  • 在控制台点击授权
  • 通过 terraform 进行授权,terraform 授权代码如下所示:
provider "alicloud" {
  access_key = "${alicloud_access_key}"
  secret_key = "${aliclou_secret_key}"
  region     = "cn-hangzhou"
}


resource "alicloud_event_bridge_service_linked_role" "service_linked_role" {
  product_name = "AliyunServiceRoleForEventBridgeSendToFC"
}

eventSourceConfig

参数名必填类型参数描述
eventSourceParametersFalseStruct自定义事件源参数,自定义事件源包括:MNS,RocketMQ,RabbitMQ,Kafka
eventSourceTypeTrueString触发器事件源类型,目前支持如下几种触发源:
1. Default:表示 EventBridge 官方触发源
2. MNS:消息队列 MNS 队列作为触发源
3. RocketMQ:消息队列 RockerMQ 作为触发源
4. RabbitMQ:消息队列 RabbitMQ 作为触发源
5. Kafka: 消息队列 Kafka 作为触发源
6. DTS: 数据传输服务 DTS 作为触发源
注:该字段不可更新,更新时传入该字段将被忽略

eventSourceParameters

参数名必填类型参数描述
sourceMNSParametersFalseStruct事件源为消息服务 MNS 时的自定义参数配置
sourceRocketMQParametersFalseStruct事件源为消息服务 RockerMQ 时的自定义参数配置
sourceRabbitMQParametersFalseStruct事件源为消息服务 RabbitMQ 时的自定义参数配置
sourceKafkaParametersFalseStruct事件源为消息队列 Kafka 时的自定义参数配置
sourceDTSParametersFalseStruct事件源为数据传输服务 DTS 时的自定义参数配置

sourceMNSParameters

参数名必填类型参数描述
IsBase64DecodeFalseBoolean是否开启 Base64 编码。默认为 true
QueueNameTrueString消息服务 MNS 的 Queue 的名称

sourceRocketMQParameters

参数名必填类型参数描述
GroupIDTrueString消息队列 RocketMQ 版的 Group ID
InstanceIdTrueString消息队列 RocketMQ 版的实例 ID。更多信息,请参见使用限制
RegionIdFalseString消息队列 RocketMQ 版的实例所属地域
TimestampFalseNumber时间戳。仅当参数 Offset 取值为 CONSUME_FROM_TIMESTAMP 时,该参数有效
TopicTrueString消息队列 RocketMQ 版实例的 Topic 名称。更多信息,请参见使用限制

sourceRabbitMQParameters

参数名必填类型参数描述
InstanceIdTrueString消息队列 RabbitMQ 版的实例的 ID。更多信息,请参见使用限制
QueueNameTrueString消息队列 RabbitMQ 版实例的 Queue 的名称。更多信息,请参见使用限制
RegionIdFalseString消息服务 MNS Queue 所属地域
VirtualHostNameTrueString消息队列 RabbitMQ 版实例的 Vhost 的名称。更多信息,请参见使用限制

sourceKafkaParameters

参数名必填类型参数描述
ConsumerGroupTrueString消息队列 Kafka 版的资源组 ID
InstanceIdTrueString消息队列 Kafka 版的实例 ID
NetworkFalseString所用网络类型,可选值有 PublicNetwork 以及 Default,前者表示使用自建 vpc 网络,后者表示使用默认公网
OffsetResetTrueString消息的消费位点,可选值有 latest 和 earliest,分别表示最新位点以及最早位点
RegionIdFalseString消息队列 Kafka 版的实例所属地域
SecurityGroupIdFalseString所用 vpc 网络的安全组 ID,网络类型为 PublicNetwork 时配置
TopicTrueString消息队列 Kafka 版的 Topic 名称
VpcIdFalseString所用 vpc 网络的 ID,网络类型为 PublicNetwork 时配置
VSwitchIdsFalseString所用 vpc 网络的交换机 ID,网络类型为 PublicNetwork 时配置

sourceDTSParameters

参数名必填类型参数描述
BrokerUrlTrueString数据订阅任务的网络连接地址
InitCheckPointTrueNumber期望消费第一条数据的时间戳,单位是秒。消费位点必须在订阅实例的数据范围之内。
PasswordTrueString创建消费组时设置的密码
RegionIdTrueString数据传输服务 DTS 任务所属地域
SidTrueString数据订阅消费组 ID
TaskIdTrueStringDTSJobId
TopicTrueString数据订阅任务的 Topic
UsernameTrueString创建消费组时设置的账号

eventSinkConfig

参数名必填类型参数描述
deliveryOptionTrueStruct事件投递参数
deliveryOption
参数名必填类型参数描述
modeFalseString事件投递模型,该参数与 runOptions 中的 mode 参数含义相同,但是优先级更低,不推荐使用
eventSchemaFalseString指定函数入口参数 event 中每个数据元素的格式,有如下两种取值模式:
- CloudEvents: 以通用格式描述事件数据的规范,旨在简化不同服务、平台间的事件声明和传输
- RawData: 只投递 CloudEvents 中 $data 引用的数据,不包含 CloudEvents 格式中的其它元数据信息

runOptions

参数名必填类型参数描述
batchWindowFalseStruct调用函数时的批处理参数
deadLetterQueueFalseStruct死信队列配置,若配置了该配置,超过重试策略后的事件将被放入该队列中
errorsToleranceFalseString容错策略,即发生错误时是否选择容错。取值说明如下:
ALL: 允许容错
NONE: 禁止容错
maximumTasksFalseString并发消费者数量,只有在指定 Kafka 事源时该参数有效
modeTrueString事件投递模型,优先级比 EventSinkConfig.DeliveryOption.mode 更高,可选值有 event-driven 以及 event-streaming,前者是事件驱动模型,底层由 eventbridge 的事件总线进行实现;后者是事件流模型,底层由 eventbridge 的事件流进行实现。runOptions 中参数只有在 mode 为 event-streaming 时才有效
retryStrategyFalseStruct事件推送失败时的重试策略相关参数
batchWindow
参数名必填类型参数描述
CountBasedWindowFalseString一次调用函数发送的最大批量消息条数,当积压的消息数量到达设定值时才会发送请求,取值范围为 [1, 10000]。例如 1。
TimeBasedWindowFalseString调用函数的间隔时间,系统每到间隔时间点会将消息聚合后发给函数计算,取值范围为 [0,15],单位秒。0 秒表示无等待时间,直接投递。例如 3。
deadLetterQueue
参数名必填类型参数描述
ArnTrueString死信队列的 Arn
retryStrategy
参数名必填类型参数描述
MaximumEventAgeInSecondsFalseString事件消息的最大存活时间,单位是秒
MaximumRetryAttemptsFalseString事件消息的最大存活时间,单位是秒
PushRetryStrategyTrueString事件推送失败时的重试策略,取值说明如下:
BACKOFF_RETRY: 退避重试策略。重试 3 次,每次重试的间隔时间是 10 秒到 20 秒之间的随机值。
EXPONENTIAL_DECAY_RETRY: 指数衰减重试。重试 176 次,每次重试的间隔时间指数递增至 512 秒,总计重试时间为 1 天;每次重试的具体间隔为:1,2,4,8,16,32,64,128,256,512,512...512 秒(共 167 个 512)。
在 GitHub 上编辑本页面 更新时间: Thu, Feb 22, 2024