Creación y administración de URL de funciones de Lambda - AWS Lambda

Creación y administración de URL de funciones de Lambda

Una URL de función es un punto de conexión HTTP(S) dedicado para la función de Lambda. Puede crear y configurar una URL de función a través de la consola de Lambda o la API de Lambda. Al crear una URL de función, Lambda genera automáticamente un punto de conexión de URL único para usted. Una vez que crea una URL de función, el punto de conexión de la URL nunca cambia. Los puntos de conexión de la URL de función tienen el siguiente formato:

https://<url-id>.lambda-url.<region>.on.aws
nota

Las URL de función no se admiten en las siguientes regiones: Asia-Pacífico (Hyderabad) (ap-south-2), Asia-Pacífico (Melbourne) (ap-southeast-4), Oeste de Canadá (Calgary) (ca-west-1) Europa (España) (eu-south-2), Europa (Zúrich) (eu-central-2), Israel (Tel Aviv) (il-central-1) y Medio Oriente (Emiratos Árabes Unidos) (me-central-1).

Las URL de funciones están habilitadas para doble pila y son compatibles con IPv4 e IPv6. Después de configurar una URL de función para su función, puede invocar la función a través de su punto de conexión HTTP(S) mediante un navegador web, curl, Postman o cualquier cliente HTTP.

nota

Puede acceder a la URL de la función solo a través de la Internet pública. Si bien las funciones de Lambda son compatibles con AWS PrivateLink, las URL de las funciones no lo son.

Las URL de funciones de Lambda utilizan políticas basadas en recursos para la seguridad y el control de acceso. Las URL de funciones también admiten opciones de configuración de uso compartido de recursos entre orígenes (CORS).

Puede aplicar las URL de las funciones a cualquier alias de la función o a la versión $LATEST de la función no publicada. No se puede agregar una URL de función a ninguna otra versión de la función.

La siguiente sección muestra cómo crear y administrar una URL de función mediante la consola de Lambda, la AWS CLI y la plantilla de AWS CloudFormation.

Creación de una URL de función (consola)

Siga estos pasos para crear una URL de función mediante la consola.

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

  2. Elija el nombre de la función para la que desea crear la URL de función.

  3. Elija la pestaña Configuration (Configuración) y, a continuación, elija Function URL (URL de función).

  4. Elija Create function URL (Crear URL de función).

  5. Para el Auth type (Tipo de autenticación), elija AWS_IAM o NONE (NINGUNO). Para obtener más información sobre la autenticación de URL de función, consulte Control de acceso.

  6. (Opcional) Seleccione Configure cross-origin resource sharing (CORS) (Configuración de uso compartido de recursos entre orígenes [CORS]) y, a continuación, configure los ajustes de CORS para la URL de función. Para obtener más información acerca de CORS, consulte Uso compartido de recursos entre orígenes (CORS).

  7. Seleccione Guardar.

Esto crea una URL de función para la versión $LATEST no publicada de la función. La URL de función aparece en la sección Function overview (Información general de la función) de la consola.

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

  2. Elija el nombre de la función con el alias para el que desea crear la URL de función.

  3. Elija la pestaña Aliases (Alias) y, a continuación, elija el nombre del alias para el que desea crear la URL de función.

  4. Elija la pestaña Configuration (Configuración) y, a continuación, elija URL de función (URL de función).

  5. Elija Create function URL (Crear URL de función).

  6. Para el Auth type (Tipo de autenticación), elija AWS_IAM o NONE (NINGUNO). Para obtener más información sobre la autenticación de URL de función, consulte Control de acceso.

  7. (Opcional) Seleccione Configure cross-origin resource sharing (CORS) (Configuración de uso compartido de recursos entre orígenes [CORS]) y, a continuación, configure los ajustes de CORS para la URL de función. Para obtener más información acerca de CORS, consulte Uso compartido de recursos entre orígenes (CORS).

  8. Seleccione Guardar.

Esto crea una URL de función para el alias de la función. La URL de función aparece en la sección Información general de la función para su alias.

