

# Tutorial: Criar uma função simples com o CloudFront Functions
<a name="functions-tutorial"></a>

Este tutorial mostra como começar a usar o CloudFront Functions. É possível criar uma função simples que redirecione o visualizador para um URL diferente e também exiba um cabeçalho de resposta personalizado.

**Contents**
+ [Pré-requisitos](#functions-tutorial-prerequisites)
+ [Criar a função](#functions-tutorial-create)
+ [Verificar a função](#functions-tutorial-verify)

## Pré-requisitos
<a name="functions-tutorial-prerequisites"></a>

Para usar o CloudFront Functions, você precisa de uma distribuição do CloudFront. Se você não tiver uma, consulte [Conceitos básicos de uma distribuição padrão do CloudFront](GettingStarted.SimpleDistribution.md).

## Criar a função
<a name="functions-tutorial-create"></a>

É possível usar o console do CloudFront para criar uma função simples que redirecione o visualizador para um URL diferente e também exiba um cabeçalho de resposta personalizado. 

**Como criar uma função do CloudFront**

1. Faça login no Console de gerenciamento da AWS e abra o console do CloudFront em [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home).

1. No painel de navegação, escolha **Funções** e selecione **Criar função**. 

1. Na página **Create function** (Criar função), em **Name** (Nome), insira um nome de função, como *MyFunctionName*.

1. (Opcional) Em **Description** (Descrição), insira uma descrição para a função, como **Simple test function**.

1. Em **Runtime**, mantenha a versão padrão selecionada do JavaScript.

1. Escolha **Criar Função**.

1. Copie o código da função a seguir. Esse código de função redireciona o visualizador para uma URL diferente e também retorna um cabeçalho de resposta personalizado.

   ```
   function handler(event) {
       // NOTE: This example function is for a viewer request event trigger. 
       // Choose viewer request for event trigger when you associate this function with a distribution. 
       var response = {
           statusCode: 302,
           statusDescription: 'Found',
           headers: {
               'cloudfront-functions': { value: 'generated-by-CloudFront-Functions' },
               'location': { value: 'https://aws.amazon.com/cloudfront/' }
           }
       };
       return response;
   }
   ```

1. Em **Function code** (Código da função), cole o código no editor para substituir o código padrão.

1. Escolha **Salvar alterações**.

1. (Opcional) É possível testar a função antes de publicá-la. Este tutorial não descreve como testar uma função. Para obter mais informações, consulte [Testar funções](test-function.md).

1. Escolha a guia **Publish** (Publicar) e, em seguida, escolha **Publish function** (Publicar função). Você *deve* publicar a função antes de associá-la à sua distribuição do CloudFront.

1. Em seguida, é possível associar a função a uma distribuição ou comportamento de cache. Na página *MyFunctionName*, selecione a guia **Publish** (Publicar). 
**Atenção**  
Nas etapas a seguir, selecione uma distribuição ou um comportamento de cache que seja usado para testes. Não associe essa função de demonstração a um comportamento de distribuição ou cache usado na produção.

1. Escolha **Add association**. 

1. Na caixa de diálogo **Associate** (Associar), escolha uma distribuição e/ou um comportamento de cache. Em **Event type** (Tipo de evento), mantenha o valor padrão.

1. Escolha **Add association**.

   A tabela **Distribuições associadas** mostra a distribuição associada. 

1. Aguarde alguns minutos para que a distribuição associada termine a implantação. Para conferir o status da distribuição, selecione a distribuição na tabela **Associated distributions** (Distribuições associadas) e escolha **View distribution** (Visualizar distribuição).

   Quando o status da distribuição for **Deployed** (Implantado), você estará pronto para verificar se a função funciona.

## Verificar a função
<a name="functions-tutorial-verify"></a>

Depois de implantar a função, você pode verificar se ela está funcionando para a distribuição.

**Como verificar a função**

1. No navegador da Web, acesse o nome de domínio da distribuição (por exemplo, `https://d111111abcdef8.cloudfront.net`).

   A função retorna um redirecionamento para o navegador, de modo que o navegador vai automaticamente para `https://aws.amazon.com/cloudfront/`.

1. Em uma janela de linha de comando, é possível usar uma ferramenta, como **curl**, para enviar uma solicitação ao nome de domínio da distribuição.

   ```
   curl -v https://d111111abcdef8.cloudfront.net/
   ```

   Na resposta, você verá a resposta de redirecionamento (`302 Found`) e os cabeçalhos de resposta personalizados que a função adicionou. O resultado deve ser semelhante ao seguinte.  
**Example**  

   ```
   curl -v https://d111111abcdef8.cloudfront.net/
   > GET / HTTP/1.1
   > Host: d111111abcdef8.cloudfront.net
   > User-Agent: curl/7.64.1
   > Accept: */*
   >
   < HTTP/1.1 302 Found
   < Server: CloudFront
   < Date: Tue, 16 Mar 2021 18:50:48 GMT
   < Content-Length: 0
   < Connection: keep-alive
   < Location: https://aws.amazon.com/cloudfront/
   < Cloudfront-Functions: generated-by-CloudFront-Functions
   < X-Cache: FunctionGeneratedResponse from cloudfront
   < Via: 1.1 3035b31bddaf14eded329f8d22cf188c.cloudfront.net (CloudFront)
   < X-Amz-Cf-Pop: PHX50-C2
   < X-Amz-Cf-Id: ULZdIz6j43uGBlXyob_JctF9x7CCbwpNniiMlmNbmwzH1YWP9FsEHg==
   ```