Este tópico descreve o objeto de contexto disponível ao escrever código no ambiente de execução PHP do Function Compute.
Ao executar sua função, o Function Compute 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 para 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 em caso de erros. |
|
|
Array |
Par de AccessKey temporário que o Function Compute obtém ao assumir a função vinculada ao serviço. Válido por 36 horas. Use essas credenciais para chamar outros serviços da Alibaba Cloud, como o Object Storage Service (OSS), sem codificar o par de AccessKey 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, usado 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 a seguir 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.