Bu konu, Function Compute PHP çalışma zamanı ortamında kod yazarken kullanabileceğiniz bağlam nesnesini açıklar.
Function Compute işlevinizi çalıştırdığında, çalışma zamanı işleyicinize bir $context parametresi iletir. Bu dizi; geçerli çağrı, işlev yapılandırmanız ve diğer Alibaba Cloud hizmetlerini çağırmak için kullanabileceğiniz geçici kimlik bilgileri hakkında meta veriler içerir.
Bağlam nesnesi yapısı
Aşağıdaki örnek, PHP çalışma zamanındaki $context dizisinin yapısını gösterir:
[
'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': []
}
]
Bağlam alanları
Üst düzey alanlar
| Alan | Tür | Açıklama |
|---|---|---|
requestId |
Dize | Geçerli çağrının benzersiz kimliği. Hata oluştuğunda sorunları izlemek için bu kimliği kaydedin. |
credentials |
Dizi | Function Compute'ın hizmet bağlantılı rolünüzü üstlenerek edindiği geçici AccessKey çifti. 36 saat boyunca geçerlidir. AccessKey çiftinizi işlev koduna sabit olarak eklemek yerine, Object Storage Service (OSS) gibi diğer Alibaba Cloud hizmetlerini çağırmak için bu kimlik bilgilerini kullanın. Ayrıntılar için bkz. Function Compute'a diğer Alibaba Cloud hizmetlerine erişim izni verme. |
function |
Dizi | Çağrılan işlevin yapılandırması. |
service |
Dizi | İşlevin ait olduğu hizmetle ilgili bilgiler. |
region |
Dize | İşlevin çalıştığı bölgenin kimliği. Örneğin, Çin (Şanghay) bölgesi için cn-shanghai. Tüm bölge kimlikleri için bkz. Hizmet uç noktaları. |
accountId |
Dize | İşleve sahip olan Alibaba Cloud hesabının kimliği. |
tracing |
Nesne | İzleme etkinleştirildiğinde doldurulan, OpenTracing standardına dayalı dağıtılmış izleme bağlamı. |
credentials alanları
| Alan | Tür | Açıklama |
|---|---|---|
accessKeyId |
Dize | Geçici kimlik bilgisinin AccessKey ID'si. |
accessKeySecret |
Dize | Geçici kimlik bilgisinin AccessKey gizli anahtarı. |
securityToken |
Dize | Geçici kimlik bilgisiyle ilişkili güvenlik belirteci. |
function alanları
| Alan | Tür | Açıklama |
|---|---|---|
name |
Dize | İşlevin adı. |
handler |
Dize | İşlevin işleyicisi; biçimi <file>.<method> şeklindedir. |
memory |
Tamsayı | İşlev için yapılandırılan bellek boyutu (MB cinsinden). |
timeout |
Tamsayı | İşlev için yapılandırılan maksimum yürütme süresi (saniye cinsinden). |
initializer |
Dize | İşlevin başlatıcısı; biçimi <file>.<method> şeklindedir. |
initializationTimeout |
Tamsayı | İşlev için yapılandırılan maksimum başlatma süresi (saniye cinsinden). |
service alanları
| Alan | Tür | Açıklama |
|---|---|---|
logProject |
Dize | Bu hizmetle ilişkili Simple Log Service'deki Log Projesi. |
logStore |
Dize | Bu hizmetle ilişkili Simple Log Service'deki Logstore. |
qualifier |
Dize | İşlev çağrılırken belirtilen sürüm veya takma ad. |
versionId |
Dize | Gerçekten çağrılan hizmetin sürümü. |
tracing alanları
| Alan | Tür | Açıklama |
|---|---|---|
openTracingSpanContext |
Dize | Dağıtılmış iz yayılımı için kullanılan, geçerli çağrının OpenTracing span bağlamı. |
jaegerEndpoint |
Dize | İz verilerini göndermek için Jaeger toplayıcı uç noktası. |
openTracingSpanBaggages |
Dizi | Geçerli span'a eklenen OpenTracing bagaj öğeleri. |
İşlevinizde bağlam alanlarına erişme
Aşağıdaki örnek, bir PHP işleyicisinde yaygın bağlam alanlarına nasıl erişileceğini gösterir:
<?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";
}
Not
Bağlamdaki kimlik bilgileri geçicidir ve 36 saat sonra sona erer. Bunları işlev çağrısı ötesinde önbelleğe almayın.