全部产品
Search
文档中心

Function Compute:Konteks

更新时间:Jul 06, 2025

Topik ini menjelaskan konteks yang digunakan saat menulis kode dalam lingkungan runtime C# di Function Compute.

Apa itu konteks?

Saat Function Compute menjalankan fungsi Anda, sistem mengirimkan objek konteks ke metode yang digunakan untuk mengeksekusi fungsi tersebut. Objek konteks berisi informasi tentang pemanggilan, layanan, fungsi, dan lingkungan runtime. Tabel berikut menjelaskan bidang-bidang yang didukung oleh objek konteks.

Bidang

Deskripsi

RequestId

ID permintaan. Anda dapat mencatat ID permintaan ini dan menggunakannya untuk mendiagnosis kesalahan.

Fungsi

Informasi dasar tentang fungsi yang dipanggil, seperti nama, penanganan, memori, dan periode timeout.

Kredensial

Setelah Anda mengonfigurasi peran untuk suatu fungsi, Function Compute mendapatkan satu set kunci sementara melalui API AssumeRole. Kunci-kunci ini berlaku selama 36 jam. Anda dapat menggunakan Kredensial dalam kode Anda untuk mengakses layanan terkait seperti OSS. Dengan cara ini, Anda dapat mengakses layanan tanpa perlu menuliskan pasangan AccessKey Anda dalam kode fungsi. Untuk informasi lebih lanjut, lihat Berikan izin Function Compute untuk mengakses layanan Alibaba Cloud lainnya.

Logger

Logger yang dienkapsulasi oleh Function Compute.

Layanan

Informasi dasar tentang layanan yang dipanggil.

Anda dapat memanggil operasi API untuk mendapatkan informasi konteks. Contoh kode berikut menunjukkan cara mendefinisikan operasi API. Untuk informasi lebih lanjut, lihat IFcContext.

public interface IFcContext
{
    /// <summary>
    /// ID permintaan AliFc yang terkait dengan permintaan.
    /// Ini adalah ID yang sama yang dikembalikan ke klien yang memanggil invoke().
    /// ID ini digunakan kembali untuk percobaan ulang pada permintaan yang sama.
    /// </summary>
    string RequestId { get; }

    /// <summary>
    /// Mendapatkan antarmuka parameter fungsi.
    /// </summary>
    /// <value>Antarmuka parameter fungsi.</value>
    IFunctionParameter FunctionParam {get;}

    /// <summary>
    /// Logger AliFc yang terkait dengan objek Konteks.
    /// </summary>
    IFcLogger Logger { get; }

    /// <summary>
    /// Mendapatkan antarmuka kredensial.
    /// </summary>
    /// <value>Antarmuka kredensial.</value>
    ICredentials Credentials {get;}

    /// <summary>
    /// Mendapatkan pengenal akun.
    /// </summary>
    /// <value>Pengenal akun.</value>
    string AccountId { get; }

    /// <summary>
    /// Mendapatkan wilayah.
    /// </summary>
    /// <value>Wilayah.</value>
    string Region { get; }

    /// <summary>
    /// Mendapatkan meta layanan.
    /// </summary>
    /// <value>Meta layanan.</value>
    IServiceMeta ServiceMeta { get; }
}

Program contoh: Gunakan kunci sementara untuk mengakses OSS

Contoh program berikut menunjukkan cara menggunakan kunci sementara dalam konteks untuk mengunggah file ke OSS. Untuk informasi lebih lanjut, lihat 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("Menangani permintaan: {0}", context.RequestId);

            // Nama bucket. Anda harus membuat nama ini terlebih dahulu.
            string bucketName = "my-****";

            // Jalur objek.
            string objectName = "exampledir/exampleobject.txt";

            // Tentukan titik akhir wilayah tempat bucket berada. Kami merekomendasikan Anda menggunakan titik akhir internal. Dalam contoh ini, titik akhir internal https://oss-cn-hangzhou-internal.aliyuncs.com dari wilayah China (Hangzhou) digunakan.
            string endpoint = "https://oss-cn-hangzhou-internal.aliyuncs.com";

            // Dapatkan informasi kunci. Sebelum Anda mengeksekusi fungsi, pastikan bahwa layanan tempat fungsi tersebut termasuk telah dikonfigurasi dengan peran yang dilampirkan dengan kebijakan AliyunOSSFullAccess.
            // Kami merekomendasikan Anda menggunakan peran AliyunFCDefaultRole.
            ICredentials creds = context.Credentials;

            // Buat instance OSSClient.
            /*
            Pasangan AccessKey dari akun Alibaba Cloud dapat digunakan untuk mengakses semua operasi API. Menggunakan kredensial ini untuk melakukan operasi di Function Compute merupakan operasi berisiko tinggi. Kami merekomendasikan Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan pemeliharaan rutin.
            Kami merekomendasikan Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey ke kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya di akun Anda mungkin terganggu.
            Dalam contoh ini, pasangan AccessKey diperoleh dari konteks.
            */
            OssClient ossClient =
                new OssClient(endpoint,
                    creds.AccessKeyId,
                    creds.AccessKeySecret,
                    creds.SecurityToken);

            // Tentukan nama bucket seperti examplebucket dan jalur lengkap objek seperti exampledir/exampleobject.txt.
            ossClient
                .PutObject(bucketName,
                objectName,
                stream);

            OssObject obj = ossClient.GetObject(bucketName,objectName);
            context.Logger.LogInformation("Unggah objek ke oss berhasil: {0}", obj.ToString());
            return obj.Content;
        }
    }

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