全部產品
Search
文件中心

Function Compute:事件請求處理常式(Event Handler)

更新時間:Aug 05, 2025

本文介紹Python事件請求處理常式的結構特點和樣本。

Event Handler簽名

一個簡單的Event Handler簽名定義如下。

def handler(event, context):
    return 'hello world'

Event Handler的樣本解析如下:

  • handler:方法名稱。與Function Compute控制台配置的請求處理常式(函數入口)相對應。例如,為FC函數配置的handler為main.handler,那麼Function Compute會去載入main.py中定義的handler函數,並從handler函數開始執行。

  • event:您調用函數時傳入的參數。在Python 2.7運行環境中,類型為String。在Python 3運行環境中,類型為Bytes。

  • context:為您的FC函數調用提供在調用時的運行上下文資訊。

樣本一:解析JSON格式參數

程式碼範例

當您傳入JSON格式參數時,Function Compute會透傳參數內容,需要您在代碼中自行解析。下面是解析JSON格式事件的程式碼範例。

# -*- coding: utf-8 -*-
import json
def handler(event, context):
    evt = json.loads(event)
    return evt['key']

前提條件

建立函數

操作步驟

  1. 登入Function Compute控制台,在左側導覽列,單擊服務及函數
  2. 在頂部功能表列,選擇地區,然後在服務列表頁面,單擊目標服務。
  3. 函數管理頁面,單擊目標函數名稱。
  4. 在函數詳情頁面,單擊函數代碼頁簽,在代碼編輯器中輸入上述範例程式碼,然後單擊部署代碼

    重要

    上述範例程式碼中函數的請求處理常式是index.py中的handler方法。如果您的函數的請求處理常式配置與此不同,請更新對應的檔案名稱和方法。

  5. 函數代碼頁簽,單擊測試函數右側的down表徵圖,從下拉式清單中選擇配置測試參數,輸入如下樣本測試參數,然後單擊確定

    {
      "key": "value"
    }
  6. 單擊測試函數

    函數執行成功後,查看返回結果,您可以看到返回結果為value

樣本二:通過臨時密鑰安全讀寫OSS的資源

範例程式碼

您可以使用Function Compute為您提供的臨時密鑰訪問Object Storage Service,程式碼範例如下所示。

import json
import oss2

def handler(event, context):
    evt = json.loads(event)
    creds = context.credentials
    # do not forget security_token
    auth = oss2.StsAuth(creds.access_key_id, creds.access_key_secret, creds.security_token)
    bucket = oss2.Bucket(auth, evt['endpoint'], evt['bucket'])
    bucket.put_object(evt['objectName'], evt['message'])
    return 'success'

上述程式碼範例中的creds = context.credentials表示從context參數中擷取臨時密鑰,避免在代碼中寫入程式碼密碼等敏感資訊。

重要

請確保當前所在的服務配置的角色具有訪問Object Storage Service的許可權。您可以登入RAM控制台,為該角色添加訪問Object Storage Service的許可權。

前提條件

建立函數

操作步驟

  1. 登入Function Compute控制台,在左側導覽列,單擊服務及函數
  2. 在頂部功能表列,選擇地區,然後在服務列表頁面,單擊目標服務。
  3. 函數管理頁面,單擊目標函數名稱。
  4. 函數詳情頁面,單擊函數代碼頁簽,在代碼編輯器中輸入上述範例程式碼,然後單擊部署函數

    重要

    上述範例程式碼中函數的請求處理常式是index.py中的handler方法。如果您的函數的請求處理常式配置與此不同,請更新對應的檔案名稱和方法。

  5. 函數代碼頁簽,單擊測試函數右側的down表徵圖,從下拉式清單中選擇配置測試參數,輸入如下樣本測試參數,然後單擊確定

    {
      "endpoint": "http://oss-cn-shenzhen-internal.aliyuncs.com",
      "bucket": "oss-********",
      "objectName": "oss-test-object",
      "message": "oss-test-content"
    }
  6. 單擊測試函數

    函數執行成功後,查看返回結果,您可以看到返回結果為success

樣本三:調用外部命令

您的Python程式也可以建立fork進程,調用外部命令。例如,您可以使用subprocess模組調用Linux的ls -l命令,輸出目前的目錄下的檔案清單。程式碼範例如下。

import os
import subprocess

def handler(event, context):
    ret = subprocess.check_output(['ls', "-l"])
    return ret