

# Crie funções de conexão do CloudFront para validação de TLS mútua (visualizador)
<a name="create-connection-functions"></a>

A função de conexão do CloudFront é criada em dois estágios:

1. Crie o código da função como JavaScript. É possível usar o exemplo padrão do console do CloudFront ou crie seu próprio. Para saber mais, consulte os seguintes tópicos:
   + Escrever o código da função de conexão do CloudFront para validação de mTLS
   + Estrutura de eventos e formato de resposta da função de conexão do CloudFront
   + Exemplo de código de função de conexão

1. Use o CloudFront para criar a função de conexão e incluir o código. O código existe dentro da função (não como referência).

**Topics**
+ [Console do CloudFront](#create-connection-function-console)
+ [AWS CLI](#create-connection-function-cli)

## Console do CloudFront
<a name="create-connection-function-console"></a>

**Como criar uma função de conexão**

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. Escolha a opção **Criar função**.

1. Insira um nome de função que seja exclusivo dentro da Conta da AWS, escolha **Função de conexão** como o tipo de função e selecione **Continuar**.

1. A página de detalhes da nova função de conexão é exibida.
**nota**  
É possível usar funções de conexão somente com o Runtime 2.0 do JavaScript. Para usar a integração entre o KeyValueStore e a função de conexão do CloudFront na função, é necessário usar essa versão de runtime.

1. Na seção **Código da função**, selecione a guia **Compilar** e insira o código da função de conexão. O exemplo de código incluído na guia “Compilar” ilustra a sintaxe básica do código da função de conexão.

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

1. Se o código da função de conexão usar KeyValueStore para verificação de revogação de certificados ou validação de dispositivos, será necessário associar um KeyValueStore.

   É possível associar o KeyValueStore durante a criação inicial da função. Ou é possível associá-lo posteriormente, associando funções de conexão.

   Para associar um KeyValueStore agora, siga estas etapas:
   + Acesse a seção **Associar KeyValueStore** e selecione **Associar KeyValueStore existente**.
   + Selecione o KeyValueStore que contém os dados do certificado para sua função de conexão e escolha **Associar KeyValueStore**.

   O CloudFront associa imediatamente o armazenamento à função. Não é necessário salvar a função.

## AWS CLI
<a name="create-connection-function-cli"></a>

Quando usamos a CLI, costumamos primeiro criar o código da função em um arquivo e, depois, criar a função com a AWS CLI.

**Como criar uma função de conexão**

1. Crie o código da função de conexão em um arquivo e armazene-o em um diretório ao qual o computador possa se conectar.

1. Execute o comando conforme mostrado no exemplo. Este exemplo usa a notação `fileb://` para transmitir o arquivo. Ele também inclui quebras de linha para tornar o comando mais legível.

   ```
   aws cloudfront create-connection-function \
       --name CertificateValidator \
       --connection-function-config '{
           "Comment":"Device certificate validation",
           "Runtime":"cloudfront-js-2.0",
           "KeyValueStoreAssociations":{
               "Quantity":1,
               "Items":[{
                   "KeyValueStoreARN":"arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
               }]
           }
       }' \
       --connection-function-code fileb://certificate-validator.js
   ```
**nota**  
**Runtime**: as funções de conexão são compatíveis somente com o Runtime 2.0 do JavaScript (cloudfront-js-2.0).
**KeyValueStoreAssociations**: se a função de conexão usar o KeyValueStore para validação de certificados, será possível associar o KeyValueStore durante a criação inicial da função. Ou é possível associá-lo posteriormente, usando update-connection-function. A quantidade é sempre 1 porque cada função de conexão pode ter apenas um KeyValueStore associado a ela.

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

   ```
   ETag: ETVABCEXAMPLE
   ConnectionFunctionSummary:
     ConnectionFunctionConfig:
       Comment: Device certificate validation
       Runtime: cloudfront-js-2.0
       KeyValueStoreAssociations:
         Quantity: 1
         Items:
           - KeyValueStoreARN: arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111
     ConnectionFunctionMetadata:
       CreatedTime: '2024-09-04T16:32:54.292000+00:00'
       ConnectionFunctionARN: arn:aws:cloudfront::111122223333:connection-function/CertificateValidator
       LastModifiedTime: '2024-09-04T16:32:54.292000+00:00'
       Stage: DEVELOPMENT
     Name: CertificateValidator
     Status: UNPUBLISHED
   Location: https://cloudfront.amazonaws.com/2020-05-31/connection-function/arn:aws:cloudfront:::connection-function/CertificateValidator
   ```

   A maioria das informações é repetida a partir da solicitação. Outras informações são adicionadas pelo CloudFront.
**nota**  
**ETag**: esse valor muda sempre que a função de conexão é modificada. Esse valor é necessário para atualizar ou publicar a função.
**Estágio**: as novas funções de conexão começam no estágio DESENVOLVIMENTO. Antes de associar a função a uma distribuição, é necessário publicá-la para movê-la para o estágio ATIVO.
**Status**: o status da função se mantém como NÃO PUBLICADA até que ela seja publicada no estágio ATIVO.