Todos los productos
Search
Centro de documentos

Function Compute:Ejemplos de uso de capas públicas

Última actualización: Sep 06, 2026

Las capas públicas oficiales de Function Compute (FC) incluyen entornos de ejecución preconfigurados y dependencias comunes para los lenguajes de programación más populares. Asocie una capa a su función en lugar de empaquetar las dependencias dentro del archivo de código. A diferencia de las capas personalizadas, las capas públicas oficiales no requieren configurar el entorno, ya que los entornos de ejecución y las bibliotecas vienen preinstalados.

Razones para usar capas públicas oficiales:

  • Paquetes de despliegue más pequeños. Mantenga las dependencias fuera del archivo de código.

  • Cero configuración de entorno. Los entornos de ejecución y las bibliotecas estándar vienen preinstalados.

  • Reutilización entre funciones. Asocie la misma capa a cualquier función de su cuenta.

  • Actualizaciones independientes. Actualice el código de la función sin modificar sus dependencias.

Para consultar las versiones más recientes de las capas y sus instrucciones de uso, consulte awesome-layers.

Ejemplo 1: capturar imágenes de páginas web con Node.js 16 y Puppeteer

Puppeteer automatiza tareas del navegador mediante Chrome o Chromium. Entre estas tareas se encuentran la captura de imágenes, la generación de archivos PDF, el envío de formularios, la ejecución de pruebas de interfaz y la simulación de entrada por teclado. Se ejecuta como un navegador headless sobre Node.js.

En este ejemplo se crea una función que toma una imagen de página completa de cualquier URL y devuelve la imagen en formato PNG.

Steps overview: Cree una función de evento → Agregue el código de la función → Asocie la capa pública de Puppeteer → Pruebe la función.

Paso 1: cree una función de evento

En la página Create Function, establezca los parámetros a continuación y conserve los valores predeterminados para el resto. Para obtener más información, consulte Create an event function.

Parámetro

Valor

Function type

Event Function

Runtime

Node.js 16

Memory Capacity

1024 MB

Paso 2: agregue el código de la función

En la página de detalles de la función, haga clic en la pestaña Code. Reemplace el contenido de index.js con el siguiente código y, a continuación, haga clic en Deploy.

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

exports.handler = async (event, context, callback) => {
  console.log('Node version is: ' + process.version);

  try {
    const browser = await puppeteer.launch({
        headless: true,
        args: [
            '--disable-gpu',
            '--disable-dev-shm-usage',
            '--disable-setuid-sandbox',
            '--no-first-run',
            '--no-zygote',
            '--no-sandbox'
        ]
    });

    // 1. Read the target URL from the query string; fall back to the Serverless Devs homepage
    let url = 'https://www.serverless-devs.com';
    if (event.queryStringParameters && event.queryStringParameters.url) {
        url = event.queryStringParameters.url;
    }
    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 });

    // 2. Scroll the full page before taking the screenshot
    await autoScroll(page);

    // 3. Save a full-page PNG screenshot to /tmp/example
    let path = '/tmp/example';
    let contentType = 'image/png';
    await page.screenshot({ path: path, fullPage: true, type: 'png' });

    await browser.close();

    const screenshot = fs.readFileSync(path);

    // 4. Return the screenshot as a base64-encoded HTTP response body
    const response = {
        statusCode: 200,
        headers: {
            'Content-Type': contentType
        },
        body: screenshot.toString('base64'),
        isBase64Encoded: true
    };

    callback(null, response);
  } catch (err) {
    const errorResponse = {
        statusCode: 500,
        headers: {
            'Content-Type': 'text/plain'
        },
        body: err.message
    };
    callback(null, errorResponse);
  }
};

Paso 3: asocie la capa pública de Puppeteer

Asocie la capa pública oficial Puppeteer17x a su función. Para ver las instrucciones detalladas, consulte Configure common layers in the Function Compute console.

imagen

Paso 4: pruebe la función

Cree un disparador HTTP. En la columna Configurations del disparador, copie la URL de Internet Endpoint y péguela en un navegador. Para ver las instrucciones, consulte Create a trigger.

imagen

Se captura una imagen PNG de página completa del sitio web de Serverless Devs y se descarga automáticamente en su computadora local.

Ejemplo 2: ejecutar un entorno de ejecución personalizado de .NET 6 con capas públicas

Este ejemplo muestra cómo usar una capa pública oficial para ejecutar una función web de .NET 6 sin incluir el entorno de ejecución de .NET en el archivo de código.

Steps overview: Cree una función web → Pruebe la función.

Paso 1: cree una función web

En la página Create Function, configure los parámetros como se muestra a continuación y conserve los valores predeterminados para el resto. Para obtener más información, consulte Create a web function.

imagen

Una vez creada la función, abra el archivo de ejemplo Program.cs en WebIDE:

program.cs

El código de ejemplo define cuatro comportamientos clave:

  • ① El servidor escucha en 0.0.0.0:9000. Los servicios de entornos de ejecución personalizados deben escuchar en 0.0.0.0:CAPort o *:CAPort, y no en 127.0.0.1 ni en localhost. Para obtener más información, consulte Principles.

  • ② La ruta / devuelve la cadena "Hello World! ".

  • ③ La ruta /invoke gestiona las invocaciones de la función. Para obtener más información, consulte Web functions.

  • ④ La ruta /initialize se asigna al hook de ciclo de vida Initializer, que se ejecuta una sola vez durante el inicio de la instancia. Para obtener más información, consulte Lifecycle hooks for function instances.

Paso 2: pruebe la función

Probar la ruta raíz

En la columna Configurations del disparador, copie la URL de Internet Endpoint y péguela directamente en un navegador, sin agregar ningún sufijo de ruta. La respuesta se descarga automáticamente en su computadora local.

imagen

Probar las rutas invoke e initialize

Agregue /invoke o /initialize al endpoint público y envíe una solicitud POST:

curl -XPOST <public-endpoint>/invoke
curl -XPOST <public-endpoint>/initialize

La siguiente figura muestra el resultado de la ejecución.

imagen