Tous les produits
Search
Centre de documentation

Function Compute:Contexte

Dernière mise à jour :Sep 21, 2026

Lorsque Function Compute invoque votre fonction, il transmet un objet Context au gestionnaire. Cet objet vous donne accès à l'ID de requête, aux identifiants d'invocation, aux métadonnées de la fonction, aux informations sur l'environnement d'exécution et à un journaliseur intégré, sans configuration supplémentaire.

Suivi des traces

Méthodes du contexte

L'interface Context est définie dans le package com.aliyun.fc.runtime et expose les méthodes suivantes :

  • getRequestId() : renvoie l'ID unique de cette invocation. Enregistrez-le pour corréler les journaux et résoudre les erreurs.

  • getExecutionCredentials() : renvoie les identifiants temporaires qu'Function Compute obtient en endossant votre rôle lié au service. Ces identifiants sont valides pendant 36 heures et incluent un AccessKey ID, un AccessKey secret et un jeton de sécurité.

  • getFunctionParam() : renvoie les métadonnées de la fonction invoquée, notamment son nom, son gestionnaire, sa mémoire et son délai d'expiration.

  • getLogger() : renvoie le journaliseur encapsulé par Function Compute pour l'écriture de journaux structurés.

  • getService() : renvoie les informations sur le service associé à la fonction.

  • getRetryCount() : renvoie le nombre de tentatives de cette invocation.

  • OpenTracing

    Pour plus d'informations sur le suivi des traces, consultez la rubrique Présentation du suivi des traces.

Définition de l'interface :

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();
}

Accéder à OSS à l'aide d'identifiants temporaires

L'exemple suivant utilise les identifiants temporaires issus du contexte pour charger un objet vers Object Storage Service (OSS). Le projet complet est disponible sur GitHub : java11-oss.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un bucket OSS (l'exemple utilise my-bucket)

  • Un rôle lié au service auquel est attachée la politique AliyunOSSFullAccess. Utilisez AliyunFCDefaultRole si vous n'avez pas configuré de rôle personnalisé.

Exemple

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());
    }
}

Le principe clé consiste à appeler context.getExecutionCredentials() pour obtenir des identifiants à durée de vie limitée, puis à transmettre directement l'AccessKey ID, l'AccessKey secret et le jeton de sécurité à OSSClientBuilder. Cette approche évite de stocker des identifiants à long terme dans le code de votre fonction.

Étapes suivantes