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

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. 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. En Tipo de entidad de confianza, seleccione Servicio de AWS; a continuación, en Caso de uso, seleccione Lambda.

  4. Elija Siguiente.

  5. En el panel Políticas de permisos, ingrese AWSLambdaBasicExecutionRole en el cuadro de búsqueda.

  6. Seleccione la casilla que se encuentra junto a la política administrada por AWS AWSLambdaBasicExecutionRole y después seleccione Siguiente.

  7. 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
  1. Abra la página de Roles de la consola de AWS Identity and Access Management (IAM).

  2. Seleccione el rol que acaba de crear (lambda-url-role).

  3. 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
  1. 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; };
  2. Cree un paquete de implementación.

    zip function.zip index.js
  3. 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
  4. 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
  5. 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
  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).