

# Escrever e criar uma função do Lambda@Edge
<a name="lambda-edge-create-function"></a>

Para usar o Lambda@Edge, você *escreve* o código da função do AWS Lambda. Para ajudar você a escrever funções do Lambda@Edge, consulte os seguintes recursos:
+  [Estrutura de eventos do Lambda@Edge](lambda-event-structure.md): entenda a estrutura de eventos a ser usada com o Lambda@Edge.
+ [Funções de exemplo do Lambda@Edge](lambda-examples.md): funções de exemplo, como testes A/B e geração de um redirecionamento HTTP.

O modelo de programação para usar o Node.js com o Lambda@Edge é o mesmo que para usar o Lambda em uma Região da AWS. Consulte mais informações em [Criar funções do Lambda com Node.js](https://docs.aws.amazon.com/lambda/latest/dg/lambda-nodejs.html) ou em [Criar funções do Lambda com Python](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html) no *Guia do desenvolvedor do AWS Lambda*.

Na função do Lambda@Edge, inclua o parâmetro `callback` e retorne o objeto aplicável para eventos de solicitação ou resposta:
+ **Eventos de solicitação**: inclua o objeto `cf.request` na resposta.

  Se você estiver gerando uma resposta, inclua o objeto `cf.response` na resposta. Para obter mais informações, consulte [Gerar respostas de HTTP em acionadores da solicitação](lambda-generating-http-responses.md#lambda-generating-http-responses-in-requests). 
+ **Eventos de resposta**: inclua o objeto `cf.response` na resposta.

Depois de escrever seu próprio código ou usar um dos exemplos, você cria a função no Lambda. Para criar uma função ou editar uma existente, consulte os seguintes tópicos:

**Topics**
+ [Criar uma função do Lambda@Edge](lambda-edge-create-in-lambda-console.md)
+ [Editar uma função do Lambda](lambda-edge-edit-function.md)

 Depois de criar a função no Lambda, você configura o Lambda para executar a função com base em eventos específicos do CloudFront, chamados *acionadores*. Para obter mais informações, consulte [Adicionar acionadores para uma função do Lambda@Edge](lambda-edge-add-triggers.md).

# Criar uma função do Lambda@Edge
<a name="lambda-edge-create-in-lambda-console"></a>

Para configurar o AWS Lambda para executar funções do Lambda baseadas em eventos do CloudFront, siga este procedimento.<a name="lambda-edge-create-function-procedure"></a>

**Para criar uma função Lambda@Edge**

1. Faça login no Console de gerenciamento da AWS e abra o console AWS Lambda em [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Se você já tiver uma ou mais funções do Lambda, escolha **Create function (Criar função)**.

   Se você não tiver nenhuma função, escolha **Get Started Now**.

1. Na lista Region (Região) na parte superior da página, escolha **US East (N. Virginia) (Leste dos EUA (Norte da Virgínia))**.

1. Crie uma função usando seu próprio código ou crie uma função começando com um esquema do CloudFront.
   + Para criar uma função usando seu próprio código, escolha **Author from scratch**. 
   + Para exibir uma lista de esquemas do CloudFront, insira **cloudfront** no campo de filtro e selecione **Enter**.

     Se você encontrar um esquema que deseja usar, selecione o nome dele.

1. Na seção **Basic information**, especifique os seguintes valores:

   1. **Nome**: insira um nome para a função.

   1. **Função**: para começar rapidamente, escolha **Criar função com base em modelo(s)**. Também é possível selecionar **Escolher uma função existente** ou **Criar uma função personalizada** e siga as instruções para concluir as informações dessa seção.

   1. **Nome da função**: insira um nome para a função.

   1. **Modelos de política**: escolha **Permissões básicas do Edge Lambda**.

1. Se você escolheu **Author from scratch** na etapa 4, vá para a etapa 7.

   Se você escolheu um esquema na etapa 4, a seção **cloudfront** permitirá que você crie um trigger, que associa essa função a um cache em uma distribuição do CloudFront e a um evento do CloudFront. Recomendamos que você escolha **Remove (Remover)** nesse momento, para que não haja um trigger para a função quando ela for criada. Você poderá adicionar gatilhos mais tarde. 
**dica**  
Recomendamos que você teste e depure a função antes de adicionar acionadores. Se você adicionar um acionador agora, a função será executada assim que for criada e concluirá a replicação para locais da AWS em todo o mundo, e a distribuição correspondente será implantada.

1. Escolha **Create function**.

   O Lambda cria duas versões da sua função: \$1LATEST e Versão 1. Você pode editar apenas a versão \$1LATEST, mas o console inicialmente exibirá a Versão 1.

1. Para editar a função, escolha **Version 1** na parte superior da página, sob o ARN da função. Na guia **Versions**, escolha **\$1LATEST**. (Se você deixou a função e depois retornou a ela, o título do botão será **Qualifiers**.)

1. Na guia **Configuration**, escolha o **Code entry type** aplicável. Em seguida, siga as instruções para editar ou fazer upload do seu código.

1. Em **Runtime**, escolha o valor com base no código da função.

1. Na seção **Tags**, adicione todas as tags aplicáveis.

1. Escolha **Actions** e, em seguida, **Publish new version**.

1. Insira uma descrição para a nova versão da função.

1. Escolha **Publish**.

1. Teste e depure a função. Consulte mais informações sobre como testar no console do Lambda em [Invocar a função do Lambda usando o console](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html#get-started-invoke-manually) no *Guia do desenvolvedor do AWS Lambda*.

1. Quando você estiver pronto para que a função seja executada em eventos do CloudFront, publique outra versão e edite-a para adicionar triggers. Para obter mais informações, consulte [Adicionar acionadores para uma função do Lambda@Edge](lambda-edge-add-triggers.md).

# Editar uma função do Lambda
<a name="lambda-edge-edit-function"></a>

Depois de criar uma função do Lambda@Edge, você pode usar o console do Lambda para editá-la.

**Observações**  
A versão original é identificada como \$1 LATEST.
Você só pode editar a versão \$1LATEST.
Cada vez que você editar a versão \$1LATEST, deverá publicar uma nova versão numerada.
Você não pode criar triggers para \$1LATEST.
Ao publicar uma nova versão de uma função, o Lambda não copiará automaticamente os triggers da versão anterior para a nova versão. Você deve reproduzir os triggers para a nova versão. 
Quando você adiciona um trigger de um evento do CloudFront a uma função, se já houver um trigger para a mesma distribuição, comportamento de cache e evento para uma versão anterior da mesma função, o Lambda excluirá o trigger da versão anterior.
Depois de fazer atualizações em uma distribuição do CloudFront, como a adição de triggers, você precisará aguardar a propagação das alterações para os pontos de presença para que as funções especificadas nos triggers funcionem.<a name="lambda-edge-edit-function-procedure"></a>

**Para editar uma função do Lambda**

1. Faça login no Console de gerenciamento da AWS e abra o console AWS Lambda em [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Na lista Region (Região) na parte superior da página, escolha **US East (N. Virginia) (Leste dos EUA (Norte da Virgínia))**.

1. Na lista de funções, selecione o nome da função.

   Por padrão, o console exibirá a versão \$1LATEST. Você pode visualizar versões anteriores (escolha **Qualifiers**), mas só poderá editar \$1LATEST.

1. Na guia **Code (Código)**, em **Code entry type (Tipo de entrada de código)**, escolha editar o código no navegador, fazer upload de um arquivo .zip ou fazer upload de um arquivo do Amazon S3.

1. Selecione **Save** ou **Save and test**.

1. Escolha **Actions** e **Publish new version**. 

1. Na caixa de diálogo **Publish new version from \$1LATEST**, insira uma descrição da nova versão. Essa descrição aparece na lista de versões, junto com um número de versão gerado automaticamente. 

1. Escolha **Publish**.

   A nova versão se torna automaticamente a versão mais recente. O número da versão aparece em **Versão** no canto superior esquerdo da página.
**nota**  
Se ainda não tiver adicionado acionadores para a função, consulte [Adicionar acionadores para uma função do Lambda@Edge](lambda-edge-add-triggers.md). 

1. Selecione a guia **Triggers**.

1. Escolha **Add trigger**.

1. Na caixa de diálogo **Add trigger (Adicionar trigger)**, selecione a caixa pontilhada e escolha **CloudFront**.
**nota**  
Se você já tiver criado um ou mais triggers para uma função, o CloudFront será o serviço padrão.

1. Especifique os seguintes valores para indicar quando você deseja que a função Lambda seja executada.

   1. **ID da distribuição**: escolha o ID da distribuição à qual você deseja adicionar o acionador.

   1. **Comportamento de cache**: escolha o comportamento de cache que especifica os objetos nos quais você deseja executar a função.

   1. **Evento do CloudFront**: escolha o evento do CloudFront que faz com que a função seja executada.

   1. **Ativar o trigger e replicar**: marque essa caixa de seleção para que o Lambda replique a função para Regiões da AWS globalmente.

1. Selecione **Enviar**.

1. Para adicionar mais triggers a essa função, repita as etapas de 10 a 13.

Consulte mais informações sobre como testar e depurar a função no console do Lambda em [Invocar a função do Lambda usando o console](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html#get-started-invoke-manually) no *Guia do desenvolvedor do AWS Lambda*.

Quando você estiver pronto para que a função seja executada em eventos do CloudFront, publique outra versão e edite-a para adicionar triggers. Para obter mais informações, consulte [Adicionar acionadores para uma função do Lambda@Edge](lambda-edge-add-triggers.md).