全部產品
Search
文件中心

Function Compute:配置雲產品事件觸發程序

更新時間:Jan 16, 2025

雲產品事件觸發程序能夠實現通過阿里雲產品事件觸發函數執行,這些事件主要包括CloudMonitor事件、審計事件、雲端服務器事件、阿里雲物聯網IoT事件和部分雲產品營運事件等雲產品事件。本文以雲端服務器為例,介紹如何在控制台建立阿里雲產品事件觸發程序、配置函數入口參數和編寫代碼等。

功能簡介

您在Function Compute控制台提交建立觸發器的請求後,Function Compute根據觸發器的配置資訊,將自動在阿里雲官方事件匯流排default下建立一個事件規則服務名稱-函數名稱-觸發器名稱。建立完成後,您可以在Function Compute控制台查看觸發器資訊,也可以在事件匯流排EventBridge控制台查看自動建立的事件規則資訊。當事件來源指定類型的事件投遞到事件匯流排時,將觸發該觸發器關聯的函數執行一次。

注意事項

  • 事件匯流排EventBridge的雲端服務專用事件匯流排default上最多隻能建立10個事件規則,超過10個之後將無法再建立雲產品事件觸發程序。
  • 雲產品事件觸發程序不支援通過Serverless Devs工具建立。

前提條件

步驟一:建立觸發器

  1. 登入Function Compute控制台,在左側導覽列,單擊服務及函數
  2. 在頂部功能表列,選擇地區,然後在服務列表頁面,單擊目標服務操作列的函數管理
  3. 在函數詳情頁面,單擊觸發器管理頁簽,從版本或別名下拉式清單選擇要建立觸發器的版本或別名,然後單擊建立觸發器

  4. 在建立觸發程序面板,填寫相關資訊。然後單擊確定
    參數操作本文樣本
    觸發器類型選擇雲端服務器雲端服務器
    名稱填寫自訂的觸發器名稱。ecs-trigger
    版本或別名預設值為LATEST,如果您需要建立其他版本或別名的觸發器,首先您需要在函數詳情頁的右上方切換到該版本或別名。關於版本和別名的簡介,請參見管理版本管理別名LATEST
    事件類型選擇自訂事件類型選中全部事件類型。如果選擇自訂事件類型,您可以選擇雲端服務器的一個或多個事件類型。保留雲端硬碟
    事件模式內容不支援手動編輯,您在事件類型參數中選擇事件類型後,事件模式內容自動填滿。關於事件模式的資訊,請參見事件模式
    {
        "source": [
            "acs.ecs"
        ],
        "type": [
            "ecs:Disk:ConvertToPostpaidCompleted"
        ]
    }
    調用方式選擇函數調用方式,取值說明如下:
    • 同步調用:預設調用方式,事件觸發函數執行,等待函數調用完成後,Function Compute返回執行結果。更多資訊,請參見同步調用
    • 非同步呼叫:適用於調度延時較長的函數,事件觸發函數執行後,Function Compute立即返迴響應結果並且確保函數至少被成功執行一次,但不會返回具體執行結果。更多資訊,請參見功能概覽
    同步調用

    建立完成後,在觸發器名稱列表中顯示已建立的觸發器。如需對建立的觸發器進行修改或刪除,具體操作,請參見觸發器管理


步驟二:配置函數入口參數

Elastic Compute Service的事件會以event的形式作為輸入參數傳遞給函數,您可以手動將event傳給函數類比觸發事件。

  1. 在函數詳情頁面,單擊函數代碼頁簽,然後單擊測試函數右側xialatubiao表徵圖,從下拉式清單中,選擇配置測試參數
  2. 配置測試參數面板,選擇建立新測試事件編輯已有測試事件頁簽,填寫事件名稱和事件內容。然後單擊確定

    event格式如下所示。關於支援的所有官方事件來源的事件內容,請參見阿里雲官方事件來源

    {
        "datacontenttype": "application/json;charset=utf-8",
        "aliyunaccountid": "123456789098****",
        "data": {
            "result": "accomplished",
            "diskId": "d-bp11ba7acc69nkta****"
        },
        "subject": "acs:ecs:cn-hangzhou:123456789098****:disk/d-bp11ba7acc69nkta****",
        "source": "acs.ecs",
        "type": "ecs:Disk:ConvertToPostpaidCompleted",
        "aliyunpublishtime": "2021-01-18T03:58:31.762Z",
        "specversion": "1.0",
        "aliyuneventbusname": "default",
        "id": "70c0414c-b260-4923-b584-1d6e5646****",
        "time": "2021-01-18T11:58:31.125+08:00",
        "aliyunregionid": "cn-hangzhou",
        "aliyunpublishaddr": "172.25.XX.XX"
    }
    event中涉及的參數解釋如下表所示。
    參數類型樣本值描述
    datacontenttypeStringapplication/json;charset=utf-8參數data的內容形式。datacontenttype只支援application/json格式。
    aliyunaccountidString123456789098****阿里雲帳號ID。
    dataStruct
    {
            "result": "accomplished",
            "diskId": "d-bp11ba7acc69nkta****"
    }
    事件內容。JSON對象,內容由發起事件的服務決定。CloudEvents可能包含事件發生時由事件生產者給定的上下文,data中封裝了這些資訊。
    subjectStringacs:ecs:cn-hangzhou:123456789098****:disk/d-bp11ba7acc69nkta****事件主題。
    sourceStringacs.ecs事件來源。
    typeStringecs:Disk:ConvertToPostpaidCompleted事件類型。
    aliyunpublishtimeTimestamp2021-01-18T03:58:31.762Z接收事件的時間。
    specversionString1.0CloudEvents協議版本。
    aliyuneventbusnameStringdefault接收事件的事件匯流排名稱。
    idString70c0414c-b260-4923-b584-1d6e5646****事件ID。
    timeTimestamp2021-01-18T11:58:31.125+08:00事件產生的時間。
    aliyunregionidStringcn-hangzhou接收事件的地區。
    aliyunpublishaddrString172.25.XX.XX接收事件的伺服器位址。

步驟三:編寫函數代碼並測試

完成雲端服務器觸發器的建立之後,您可以開始編寫函數代碼並測試以驗證代碼的正確性。在實際操作過程中,當阿里雲官方事件來源Elastic Compute Service產生的事件通過事件匯流排EventBridge投遞到Function Compute時,觸發器會自動觸發函數的執行。

  1. 在函數詳情頁面,單擊函數代碼頁簽,在代碼編輯器中編寫代碼,然後單擊部署代碼

    本文以Node.js函數代碼為例。

    'use strict';
    /*
    To enable the initializer feature
    please implement the initializer function as below:
    exports.initializer = (context, callback) => {
      console.log('initializing');
      callback(null, '');
    };
    */
    exports.handler = (event, context, callback) => {
      console.log("event: %s", event);
      //解析event參數,對event進行處理。
      callback(null, 'return result');
    }

  2. 單擊函數代碼頁簽的測試函數

    執行完成後,您可以在函數字碼頁簽的上方查看執行結果。

更多資訊

如需對建立的觸發器進行修改或刪除,具體操作,請參見觸發器管理