Testar funções - Amazon CloudFront

Testar funções

Antes de implantar a função no estágio ativo (produção), é possível testar a função para verificar se ela funciona conforme o esperado. Para testar uma função, especifique um objeto de evento que represente uma solicitação ou uma resposta HTTP que a distribuição do CloudFront pode receber em produção.

O CloudFront Functions faz o seguinte:

  1. Executa a função usando o objeto de evento fornecido como entrada.

  2. Retorna o resultado da função (o objeto de evento modificado), bem como os logs de função ou as mensagens de erro e a utilização de computação da função. Para obter mais informações sobre as métricas de utilização de computação, consulte Noções básicas de utilização de computação.

Configurar o objeto de evento

Antes de testar uma função, é necessário configurar o objeto de evento com o qual testá-la. Há várias opções.

Opção 1: configurar um objeto de evento sem salvá-lo

É possível configurar um objeto de evento no editor visual no console do CloudFront e não salvá-lo.

É possível usar esse objeto de evento para testar a função no console do CloudFront, mesmo que ele não esteja salvo.

Opção 2: criar um objeto de evento no editor visual

É possível configurar um objeto de evento no editor visual no console do CloudFront e não salvá-lo. É possível criar dez objetos de evento para cada função para poder, por exemplo, testar diferentes entradas possíveis.

Ao criar o objeto de evento dessa forma, é possível usar o objeto de evento para testar a função no console do CloudFront. Não é possível usá-lo para testar a função usando uma API ou um SDK da AWS.

Opção 3: criar um objeto de evento usando um editor de texto

É possível usar um editor de texto para criar um objeto de evento no formato JSON. Para obter informações sobre a estrutura de um objeto de evento, consulte Estrutura de eventos.

É possível usar esse objeto de evento para testar a função usando a CLI. Mas não é possível usá-lo para testar a função no console do CloudFront.

Como criar um objeto de evento (opção 1 ou 2)
  1. Faça login no console do CloudFront em https://console.aws.amazon.com/cloudfront/v4/home#/functions e selecione a página Funções.

    Escolha a função que você deseja testar.

  2. Na página de detalhes da função, selecione a guia Testar.

  3. Em Tipo de evento, selecione uma das seguintes opções:

    • Selecione Solicitação do visualizador se a função modificar uma solicitação HTTP ou gerar uma resposta com base na solicitação. A seção Solicitação é exibida.

    • Selecione Resposta do visualizador. As seções Solicitação e Resposta são exibidas.

  4. Preencha todos os campos a serem incluídos no evento. É possível selecionar Editar JSON para visualizar o JSON bruto.

  5. (Opcional) Para salvar o evento, escolha Salvar e, em Salvar evento de teste, insira um nome e escolha Salvar.

    Também é possível selecionar Editar JSON, copiar o JSON bruto e salvá-lo no próprio arquivo, fora do CloudFront.

Como criar um objeto de evento (opção 3)

Crie o objeto de evento usando um editor de texto. Armazene o arquivo em um diretório ao qual o computador possa se conectar.

Siga estas diretrizes:

  • Omita os campos distributionDomainName, distributionId e requestId.

  • Os nomes de cabeçalhos, os cookies e as strings de consulta devem estar em letras minúsculas.

Uma opção para criar um objeto de evento dessa forma é criar um exemplo usando o editor visual. O exemplo deve estar formatado corretamente. Depois, copie o JSON bruto, cole-o em um editor de texto e salve o arquivo.

Para ter mais informações sobre a estrutura de um evento, consulte Estrutura de eventos.

Testar a função

Você pode testar uma função no console do CloudFront ou com a AWS Command Line Interface (AWS CLI).

Console
Para testar a função
  1. Faça login no console do CloudFront em https://console.aws.amazon.com/cloudfront/v4/home#/functions e selecione a página Funções.

  2. Escolha a função que você deseja testar.

  3. Selecione a guia Testar.

  4. Verifique se o evento correto é exibido. Para sair do evento exibido no momento, selecione outro evento no campo Selecionar evento de teste.

  5. Escolha Testar função. O console mostra a saída da função, incluindo os logs da função e a utilização de computação.

CLI

É possível testar uma função usando o comando aws cloudfront test-function.

Para testar a função
  1. Abra a janela de linha de comando.

  2. Execute o comando a seguir no diretório que contém o arquivo especificado.

    Este exemplo usa a notação fileb:// para transmitir o arquivo de objeto de evento. Ele também inclui quebras de linha para tornar o comando mais legível.

    aws cloudfront test-function \ --name MaxAge \ --if-match ETVABCEXAMPLE \ --event-object fileb://event-maxage-test01.json \ --stage DEVELOPMENT
    Observações
    • Você faz referência à função pelo nome e pela ETag (no parâmetro if-match). Você faz referência ao objeto de evento pela localização no sistema de arquivos.

    • O estágio pode ser DEVELOPMENT ou LIVE.

    Quando o comando é bem-sucedido, a saída é semelhante à seguinte:

    TestResult: ComputeUtilization: '21' FunctionErrorMessage: '' FunctionExecutionLogs: [] FunctionOutput: '{"response":{"headers":{"cloudfront-functions":{"value":"generated-by-CloudFront-Functions"},"location":{"value":"https://aws.amazon.com/cloudfront/"}},"statusDescription":"Found","cookies":{},"statusCode":302}}' FunctionSummary: FunctionConfig: Comment: MaxAge function 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-17-20T10:38:57.057000+00:00' Stage: DEVELOPMENT Name: MaxAge Status: UNPUBLISHED
Observações
  • FunctionExecutionLogs contém uma lista de linhas de log que a função escreveu em instruções console.log() (se houver).

  • ComputeUtilization contém informações sobre como executar a função. Consulte Noções básicas de utilização de computação.

  • O FunctionOutput contém o objeto de evento que a função retornou.

Noções básicas de utilização de computação

Compute utilization (Utilização de computação) é a quantidade de tempo que a função levou para ser executada como uma porcentagem do tempo máximo permitido. Por exemplo, um valor de 35 significa que a função foi concluída em 35% do tempo máximo permitido.

Se uma função exceder continuamente o tempo máximo permitido, o CloudFront limitará a função. A lista a seguir explica a probabilidade de uma função ser limitada com base no valor de utilização da computação.

Valor de utilização de computação:

  • De 1 a 50: a função está confortavelmente abaixo do tempo máximo permitido e deve funcionar sem controle de utilização.

  • De 51 a 70: a função está próxima do tempo máximo permitido. É aconselhável otimizar o código da função.

  • De 71 a 100: a função está muito próxima ou excede o tempo máximo permitido. É provável que o CloudFront restrinja essa função se você a associar a uma distribuição.