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
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
-
Abra la página de Roles
de la consola de AWS Identity and Access Management (IAM). -
Elija Crear rol.
-
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
-
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); });
-
Cree un paquete de implementación.
zip function.zip index.mjs
-
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 \ --rolearn:aws:iam::123456789012:role/response-streaming-role
Para crear una URL de función
-
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 -
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
-
Abra la página Roles
en la consola de IAM. -
Seleccione el rol de ejecución que creó.
-
Elija Eliminar.
-
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
-
Abra la página de Funciones
en la consola de Lambda. -
Seleccione la función que ha creado.
-
Elija Acciones, Eliminar.
-
Escriba
delete
en el campo de entrada de texto y seleccione Delete (Eliminar).