Tutorial: Creación de una función de Lambda 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 la URL de función pública que devuelve el producto de dos números. 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.
-
En Tipo de entidad de confianza, seleccione Servicio de AWS; a continuación, en Caso de uso, seleccione Lambda.
-
Elija Siguiente.
-
En el panel Políticas de permisos, ingrese
AWSLambdaBasicExecutionRole
en el cuadro de búsqueda. -
Seleccione la casilla que se encuentra junto a la política administrada por AWS
AWSLambdaBasicExecutionRole
y después seleccione Siguiente. -
Ingrese
lambda-url-role
en Nombre de rol y, a continuación, seleccione Crear rol.
La política AWSLambdaBasicExecutionRole
tiene permisos que la función necesita para escribir registros en Registros de Amazon CloudWatch. Más adelante en el tutorial, necesitará el Nombre de recurso de Amazon (ARN) del rol para crear la función de Lambda.
Para buscar el ARN del rol de ejecución
-
Abra la página de Roles
de la consola de AWS Identity and Access Management (IAM). -
Seleccione el rol que acaba de crear (
lambda-url-role
). -
En el panel Resumen, copie el ARN.
Creación de una función de Lambda con una URL de función (archivo .zip)
Cree una función de Lambda con un punto de conexión de la URL de función mediante un archivo .zip.
Cómo crear la función
-
Copie el siguiente código de ejemplo en un archivo denominado
index.js
.ejemplo index.js
exports.handler = async (event) => { let body = JSON.parse(event.body); const product = body.num1 * body.num2; const response = { statusCode: 200, body: "The product of " + body.num1 + " and " + body.num2 + " is " + product, }; return response; };
-
Cree un paquete de implementación.
zip function.zip index.js
-
Cree una función de Lambda con el comando
create-function
. Asegúrese de reemplazar el ARN del rol por el ARN de su propio rol de ejecución que copió anteriormente en el tutorial.aws lambda create-function \ --function-name my-url-function \ --runtime nodejs18.x \ --zip-file fileb://function.zip \ --handler index.handler \ --role
arn:aws:iam::123456789012:role/lambda-url-role
-
Agregue una política basada en recursos a la función que otorgue permisos para habilitar el acceso público a la URL de la función.
aws lambda add-permission \ --function-name my-url-function \ --action lambda:InvokeFunctionUrl \ --principal "*" \ --function-url-auth-type "NONE" \ --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-url-function \ --auth-type NONE
Prueba del punto de conexión de la URL de función
Invoque la función de Lambda llamando al punto de conexión de la URL de función mediante un cliente HTTP como curl o Postman.
curl
'https://abcdefg.lambda-url.us-east-1.on.aws/'
\ -H 'Content-Type: application/json' \ -d '{"num1": "10", "num2": "10"}'
Debería ver los siguientes datos de salida:
The product of 10 and 10 is 100
Creación de una función de Lambda con una URL de función (CloudFormation)
También puede crear una función de Lambda con un punto de conexión de la URL de función mediante el tipo de AWS CloudFormation AWS::Lambda::Url
.
Resources: MyUrlFunction: Type: AWS::Lambda::Function Properties: Handler: index.handler Runtime: nodejs18.x Role: arn:aws:iam::123456789012:role/lambda-url-role Code: ZipFile: | exports.handler = async (event) => { let body = JSON.parse(event.body); const product = body.num1 * body.num2; const response = { statusCode: 200, body: "The product of " + body.num1 + " and " + body.num2 + " is " + product, }; return response; }; Description: Create a function with a URL. MyUrlFunctionPermissions: Type: AWS::Lambda::Permission Properties: FunctionName: !Ref MyUrlFunction Action: lambda:InvokeFunctionUrl Principal: "*" FunctionUrlAuthType: NONE MyFunctionUrl: Type: AWS::Lambda::Url Properties: TargetFunctionArn: !Ref MyUrlFunction AuthType: NONE
Creación de una función de Lambda con una URL de función (AWS SAM)
También puede crear una función de Lambda configurada con una URL de función mediante AWS Serverless Application Model (AWS SAM).
ProductFunction: Type: AWS::Serverless::Function Properties: CodeUri: function/. Handler: index.handler Runtime: nodejs18.x AutoPublishAlias: live FunctionUrlConfig: AuthType: NONE
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).