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

官方公共層使用示例

本文介紹使用官方公共層的典型示例。

使用說明

關于官方公共層的最新版本和使用說明,請參見awesome-layers。

示例一:基于Node.js 16和Puppeteer實現網頁截圖示例程序

Puppeteer是一個Node.js庫,提供高級的API并通過DevTools協議來控制Chrome(或Chromium)。通俗來講,Puppeteer是一個headless Chrome瀏覽器,支持實現很多自動化流程,例如網頁截圖或PDF生成、表單的自動提交、UI自動化測試、鍵盤輸入模擬等。

本示例使用Puppeteer完成一個網頁截圖示例程序。

  1. 選擇使用內置運行時創建方式創建函數。

    具體操作,請參見創建函數。在創建函數頁面,設置以下配置項,其余配置項保持默認值即可。

    • 請求處理程序類型選擇處理HTTP請求。

    • 運行環境選擇Node.js 16。

    • 內存規格選擇1 GB。

  2. 在函數詳情頁面,單擊函數代碼頁簽,編輯index.js文件中的函數代碼,然后單擊部署代碼。

    代碼示例如下。

    const fs = require('fs');
    const puppeteer = require('puppeteer');
    
    function autoScroll(page) {
      return page.evaluate(() => {
          return new Promise((resolve, reject) => {
              var totalHeight = 0;
              var distance = 100;
              var timer = setInterval(() => {
                  var scrollHeight = document.body.scrollHeight;
                  window.scrollBy(0, distance);
                  totalHeight += distance;
                  if (totalHeight >= scrollHeight) {
                      clearInterval(timer);
                      resolve();
                  }
              }, 100);
          })
      });
    }
    
    module.exports.handler = function (request, response, context) {
      console.log('Node version is: ' + process.version);
      (async () => {
        const browser = await puppeteer.launch({
          headless: true,
          args: [
            '--disable-gpu',
            '--disable-dev-shm-usage',
            '--disable-setuid-sandbox',
            '--no-first-run',
            '--no-zygote',
            '--no-sandbox'
          ]
        });
    
        let url = request.queries['url'];
    
        if (!url) {
          url = 'https://www.serverless-devs.com';
        }
    
        if (!url.startsWith('https://') && !url.startsWith('http://')) {
          url = 'http://' + url;
        }
    
        const page = await browser.newPage();
    
        await page.emulateTimezone('Asia/Shanghai');
        await page.goto(url, {
          'waitUntil': 'networkidle2'
        });
        await page.setViewport({
          width: 1200,
          height: 800
        });
        await autoScroll(page)
    
        let path = '/tmp/example';
        let contentType = 'image/png';
        await page.screenshot({ path: path, fullPage: true, type: 'png' });
        await browser.close();
    
        response.setStatusCode(200);
        response.setHeader('content-type', contentType);
        response.send(fs.readFileSync(path))
      })().catch(err => {
        response.setStatusCode(500);
        response.setHeader('content-type', 'text/plain');
    
        response.send(err.message);
      });
    };

    上述示例代碼解析如下。首先解析query參數獲取需要截圖的URL地址(如果解析失敗則默認使用Serverless Devs官網主頁),然后使用Puppeteer對該網頁進行截圖,并保存到運行實例的/tmp/example文件夾中,最后將該路徑作為HTTP請求的返回體直接返回。

  3. 為函數配置Puppeteer公共層。

    具體操作,請參見通過控制臺配置官方公共層。選擇官方公共層Puppeteer17x。puppeteer17x

    重要

    如果您使用的運行環境非Node.js 16,需添加環境變量。具體操作,請參見Nodejs-Puppeteer17x README

  4. 在函數詳情頁面,單擊觸發器管理(URL)頁簽,在觸發器配置信息列查看測試地址,然后單擊該測試地址,下載配置腳本,執行腳本后可以在瀏覽器中使用該測試地址進行測試。

    test-URLdownload-script

    重要

    使用測試地址測試前,請單擊該測試地址,然后在測試域名使用方式面板,下載適用您本地操作系統的配置腳本并執行腳本。

    測試結果如下所示,已成功將Serverless Devs官網進行截圖。Web-screenshot-test-results

示例二:基于公共層快速實現.NET 6自定義運行時

  1. 選擇使用自定義運行時創建方式創建函數。

    具體操作,請參見創建函數。在創建函數頁面,設置以下配置項,其余配置項保持默認值即可。

    • 請求處理程序類型選擇處理HTTP請求

    • 運行環境選擇.NET 6.0。

    創建完成后,您可以在Web IDE界面查看示例代碼Program.cs。program.cs

    • ①:該示例監聽了0.0.0.0的9000端口。Custom Runtime啟動的服務一定要監聽0.0.0.0:CAPort*:CAPort端口,不能監聽127.0.0.1localhost。更多信息,請參見Custom Runtime基本原理

    • ②:添加路由/,直接返回字符串"Hello World!"。

    • ③:添加路由/invoke,該路由為使用事件請求處理程序的路徑。更多信息,請參見事件請求處理程序(Event Handler)。

    • ④:添加路由/initialize,該路由為函數初始化回調程序對應的路徑。該回調程序的方法會在示例初始化時執行一次。更多信息,請參見函數實例生命周期回調。

  2. 測試函數。

    重要

    使用測試地址測試前,請單擊該測試地址,然后在測試域名使用方式面板,下載適用您本地操作系統的配置腳本并執行腳本。

    1. 適用觸發器管理(URL)頁簽中的測試地址進行測試。此時,不添加任何PATH信息。

      執行結果如下所示。result1

    2. 添加/invoke路徑進行測試。該路由方法為POST,支持直接使用curl -XPOST命令測試。

      執行結果如下所示。result2

    3. 添加/initialize路徑進行測試。

      執行結果如下所示。result3

      說明

      請先在函數配置頁面的實例生命周期回調區域,配置Initializer 回調程序。初始化回調函數不需要主動調用,函數計算平臺會在實例啟動后自動調用該回調方法。