Este tema describe el objeto de contexto disponible cuando escribe código en el entorno de ejecución PHP de Function Compute.
Cuando Function Compute ejecuta su función, el entorno de ejecución pasa un parámetro $context a su handler. Este arreglo contiene metadatos sobre la invocación actual, la configuración de su función y las credenciales temporales que puede usar para llamar a otros servicios de Alibaba Cloud.
Estructura del objeto de contexto
A continuación se muestra un ejemplo de la estructura del arreglo $context en el entorno de ejecución PHP:
[
'requestId' => 'b1c5100f-819d-c421-3a5e-7782a27d8a33',
'credentials' => [
'accessKeyId' => 'STS.access_key_id',
'accessKeySecret' => 'access_key_secret',
'securityToken' => 'security_token',
],
'function' => [
'name' => 'my-func',
'handler' => 'index.handler',
'memory' => 128,
'timeout' => 10,
'initializer' => 'index.initializer',
'initializationTimeout' => 10,
],
'service' =>[
'logProject' => 'my-log-project',
'logStore' => 'my-log-store',
'qualifier' => 'qualifier',
'versionId' => '1'
],
'region' => 'cn-shanghai',
'accountId' => '123456',
'tracing': {
'openTracingSpanContext': 'xxxxxxxxxxxx',
'jaegerEndpoint': 'xxxxxxxx',
'openTracingSpanBaggages': []
}
]
Campos del contexto
Campos de nivel superior
|
Campo |
Tipo |
Descripción |
|
|
String |
El identificador único de la invocación actual. Registre este ID para rastrear problemas cuando ocurran errores. |
|
|
Array |
El par de AccessKey temporal que Function Compute obtiene al asumir su rol vinculado al servicio. Tiene una vigencia de 36 horas. Use estas credenciales para llamar a otros servicios de Alibaba Cloud, como Object Storage Service (OSS), sin codificar de forma fija su par de AccessKey en el código de la función. Para más detalles, consulte Grant Function Compute permissions to access other Alibaba Cloud services. |
|
|
Array |
La configuración de la función invocada. |
|
|
Array |
Información sobre el servicio al que pertenece la función. |
|
|
String |
El identificador de la región donde se ejecuta la función. Por ejemplo, |
|
|
String |
El identificador de la cuenta de Alibaba Cloud propietaria de la función. |
|
|
Object |
Contexto de seguimiento distribuido basado en el estándar OpenTracing. Se completa cuando el seguimiento está habilitado. |
Campos de credentials
|
Campo |
Tipo |
Descripción |
|
|
String |
El AccessKey ID de la credencial temporal. |
|
|
String |
El AccessKey secret de la credencial temporal. |
|
|
String |
El token de seguridad asociado a la credencial temporal. |
Campos de function
|
Campo |
Tipo |
Descripción |
|
|
String |
El nombre de la función. |
|
|
String |
El handler de la función, con el formato |
|
|
Integer |
El tamaño de memoria configurado para la función, en MB. |
|
|
Integer |
El tiempo máximo de ejecución configurado para la función, en segundos. |
|
|
String |
El inicializador de la función, con el formato |
|
|
Integer |
El tiempo máximo de inicialización configurado para la función, en segundos. |
Campos de service
|
Campo |
Tipo |
Descripción |
|
|
String |
El Log Project de Simple Log Service asociado a este servicio. |
|
|
String |
El logstore de Simple Log Service asociado a este servicio. |
|
|
String |
La versión o el alias especificados al invocar la función. |
|
|
String |
La versión del servicio que se invocó realmente. |
Campos de tracing
|
Campo |
Tipo |
Descripción |
|
|
String |
El contexto de span de OpenTracing para la invocación actual. Se utiliza para propagar el seguimiento distribuido. |
|
|
String |
El endpoint del colector de Jaeger para enviar los datos de seguimiento. |
|
|
Array |
Los elementos de baggage de OpenTracing adjuntos al span actual. |
Acceder a los campos del contexto en su función
El siguiente ejemplo muestra cómo acceder a los campos comunes del contexto dentro de un handler PHP:
<?php
function handler($event, $context) {
// Use requestId to correlate logs with a specific invocation
$requestId = $context['requestId'];
error_log("Request ID: " . $requestId);
// Use temporary credentials to call other Alibaba Cloud services
$accessKeyId = $context['credentials']['accessKeyId'];
$accessKeySecret = $context['credentials']['accessKeySecret'];
$securityToken = $context['credentials']['securityToken'];
// Read function configuration
$functionName = $context['function']['name'];
$memoryLimit = $context['function']['memory']; // in MB
$timeoutLimit = $context['function']['timeout']; // in seconds
// Identify which version or alias was invoked
$qualifier = $context['service']['qualifier'];
$versionId = $context['service']['versionId'];
return "OK";
}
Las credenciales del contexto son temporales y caducan después de 36 horas. No las almacene en caché fuera de la invocación de la función.