Para crear una nueva función con una URL de función (consola)
  1. Abra la página de Functions (Funciones) en la consola de Lambda.

  2. Elija Create function (Crear función).

  3. Bajo Basic information (Información básica), haga lo siguiente:

    1. En Function name (Nombre de la función), ingrese un nombre para la función, como my-function.

    2. En Runtime (Tiempo de ejecución), elija el tiempo de ejecución del lenguaje que prefiera, como Node.js 18.x.

    3. En Architecture (Arquitectura), elija x86_64 o arm64.

    4. Expanda Permissions (Permisos) y, a continuación, elija si desea crear un nuevo rol de ejecución o utilizar uno existente.

  4. Expanda Advanced settings (Configuración avanzada) y, a continuación, seleccione Function URL (URL de función).

  5. Para el Auth type (Tipo de autenticación), elija AWS_IAM o NONE (NINGUNO). Para obtener más información sobre la autenticación de URL de función, consulte Control de acceso.

  6. (Opcional) Seleccione Configure cross-origin resource sharing (CORS) (Configuración de uso compartido de recursos entre orígenes [CORS]). Al seleccionar esta opción durante la creación de la función, la URL de función permite solicitudes de todos los orígenes de forma predeterminada. Puede editar la configuración de CORS de la URL de función después de crear la función. Para obtener más información acerca de CORS, consulte Uso compartido de recursos entre orígenes (CORS).

  7. Elija Crear función.

Esto crea una nueva función con una URL de función para la versión $LATEST no publicada de la función. La URL de función aparece en la sección Function overview (Información general de la función) de la consola.

Creación de una URL de función (AWS CLI)

Para crear una URL de función para una función de Lambda existente mediante la AWS Command Line Interface (AWS CLI), ejecute el siguiente comando:

aws lambda create-function-url-config \ --function-name my-function \ --qualifier prod \ // optional --auth-type AWS_IAM --cors-config {AllowOrigins="https://example.com"} // optional

Esto añade una URL de función al calificador prod para la función my-function. Para obtener más información acerca de estos parámetros de configuración, consulte CreateFunctionUrlConfig en la referencia de la API.

nota

Para crear una URL de función mediante la AWS CLI, la función ya debe existir.

Adición de una URL de función a una plantilla de CloudFormation

Para agregar un recurso de AWS::Lambda::Url a su plantilla de AWS CloudFormation, utilice la siguiente sintaxis:

JSON

{ "Type" : "AWS::Lambda::Url", "Properties" : { "AuthType" : String, "Cors" : Cors, "Qualifier" : String, "TargetFunctionArn" : String } }

YAML

Type: AWS::Lambda::Url Properties: AuthType: String Cors: Cors Qualifier: String TargetFunctionArn: String

Parámetros

  • (Obligatorio) AuthType: define el tipo de autenticación de la URL de función. Los valores posibles son AWS_IAM o NONE. Para restringir el acceso solo a los usuarios autenticados, establézcalo en AWS_IAM. Para omitir la autenticación de IAM y permitir que cualquier usuario realice solicitudes a su función, establézcalo en NONE.

  • (Opcional) Cors: define la configuración de CORS para la URL de función. Para agregar Cors al recurso de AWS::Lambda::Url en CloudFormation, utilice la siguiente sintaxis.

    ejemplo AWS::Lambda::Url.Cors (JSON)
    { "AllowCredentials" : Boolean, "AllowHeaders" : [ String, ... ], "AllowMethods" : [ String, ... ], "AllowOrigins" : [ String, ... ], "ExposeHeaders" : [ String, ... ], "MaxAge" : Integer }
    ejemplo AWS::Lambda::Url.Cors (YAML)
    AllowCredentials: Boolean AllowHeaders: - String AllowMethods: - String AllowOrigins: - String ExposeHeaders: - String MaxAge: Integer
  • (Opcional) Qualifier: el nombre del alias.

  • (Obligatorio) TargetFunctionArn: el nombre o nombre de recurso de Amazon (ARN) de la función de Lambda. Los formatos de nombre válidos incluyen los siguientes:

    • Nombre de la función: my-function.

    • ARN de la función: arn:aws:lambda:us-west-2:123456789012:function:my-function.

    • ARN parcial: 123456789012:function:my-function.

