Tutorial: Creación de una función de Lambda de transmisión de respuesta con una URL de función - AWS Lambda

Tutorial: Creación de una función de Lambda de transmisión de respuesta con una URL de función

En este tutorial, se crea una función de Lambda definida como un archivo .zip con un punto de conexión de URL de función que devuelve una transmisión de respuesta. Para obtener más información acerca de la configuración de las URL de funciones, consulte URL de funciones.

Requisitos previos

En este tutorial, se presupone que tiene algunos conocimientos sobre las operaciones básicas de Lambda y la consola de Lambda. Si aún no lo ha hecho, siga las instrucciones de Cree una función de Lambda con la consola. para crear su primera función de Lambda.

Para completar los siguientes pasos, necesita la versión 2 de la AWS CLI. Los comandos y la salida esperada se enumeran en bloques separados:

aws --version

Debería ver los siguientes datos de salida:

aws-cli/2.13.27 Python/3.11.6 Linux/4.14.328-248.540.amzn2.x86_64 exe/x86_64.amzn.2

Para comandos largos, se utiliza un carácter de escape (\) para dividir un comando en varias líneas.

En Linux y macOS, use su administrador de intérprete de comandos y paquetes preferido.

nota

En Windows, algunos comandos de la CLI de Bash que se utilizan habitualmente con Lambda (por ejemplo, zip) no son compatibles con los terminales integrados del sistema operativo. Para obtener una versión de Ubuntu y Bash integrada con Windows, instale el subsistema de Windows para Linux. Los comandos de la CLI de ejemplo de esta guía utilizan el formato Linux. Los comandos que incluyen documentos JSON en línea deben reformatearse si utiliza la CLI de Windows.

Creación de un rol de ejecución

Cree el rol de ejecución que concederá a su función de Lambda permiso para obtener acceso a los recursos de AWS.

Para crear un rol de ejecución
  1. Abra la página de Roles de la consola de AWS Identity and Access Management (IAM).

  2. Elija Crear rol.

  3. Cree un rol con las propiedades siguientes:

    • Tipo de entidad de confianza: servicio de AWS

    • Caso de uso: Lambda

    • Permisos: AWSLambdaBasicExecutionRole

    • Role name (Nombre de rol): response-streaming-role

La política AWSLambdaBasicExecutionRole tiene permisos que la función necesita para escribir registros a Registros de Amazon CloudWatch. Después de crear el rol, anote su nombre de recurso de Amazon (ARN). Lo necesitará en el siguiente paso.

Crear una función de transmisión de respuestas (AWS CLI)

Cree una función de Lambda de transmisión de respuesta con un punto de conexión de URL de función mediante la AWS Command Line Interface (AWS CLI).

Para crear una función que pueda transmitir respuestas
  1. Copie el siguiente código de ejemplo en un archivo denominado index.mjs.

    import util from 'util'; import stream from 'stream'; const { Readable } = stream; const pipeline = util.promisify(stream.pipeline); /* global awslambda */ export const handler = awslambda.streamifyResponse(async (event, responseStream, _context) => { const requestStream = Readable.from(Buffer.from(JSON.stringify(event))); await pipeline(requestStream, responseStream); });
  2. Cree un paquete de implementación.

    zip function.zip index.mjs
  3. Cree una función de Lambda con el comando create-function. Reemplace el valor de --role por el ARN del rol del paso anterior.

    aws lambda create-function \ --function-name my-streaming-function \ --runtime nodejs16.x \ --zip-file fileb://function.zip \ --handler index.handler \ --role arn:aws:iam::123456789012:role/response-streaming-role
Para crear una URL de función
  1. Agregue una política basada en recursos a la función para habilitar el acceso a la URL de función. Reemplace el valor de --principal por su ID de Cuenta de AWS.

    aws lambda add-permission \ --function-name my-streaming-function \ --action lambda:InvokeFunctionUrl \ --statement-id 12345 \ --principal 123456789012 \ --function-url-auth-type AWS_IAM \ --statement-id url
  2. Cree un punto de conexión de la URL para la función con el comando create-function-url-config.

    aws lambda create-function-url-config \ --function-name my-streaming-function \ --auth-type AWS_IAM \ --invoke-mode RESPONSE_STREAM

Prueba del punto de conexión de la URL de función

Invoque la función para probar la integración. Puede abrir la URL de función en un navegador o puede usar curl.

curl --request GET "<function_url>" --user "<key:token>" --aws-sigv4 "aws:amz:us-east-1:lambda" --no-buffer

Nuestra URL de función utiliza el tipo de autenticación IAM_AUTH. Esto significa que debe firmar las solicitudes con las clave de acceso y clave secreta de AWS. En el comando anterior, reemplace <key:token> por el ID de clave de acceso de AWS. Ingrese su clave secreta de AWS cuando se le solicite. Si no tiene su clave secreta de AWS, puede utilizar credenciales de AWS temporales en su lugar.

Eliminación de sus recursos

A menos que desee conservar los recursos que creó para este tutorial, puede eliminarlos ahora. Si elimina los recursos de AWS que ya no utiliza, evitará gastos innecesarios en su Cuenta de AWS.

Cómo eliminar el rol de ejecución
  1. Abra la página Roles en la consola de IAM.

  2. Seleccione el rol de ejecución que creó.

  3. Elija Eliminar.

  4. Si desea continuar, escriba el nombre del rol en el campo de entrada de texto y elija Delete (Eliminar).

Cómo eliminar la función de Lambda
  1. Abra la página de Funciones en la consola de Lambda.

  2. Seleccione la función que ha creado.

  3. Elija Acciones, Eliminar.

  4. Escriba delete en el campo de entrada de texto y seleccione Delete (Eliminar).