日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

上下文

本文介紹在函數(shù)計算中使用C#運(yùn)行時開發(fā)代碼時,所涉及的Context(上下文)的相關(guān)概念和使用示例。

什么是上下文

當(dāng)函數(shù)計算運(yùn)行您的函數(shù)時,會將上下文對象傳遞到執(zhí)行方法中。該對象包含有關(guān)調(diào)用、服務(wù)、函數(shù)、鏈路追蹤和執(zhí)行環(huán)境等信息。事件請求處理程序(Event Handler)HTTP請求處理程序(HTTP Handler)都支持上下文對象作為其傳入?yún)?shù),且格式和內(nèi)容相同。上下文對象主要提供了以下字段。

字段

說明

RequestId

本次調(diào)用請求的ID。您可以記錄該ID,出現(xiàn)問題時方便查詢。

Function

當(dāng)前調(diào)用函數(shù)的基本信息,例如函數(shù)名、請求處理程序、函數(shù)內(nèi)存和超時時間等。

Credentials

函數(shù)計算服務(wù)通過扮演服務(wù)角色而獲取的一組臨時密鑰,其有效時間是36小時。您可以在代碼中使用Credentials去訪問相應(yīng)的服務(wù)例如OSS,這就避免了您把自己的AccessKey信息編碼在函數(shù)代碼里。詳細(xì)信息,請參見授予函數(shù)計算訪問其他云服務(wù)的權(quán)限

Logger

函數(shù)計算封裝過的Logger。

Service

當(dāng)前調(diào)用的服務(wù)的一些基本信息。

OpenTracing

鏈路追蹤的相關(guān)信息。更多信息,請參見鏈路追蹤簡介

您可以通過接口獲取上下文信息,接口定義如下。更多信息,請參見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; }
}

示例程序:使用臨時密鑰訪問OSS

該示例演示如何使用上下文中的臨時密鑰向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);

            // Bucket名稱, 需要預(yù)先創(chuàng)建。
            string bucketName = "my-****";

            // Object路徑。
            string objectName = "exampledir/exampleobject.txt";

            // Endpoint必須填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint,推薦使用內(nèi)網(wǎng)訪問地址。以華東1(杭州)為例,內(nèi)網(wǎng)訪問Endpoint為https://oss-cn-hangzhou-internal.aliyuncs.com。
            string endpoint = "https://oss-cn-hangzhou-internal.aliyuncs.com";

            // 獲取密鑰信息,執(zhí)行前,確保函數(shù)所在的服務(wù)已配置角色信息,且為該角色授予AliyunOSSFullAccess權(quán)限。
            // 建議直接使用AliyunFCDefaultRole角色。
            ICredentials creds = context.Credentials;

            // 創(chuàng)建OSSClient實(shí)例。
            /*
            阿里云賬號AccessKey擁有所有API的訪問權(quán)限,建議您使用RAM用戶進(jìn)行API訪問或日常運(yùn)維。
            建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號下所有資源的安全。
            本示例以從上下文中獲取AccessKey/AccessSecretKey為例。
            */
            OssClient ossClient =
                new OssClient(endpoint,
                    creds.AccessKeyId,
                    creds.AccessKeySecret,
                    creds.SecurityToken);

            // 依次填寫B(tài)ucket名稱(例如examplebucket)和Object完整路徑(例如exampledir/exampleobject.txt)。
            ossClient
                .PutObject(bucketName,
                objectName,
                stream);

            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!");
        }
    }
}