Todos los productos
Search
Centro de documentos

Function Compute:Contexto

Última actualización: Sep 06, 2026

Cuando Function Compute invoca su función, pasa un objeto Context al método handler. Este objeto le permite acceder al ID de la solicitud, las credenciales de invocación, los metadatos de la función, la información del entorno de ejecución y un logger integrado, sin necesidad de configuración adicional.

、链路追踪

Métodos de Context

La interfaz Context se define en el paquete com.aliyun.fc.runtime y expone a continuación los siguientes métodos:

  • getRequestId() — Devuelve el ID único de esta invocación. Regístrelo para correlacionar registros y solucionar errores.

  • getExecutionCredentials() — Devuelve las credenciales temporales que Function Compute obtiene al asumir su rol vinculado al servicio. Estas credenciales tienen una validez de 36 horas e incluyen un AccessKey ID, un AccessKey secret y un token de seguridad.

  • getFunctionParam() — Devuelve los metadatos de la función invocada, como su nombre, handler, memoria y periodo de tiempo de espera.

  • getLogger() — Devuelve el logger que Function Compute encapsula para escribir registros estructurados.

  • getService() — Devuelve la información del servicio asociado a la función.

  • getRetryCount() — Devuelve el número de veces que se reintentó esta invocación.

  • OpenTracing

    Para más información sobre el rastreo de enlaces, consulte 链路追踪简介.

Definición de la interfaz:

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

Acceder a OSS con credenciales temporales

En el siguiente ejemplo se usan las credenciales temporales del contexto para cargar un objeto en Object Storage Service (OSS). El proyecto completo está disponible en GitHub: java11-oss.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • Un bucket de OSS (el ejemplo usa my-bucket)

  • Un rol vinculado al servicio con la política AliyunOSSFullAccess adjunta. Use AliyunFCDefaultRole si no ha configurado un rol personalizado

Ejemplo

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

El patrón clave consiste en llamar a context.getExecutionCredentials() para obtener credenciales de corta duración. Después, pase el AccessKey ID, el AccessKey secret y el token de seguridad directamente a OSSClientBuilder. De este modo, evita almacenar credenciales permanentes en el código de su función.

Pasos siguientes