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 Creación y administración de 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 Lambda.

Para completar los pasos siguientes, necesitará un shell o un terminal de línea de comando para ejecutar los comandos. Los comandos y la salida esperada se enumeran en bloques separados:

aws --version

Debería ver los siguientes datos de salida:

aws-cli/2.0.57 Python/3.7.4 Darwin/19.6.0 exe/x86_64

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 shell y paquetes preferido. En Windows 10, puede instalar Windows Subsystem para Linux para obtener una versión de Ubuntu y Bash integrada con 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 AWS Identity and Access Management (IAM).

  2. Elija Create role.

  3. Cree un rol con las propiedades siguientes.

    • Trusted entity (Entidad de confianza): AWS Lambda.

    • Permissions (Permisos): AWSLambdaBasicExecutionRole.

    • Nombre de rol: lambda-url-role.

La política AWSLambdaBasicExecutionRole tiene permisos que la función necesita para escribir registros a Amazon CloudWatch Logs.

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.

Para 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.

    aws lambda create-function \ --function-name my-url-function \ --runtime nodejs14.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 -X POST \ '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: nodejs14.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: nodejs14.x AutoPublishAlias: live FunctionUrlConfig: AuthType: NONE

Limpiar los recursos de

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.

Para 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 Delete role (Eliminar rol).

  4. Elija Sí, eliminar.

Para eliminar la función de Lambda

  1. .Abra la página de Functions (Funciones) en la consola de Lambda.

  2. Seleccione la función que ha creado.

  3. Seleccione Actions (Acciones) y, a continuación, seleccione Delete (Eliminar).

  4. Elija Delete (Eliminar).