Todos os produtos
Search
Central de documentação

Function Compute:Contexto

Última atualização: Jun 29, 2026

Este tópico descreve o objeto de contexto disponível ao escrever código no ambiente de execução C# do Function Compute. Quando o Function Compute executa sua função, ele passa um objeto de contexto para o método handler. Use esse objeto para acessar metadados de invocação, credenciais temporárias e utilitários de log sem codificar valores sensíveis no código da função.

Propriedades do contexto

Cada invocação recebe um objeto de contexto com as seguintes propriedades:

  • RequestId (string): ID exclusivo da invocação atual. Registre este valor em log para correlacionar solicitações durante a solução de problemas.

  • Function (IFunctionParameter): Informações básicas sobre a função invocada, como nome, handler, memória e tempo limite.

  • Credentials (ICredentials): Credenciais temporárias obtidas pelo Function Compute ao assumir sua função vinculada ao serviço. Essas credenciais têm validade de 36 horas e incluem um AccessKey ID, AccessKey secret e token de segurança. Use-as para acessar outros serviços da Alibaba Cloud, como o Object Storage Service (OSS), sem codificar um par de AccessKeys no código da função. Para mais informações, consulte Conceder permissões ao Function Compute para acessar outros serviços da Alibaba Cloud.

  • Logger (IFcLogger): Logger encapsulado pelo Function Compute.

  • Service (IServiceMeta): Informações básicas sobre o serviço ao qual a função pertence.

  • OpenTracing

Interface IFcContext

A interface IFcContext define o conjunto completo de propriedades disponíveis no objeto de contexto. Para ver a definição completa da interface, consulte IFcContext.

public interface IFcContext
{
    /// <summary>
    /// The AliFc request ID associated with the request.
    /// This is the same ID returned to the client that called invoke().
    /// This ID is reused for retries on the same request.
    /// </summary>
    string RequestId { get; }

    /// <summary>
    /// Gets the function parameter interface.
    /// </summary>
    /// <value>The function parameter interface.</value>
    IFunctionParameter FunctionParam {get;}

    /// <summary>
    /// AliFc logger associated with the Context object.
    /// </summary>
    IFcLogger Logger { get; }

    /// <summary>
    /// Gets the credentials interface.
    /// </summary>
    /// <value>The credentials interface.</value>
    ICredentials Credentials {get;}

    /// <summary>
    /// Gets the account identifier.
    /// </summary>
    /// <value>The account identifier.</value>
    string AccountId { get; }

    /// <summary>
    /// Gets the region.
    /// </summary>
    /// <value>The region.</value>
    string Region { get; }

    /// <summary>
    /// Gets the service meta.
    /// </summary>
    /// <value>The service meta.</value>
    IServiceMeta ServiceMeta { get; }
}

Uso de credenciais temporárias para acessar o OSS

O exemplo a seguir lê credenciais temporárias do objeto de contexto e as usa para fazer upload de um objeto no OSS. A função exige que a função vinculada ao serviço tenha a política AliyunOSSFullAccess anexada. A função recomendada é AliyunFCDefaultRole.

Usar o par de AccessKeys de uma conta Alibaba Cloud para realizar operações no Function Compute é uma prática de alto risco. Use um usuário RAM ou a função vinculada ao serviço. Nunca armazene um par de AccessKeys diretamente no código da função.

Para uma implementação de referência, consulte dotnet3-oss.

using System;
using System.IO;
using Aliyun.OSS;
using Aliyun.Serverless.Core;
using Microsoft.Extensions.Logging;

namespace Example
{
    public class OssExample
    {
        public Stream HandleRequest(Stream stream, IFcContext context)
        {
            context.Logger.LogInformation("Handle request: {0}", context.RequestId);

            // The bucket name. Create the bucket before running this function.
            string bucketName = "my-****";

            // The full path of the object to upload.
            string objectName = "exampledir/exampleobject.txt";

            // Use the internal endpoint of the region where the bucket resides.
            // 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 object.
            // These credentials are issued by the service-linked role configured for the function.
            ICredentials creds = context.Credentials;

            // Create an OssClient instance using the temporary credentials.
            OssClient ossClient =
                new OssClient(endpoint,
                    creds.AccessKeyId,
                    creds.AccessKeySecret,
                    creds.SecurityToken);

            // Upload the input stream as an object.
            ossClient.PutObject(bucketName, objectName, stream);

            // Retrieve the uploaded object and return its content.
            OssObject obj = ossClient.GetObject(bucketName, objectName);
            context.Logger.LogInformation("Put object to OSS success: {0}", obj.ToString());
            return obj.Content;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}