Tüm Ürünler
Search
Belge Merkezi

Function Compute:Bağlam

Son Güncelleme:Oct 08, 2026

Function Compute işlevinizi çağırdığında, işleyici yöntemine bir Context nesnesi iletir. Bu bağlam nesnesi, ek bir yapılandırma gerektirmeden istek kimliğine, çağrı kimlik bilgilerine, işlev meta verilerine, yürütme ortamı bilgilerine ve yerleşik günlükçüye erişmenizi sağlar.

、İzleme

Bağlam yöntemleri

Context arabirimi, com.aliyun.fc.runtime paketinde tanımlanır ve aşağıdaki yöntemleri sunar:

  • getRequestId() — Bu çağrı için benzersiz kimliği döndürür. Günlükleri ilişkilendirmek ve hataları gidermek amacıyla bu kimliği kaydedin.

  • getExecutionCredentials() — Function Compute'ın hizmetle bağlantılı rolünüzü üstlenerek edindiği geçici kimlik bilgilerini döndürür. Bu kimlik bilgileri 36 saat boyunca geçerlidir ve bir AccessKey ID, AccessKey Secret ile güvenlik belirtecini içerir.

  • getFunctionParam() — Çağrılan işlevin adı, işleyicisi, belleği ve zaman aşımı süresi dahil olmak üzere meta verilerini döndürür.

  • getLogger() — Yapılandırılmış günlükler yazmak üzere Function Compute tarafından kapsüllenmiş günlükçüyü döndürür.

  • getService() — İşlevle ilişkili hizmet hakkında bilgi döndürür.

  • getRetryCount() — Bu çağrının kaç kez yeniden denendiğini döndürür.

  • OpenTracing

    İzleme ile ilgili bilgiler için bkz. İzlemeye Giriş.

Arabirim tanımı:

package com.aliyun.fc.runtime;

public interface Context {

    public String getRequestId();

    public Credentials getExecutionCredentials();

    public FunctionParam getFunctionParam();

    public FunctionComputeLogger getLogger();

    public Service getService();

    # public OpenTracing getTracing();

    public int getRetryCount();
}

Geçici kimlik bilgilerini kullanarak OSS'e erişme

Aşağıdaki örnekte, Object Storage Service (OSS) içinde bir nesne yüklemek için bağlamdan alınan geçici kimlik bilgileri kullanılmaktadır. Projenin tamamına GitHub üzerinden erişebilirsiniz: java11-oss.

Ön koşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

  • Bir OSS paketi (örnek my-bucket paketini kullanır)

  • AliyunOSSFullAccess ilkesi eklenmiş bir hizmetle bağlantılı rol. Özel bir rol ayarlamadıysanız AliyunFCDefaultRole öğesini kullanın

Örnek

package example;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import com.aliyun.fc.runtime.Context;
import com.aliyun.fc.runtime.Credentials;
import com.aliyun.fc.runtime.StreamRequestHandler;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;

public class App implements StreamRequestHandler {

    @Override
    public void handleRequest(
            InputStream inputStream, OutputStream outputStream, Context context) throws IOException {

        // The bucket must exist before running this function.
        String bucketName = "my-bucket";
        // Use an internal endpoint to avoid cross-region data transfer fees.
        // This example uses the internal endpoint for the China (Hangzhou) region.
        String endpoint = "https://oss-cn-hangzhou-internal.aliyuncs.com";

        // Get temporary credentials from the context.
        // These credentials are short-lived and scoped to your service-linked role —
        // no need to hardcode AccessKey pairs in your function code.
        Credentials creds = context.getExecutionCredentials();

        // Build an OSS client using the temporary credentials.
        OSS ossClient = new OSSClientBuilder().build(
            endpoint,
            creds.getAccessKeyId(),
            creds.getAccessKeySecret(),
            creds.getSecurityToken()
        );

        // Upload a byte array as an object.
        // Do not include the bucket name in the object path.
        byte[] content = "Hello FC".getBytes();
        ossClient.putObject(bucketName, "exampledir/exampleobject.txt", new ByteArrayInputStream(content));

        ossClient.shutdown();

        outputStream.write(new String("done").getBytes());
    }
}

Temel kalıp şöyledir: Kısa ömürlü kimlik bilgilerini almak için context.getExecutionCredentials() yöntemini çağırın, ardından AccessKey ID, AccessKey Secret ve güvenlik belirtecini doğrudan OSSClientBuilder öğesine iletin. Bu yaklaşım, uzun vadeli kimlik bilgilerinin işlev kodunuzda saklanmasını önler.

Sonraki adımlar