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

上下文

本文介紹在函數計算中使用Java運行時開發代碼時,所涉及的Context(上下文)的相關概念和使用示例。

什么是上下文

函數計算運行您的函數時,會將上下文對象傳遞到執行方法中。該對象包含有關調用、服務、函數、鏈路追蹤和執行環境等信息。事件請求處理程序(Event Handler)HTTP請求處理程序(HTTP Handler)都支持上下文對象作為其傳入參數,且格式和內容相同。上下文對象主要提供了以下參數。

字段說明
RequestId本次調用請求的ID。您可以記錄下該ID,當出現問題時方便查詢。
Function當前調用的函數的一些基本信息,例如函數名、函數入口、函數內存和超時時間。
Credentials

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

Logger函數計算封裝過的logger。
Service當前調用的服務的一些基本信息。
OpenTracing鏈路追蹤的相關信息,具體信息,請參見鏈路追蹤簡介

接口定義如下。

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

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

該示例演示了如何使用上下文中的臨時密鑰向OSS中上傳一個文件,詳細代碼,請參見java11-oss

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 {

        // Bucket名稱, 需要預先創建。
        String bucketName = "my-bucket";
        // Endpoint必須填寫Bucket所在地域對應的Endpoint,推薦使用內網訪問地址。以華東1(杭州)為例,內網訪問Endpoint為https://oss-cn-hangzhou-internal.aliyuncs.com。
        String endpoint = "https://oss-cn-hangzhou-internal.aliyuncs.com";

        // 獲取密鑰信息,執行前,確保函數所在的服務配置了角色信息,并且角色需要擁有AliyunOSSFullAccess權限。
        // 建議直接使用AliyunFCDefaultRole角色。
        Credentials creds = context.getExecutionCredentials();

        // 創建OSSClient實例。
        /*
        阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。
        建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
        本示例以從上下文中獲取AccessKey/AccessSecretKey為例。
        */
        OSS ossClient = new OSSClientBuilder().build(endpoint, creds.getAccessKeyId(), creds.getAccessKeySecret(), creds.getSecurityToken());

        // 填寫Byte數組。
        byte[] content = "Hello FC".getBytes();
        // 依次填寫Bucket名稱(例如examplebucket)和Object完整路徑(例如exampledir/exampleobject.txt)。Object完整路徑中不能包含Bucket名稱。
        ossClient.putObject(bucketName, "exampledir/exampleobject.txt", new ByteArrayInputStream(content));

        // 關閉OSSClient。
        ossClient.shutdown();

        outputStream.write(new String("done").getBytes());
    }
}