更新时间:2023-12-29 GMT+08:00

开发事件函数

函数定义

PHP 7.3函数的接口定义如下所示:

function handler($event, $context)

  • 入口函数名($handler):入口函数名称, 需和函数执行入口处用户自定义的入口函数名称一致。
  • 执行事件($event):函数执行界面由用户输入的执行事件参数, 格式为JSON对象。
  • 上下文环境($context):Runtime提供的函数执行上下文,其接口定义在SDK接口说明。
  • 函数执行入口: index.handler。
  • 函数执行入口格式为“[文件名].[函数名]”。例如创建函数时设置为index.handler,那么FunctionGraph会去加载index.php中定义的handler函数。

PHP的initializer入口介绍

函数服务目前支持以下PHP运行环境。

  • Php 7.3 (runtime = Php7.3)

Initializer格式为:

[文件名].[initializer名]

示例:创建函数时指定的initializer为main.my_initializer,那么FunctionGraph会去加载main.php中定义的my_initializer函数。

在函数服务中使用PHP实现initializer接口,需要定义一个PHP函数作为initializer入口,一个最简单的initializer示例如下。

<?php
Function my_initializer($context) {
    echo 'hello world' . PHP_EOL;
    }
?>
  • 函数名

    my_initializer需要与实现initializer接口时的initializer字段相对应。

    示例:实现initializer接口时指定的Initializer入口为main.my_initializer,那么FunctionGraph会去加载main.php中定义的my_initializer函数。

  • context参数

    context参数中包含一些函数的运行时信息,例如:request id、临时AccessKey、function meta等。

SDK接口

Context类中提供了许多上下文方法供用户使用,其声明和功能如所示。

表1 Context类上下文方法说明

方法名

方法说明

getRequestID()

获取请求ID。

getRemainingTimeInMilliSeconds ()

获取函数剩余运行时间。

getAccessKey()

获取用户委托的AccessKey(有效期24小时),使用该方法需要给函数配置委托。

说明:

当前函数工作流已停止维护Runtime SDK 中getAccessKey接口,您将无法使用getAccessKey获取临时AK。

getSecretKey()

获取用户委托的SecretKey(有效期24小时),使用该方法需要给函数配置委托。

说明:

当前函数工作流已停止维护Runtime SDK 中getSecretKey接口,您将无法使用getSecretKey获取临时SK。

getSecurityAccessKey()

获取用户委托的SecurityAccessKey(有效期24小时),使用该方法需要给函数配置委托。

getSecuritySecretKey()

获取用户委托的SecuritySecretKey(有效期24小时),使用该方法需要给函数配置委托。

getSecurityToken()

获取用户委托的SecurityToken(有效期24小时),使用该方法需要给函数配置委托。

getUserData(string key)

通过key获取用户通过环境变量传入的值。

getFunctionName()

获取函数名称。

getRunningTimeInSeconds ()

获取函数超时时间。

getVersion()

获取函数的版本。

getMemorySize()

分配的内存。

getCPUNumber()

获取函数占用的CPU资源。

getPackage()

获取函数组。

getToken()

获取用户委托的token(有效期24小时),使用该方法需要给函数配置委托。

getLogger()

获取context提供的logger方法,返回一个日志输出类,通过使用其info方法按“时间-请求ID-输出内容”的格式输出日志。

如调用info方法输出日志:

logg = context.getLogger()$

$logg->info("hello")

getAlias

获取函数的别名

getToken()、getAccessKey()和getSecretKey()方法返回的内容包含敏感信息,请谨慎使用,避免造成用户敏感信息的泄露。

执行结果

执行结果由3部分组成:函数返回、执行摘要和日志。

表2 执行结果说明

参数项

执行成功

执行失败

函数返回

返回函数中定义的返回信息。

返回包含错误信息、错误类型和堆栈异常报错信息的JSON文件。格式如下:

{
    "errorMessage": "",
    "errorType": "",
    "stackTrace": {}
}

errorMessage:Runtime返回的错误信息

errorType:错误类型

stackTrace:Runtime返回的堆栈异常报错信息

执行摘要

显示请求ID、配置内存、执行时长、实际使用内存和收费时长。

显示请求ID、配置内存、执行时长、实际使用内存和收费时长。

日志

打印函数日志,最多显示4KB的日志。

打印报错信息,最多显示4KB的日志。