Uso compartido de recursos entre orígenes (CORS)

Para definir cómo los distintos orígenes pueden acceder a la URL de función, utilice el uso compartido de recursos entre orígenes (CORS). Recomendamos configurar CORS si tiene la intención de llamar a la URL de función desde otro dominio. Lambda es compatible con los siguientes encabezados CORS para las URL de funciones.

Encabezado CORS Propiedad de configuración de CORS Valores de ejemplo

Access-Control-Allow-Origin

AllowOrigins

* (permitir todos los orígenes)

https://www.example.com

http://localhost:60905

Access-Control-Allow-Methods

AllowMethods

GET, POST, DELETE, *

Access-Control-Allow-Headers

AllowHeaders

Date, Keep-Alive, X-Custom-Header

Access-Control-Expose-Headers

ExposeHeaders

Date, Keep-Alive, X-Custom-Header

Access-Control-Allow-Credentials

AllowCredentials

TRUE

Access-Control-Max-Age

MaxAge

5 (predeterminado), 300

Al configurar CORS para una URL de función mediante la consola de Lambda o la AWS CLI, Lambda agrega automáticamente los encabezados CORS a todas las respuestas a través de la URL de función. También puede agregar manualmente encabezados CORS a la respuesta de la función. Si hay encabezados conflictivos, prevalecen los encabezados CORS configurados en la URL de función.

URL de funciones de limitación

La limitación limita la velocidad a la que la función procesa las solicitudes. Esto resulta útil en muchas situaciones, como evitar que la función sobrecargue los recursos descendentes o gestionar un aumento repentino de las solicitudes.

Puede limitar la tasa de solicitudes que procesa la función de Lambda a través de una URL de función configurando la simultaneidad reservada. La simultaneidad reservada limita el número de invocaciones simultáneas máximas para la función. La tasa máxima de solicitudes por segundo (RPS) de la función equivale a 10 veces la simultaneidad reservada configurada. Por ejemplo, si configura la función con una simultaneidad reservada de 100, el RPS máximo es de 1000.

Cada vez que la simultaneidad de la función supera la simultaneidad reservada, la URL de función devuelve un código de estado HTTP 429. Si la función recibe una solicitud que supera 10 veces el máximo de RPS en función de la simultaneidad reservada configurada, también recibirá un error HTTP 429. Para obtener más información acerca de la simultaneidad reservada, consulte Configurar la simultaneidad reservada para una función.

Desactivación de URL de funciones

En caso de emergencia, es posible que quiera rechazar todo el tráfico a la URL de función. Para desactivar la URL de función, establezca la simultaneidad reservada en cero. Esto limita todas las solicitudes a la URL de función, lo que da como resultado respuestas de estado HTTP 429. Para reactivar la URL de función, elimine la configuración de simultaneidad reservada o establezca la configuración en un importe superior a cero.

Eliminación de URL de función

Al eliminar una URL de función, no se la puede recuperar. La creación de una nueva URL de función dará como resultado una dirección URL diferente.

nota

Si elimina una URL de función con el tipo de autenticación NONE, Lambda no elimina de forma automática la política basada en recursos asociada. Si desea eliminar esta política, debe hacerlo de forma manual.

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

  2. Elija el nombre de la función.

  3. Elija la pestaña Configuration (Configuración) y, a continuación, elija Function URL (URL de función).

  4. Elija Eliminar.

  5. Escriba la palabra delete (eliminar) en el campo para confirmar la eliminación.

  6. Elija Eliminar.

nota

Al eliminar una función que tiene una URL de función, Lambda la elimina de forma asíncrona. Si crea inmediatamente una función nueva con el mismo nombre en la misma cuenta, es posible que la URL de la función original se asigne a la nueva función en lugar de eliminarse.