Este tópico descreve o objeto de contexto disponível ao escrever código no ambiente de execução PHP do Function Compute.
Quando o Function Compute executa sua função, o runtime passa um parâmetro $context para o handler. Esse array contém metadados sobre a invocação atual, a configuração da função e credenciais temporárias que permitem chamar outros serviços da Alibaba Cloud.
Estrutura do objeto de contexto
O exemplo a seguir mostra a estrutura do array $context no runtime 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 do contexto
Campos de nível superior
|
Campo |
Tipo |
Descrição |
|
|
String |
ID exclusivo da invocação atual. Registre este ID para rastrear problemas quando ocorrerem erros. |
|
|
Array |
Par de AccessKey temporário obtido pelo Function Compute ao assumir a função vinculada ao serviço. Válido por 36 horas. Utilize essas credenciais para chamar outros serviços da Alibaba Cloud, como o Object Storage Service (OSS), sem codificar seu par de AccessKey diretamente no código da função. Para mais detalhes, consulte Conceder permissões ao Function Compute para acessar outros serviços da Alibaba Cloud. |
|
|
Array |
Configuração da função invocada. |
|
|
Array |
Informações sobre o serviço ao qual a função pertence. |
|
|
String |
ID da região onde a função é executada. Por exemplo, |
|
|
String |
ID da conta Alibaba Cloud proprietária da função. |
|
|
Object |
Contexto de rastreamento distribuído baseado no padrão OpenTracing, preenchido quando o rastreamento está ativado. |
Campos de credentials
|
Campo |
Tipo |
Descrição |
|
|
String |
AccessKey ID da credencial temporária. |
|
|
String |
AccessKey Secret da credencial temporária. |
|
|
String |
Token de segurança associado à credencial temporária. |
Campos de function
|
Campo |
Tipo |
Descrição |
|
|
String |
Nome da função. |
|
|
String |
Handler da função, no formato |
|
|
Integer |
Tamanho de memória configurado para a função, em MB. |
|
|
Integer |
Tempo máximo de execução configurado para a função, em segundos. |
|
|
String |
Inicializador da função, no formato |
|
|
Integer |
Tempo máximo de inicialização configurado para a função, em segundos. |
Campos de service
|
Campo |
Tipo |
Descrição |
|
|
String |
Log Project no Simple Log Service associado a este serviço. |
|
|
String |
Logstore no Simple Log Service associado a este serviço. |
|
|
String |
Versão ou alias especificado durante a invocação da função. |
|
|
String |
Versão do serviço efetivamente invocada. |
Campos de tracing
|
Campo |
Tipo |
Descrição |
|
|
String |
Contexto de span do OpenTracing para a invocação atual, utilizado na propagação de rastreamento distribuído. |
|
|
String |
Endpoint do coletor Jaeger para envio de dados de rastreamento. |
|
|
Array |
Itens de baggage do OpenTracing anexados ao span atual. |
Acessar campos de contexto na função
O exemplo abaixo demonstra como acessar campos comuns do contexto em um 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";
}
As credenciais no contexto são temporárias e expiram após 36 horas. Não as armazene em cache além da invocação da função.