Todos os produtos
Search
Central de documentação

Function Compute:Contexto

Última atualização: Sep 21, 2026

Quando o Function Compute invoca sua função, ele passa um objeto Context para o método handler. O objeto de contexto fornece acesso ao ID da requisição, às credenciais de invocação, aos metadados da função, às informações do ambiente de execução e a um logger integrado, sem a necessidade de configuração adicional.

Rastreamento

Métodos do contexto

A interface Context é definida no pacote com.aliyun.fc.runtime e expõe os seguintes métodos:

  • getRequestId() — Retorna o ID exclusivo para esta invocação. Registre-o para correlacionar logs e solucionar erros.

  • getExecutionCredentials() — Retorna credenciais temporárias que o Function Compute obtém ao assumir sua função vinculada ao service. As credenciais são válidas por 36 horas e incluem um AccessKey ID, um AccessKey secret e um token de segurança.

  • getFunctionParam() — Retorna metadados sobre a função invocada, incluindo seu nome, handler, memória e tempo limite.

  • getLogger() — Retorna o logger encapsulado pelo Function Compute para escrever logs estruturados.

  • getService() — Retorna informações sobre o service associado à função.

  • getRetryCount() — Retorna o número de repetições desta invocação.

  • OpenTracing

    Para obter mais informações sobre o rastreamento, consulte 链路追踪简介.

Definição da 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();
}

Acessar o OSS com credenciais temporárias

O exemplo a seguir usa credenciais temporárias do contexto para fazer o upload de um objeto para o Object Storage Service (OSS). O projeto completo está disponível no GitHub: java11-oss.

Pré-requisitos

Antes de começar, certifique-se de ter:

  • Um bucket do OSS (o exemplo usa my-bucket)

  • Uma função vinculada ao service com a política AliyunOSSFullAccess anexada. Use AliyunFCDefaultRole caso não defina uma função personalizada.

Exemplo

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

O padrão principal: chame context.getExecutionCredentials() para obter credenciais de curta duração e, em seguida, passe o AccessKey ID, o AccessKey secret e o token de segurança diretamente para o OSSClientBuilder. Isso evita armazenar credenciais de longo prazo no código da sua função.

Próximos passos