View a markdown version of this page

Creación de funciones - Amazon CloudFront

Creación de funciones

La función se crea en dos etapas:

  1. Crear el código de función como JavaScript. Puede utilizar el ejemplo predeterminado de la consola de CloudFront o escribir el suyo propio. Para obtener más información, consulte los temas siguientes:

  2. Utilice CloudFront para crear la función e incluir el código. El código existe dentro de la función (no como referencia).

Console
Para crear una función
  1. Inicie sesión en la consola de CloudFront en https://console.aws.amazon.com/cloudfront/v4/home#/functions y elija la página Funciones.

  2. Seleccione Creación de función.

  3. Introduzca un nombre de función que sea único en la Cuenta de AWS, elija la versión de Java Script y, a continuación, elija Continuar. Aparece la página de detalles de la nueva función.

    nota

    Para utilizar pares clave-valor en la función, debe elegir tiempo de ejecución 2.0 de Java Script.

    Si encuentra un error TaggingConflict (HTTP 409) al crear una función con etiquetas, espere unos minutos y vuelva a intentarlo, o cree la función sin etiquetas inicialmente y agréguelas después.

  4. En la sección Código de función, seleccione la pestaña Compilación e introduzca el código de función. El código de ejemplo que se incluye en la pestaña Compilación ilustra la sintaxis básica del código de la función.

  5. Seleccione Save changes (Guardar cambios).

  6. Si el código de la función utiliza pares clave-valor, debe asociar un almacén de clave-valor.

    Puede asociar el almacén de clave-valor cuando crea en primer lugar la función. O bien, puede asociarlo más adelante, actualizando la función.

    Para asociar un almacén clave-valor ahora, siga estos pasos:

    • Vaya a la sección Asociar KeyValueStore y elija Asociar KeyValueStore existente.

    • Seleccione el almacén de clave-valor que contiene los pares clave-valor de la función y, a continuación, elija Asociar KeyValueStore.

    CloudFront asocia inmediatamente el almacén a la función. No necesita guardar la función.

CLI

Si utiliza la CLI, normalmente crea primero el código de la función en un archivo y, a continuación, crea la función con la AWS CLI.

Para crear una función
  1. Cree el código de la función en un archivo y guárdelo en un directorio al que se pueda conectar el equipo.

  2. Ejecute el comando como se muestra en el ejemplo. En este ejemplo, se utiliza la notación fileb:// para transmitir el archivo. También incluye saltos de línea para que el comando sea más legible.

    aws cloudfront create-function \ --name MaxAge \ --function-config '{"Comment":"Max Age 2 years","Runtime":"cloudfront-js-2.0","KeyValueStoreAssociations":{"Quantity":1,"Items":[{"KeyValueStoreARN":"arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"}]}}' \ --function-code fileb://function-max-age-v1.js
    Notas
    • Runtime: la versión de Java Script. Para utilizar pares clave-valor en la función, debe especificar la versión 2.0.

    • KeyValueStoreAssociations: si la función usa pares clave-valor, puede asociar el almacén de clave-valor en la creación inicial de la función. O bien, puede asociarlo más adelante, utilizando update-function. La Quantity siempre es 1, porque cada función solo puede tener asociado un almacén de clave-valor.

    Si el comando se ejecuta correctamente, verá un resultado parecido al siguiente.

    ETag: ETVABCEXAMPLE FunctionSummary: FunctionConfig: Comment: Max Age 2 years Runtime: cloudfront-js-2.0 KeyValueStoreAssociations= \ {Quantity=1, \ Items=[{KeyValueStoreARN='arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111'}]} \ FunctionMetadata: CreatedTime: '2021-04-18T20:38:56.915000+00:00' FunctionARN: arn:aws:cloudfront::111122223333:function/MaxAge LastModifiedTime: '2023-11-19T20:38:56.915000+00:00' Stage: DEVELOPMENT Name: MaxAge Status: UNPUBLISHED Location: https://cloudfront.amazonaws.com/2020-05-31/function/arn:aws:cloudfront:::function/MaxAge

    La mayor parte de la información se repite desde la solicitud. CloudFront agrega el resto de información.

    Notas
    • ETag: este valor cambia cada vez que se modifica el almacén de clave-valor. Utilice este valor y el nombre de la función para hacer referencia a la función en el futuro. Asegúrese de utilizar siempre la ETag actual.

    • FunctionARN: el ARN de la función CloudFront.

    • 111122223333: la Cuenta de AWS.

    • Stage: la fase de la función (LIVE o DEVELOPMENT).

    • Status: el estado de la función (PUBLISHED o UNPUBLISHED).

Después de crear la función, se agrega a la fase DEVELOPMENT. Le recomendamos que pruebe la función antes de publicarla. Tras publicar la función, la función cambia a la fase LIVE.

Error de TaggingConflict al crear funciones

CloudFront Functions reutilizan los ARN para funciones con el mismo nombre. Es posible que se produzca un error TaggingConflict (HTTP 409) al crear una función con etiquetas. Esto se puede producir en los siguientes escenarios:

  • Tras eliminar una función: volver a crear una función con el mismo nombre y etiquetas inmediatamente después de eliminarla.

  • Tras un intento de creación erróneo: si una solicitud de creación anterior produjo un error (por ejemplo, debido a parámetros no válidos, a una asociación KVS no válida o a una reversión errónea de la pila de CloudFormation).

Si recibe un error TaggingConflict, puede:

  • Esperar unos minutos e intentarlo de nuevo.

  • Usar un nombre de función diferente. Esto evita por completo el conflicto de reutilización del ARN.

  • Si la plantilla crea un KeyValueStore y una función que hace referencia a él, agregue un DependsOn explícito para asegurarse de que el KVS esté completamente aprovisionado antes de crear la función.