

# Criar funções
<a name="create-function"></a>

Você deve criar uma função 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 obter mais informações, consulte os tópicos a seguir.
   + [Escrever código de função](writing-function-code.md)
   + [Estrutura de eventos do CloudFront Functions](functions-event-structure.md)
   + [Exemplos do CloudFront Functions para o CloudFront](service_code_examples_cloudfront_functions_examples.md)

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

------
#### [ Console ]

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

1. Faça login no console do CloudFront em [https://console.aws.amazon.com/cloudfront/v4/home#/functions](https://console.aws.amazon.com/cloudfront/v4/home#/functions) e selecione a página **Funções**.

1. Escolha a opção **Criar função**.

1. Insira um nome de função exclusivo na Conta da AWS, selecione a versão do JavaScript e escolha **Continuar**. A página de detalhes da nova função é exibida.
**nota**  
Para usar [pares de chave-valor](kvs-with-functions.md) na função, será necessário selecionar JavaScript runtime 2.0.

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

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

1. Se o código da função usar pares de chave–valor, será necessário associar um armazenamento de valores de chave. 

   É possível associar o armazenamento de chave-valor durante a criação inicial da função. Ou é possível associá-lo posteriormente, [atualizando a função](update-function.md). 

   Para associar um armazenamento de chave-valor agora, siga estas etapas:
   + Acesse a seção **Associar KeyValueStore** e selecione **Associar KeyValueStore existente**.
   + Selecione o armazenamento de chave-valor que contém os pares de chave-valor na função e escolha **Associar KeyValueStore**.

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

------
#### [ CLI ]

Se você usa a CLI, normalmente primeiro cria o código da função em um arquivo e, depois, cria a função com a AWS CLI.

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

1. Crie o código da funçã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-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
   ```
**Observações**  
`Runtime`: a versão do JavaScript. Para usar [pares de chave-valor](kvs-with-functions.md) na função, é necessário especificar a versão 2.0.
`KeyValueStoreAssociations`: se a função usar pares de chave-valor, será possível associar o armazenamento de chave-valor durante a criação inicial da função. Ou é possível associá-lo posteriormente, usando `update-function`. A `Quantity` é sempre `1` porque cada função pode ter apenas um armazenamento de chave-valor associado a ela.

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

   ```
   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
   ```

   A maioria das informações é repetida a partir da solicitação. Outras informações são adicionadas pelo CloudFront.
**Observações**  
`ETag`: esse valor muda sempre que você modifica o armazenamento de valores de chave. Use esse valor e o nome da função para referenciar a função futuramente. Sempre use a `ETag` atual.
`FunctionARN`: o ARN da função do CloudFront.
111122223333: a Conta da AWS.
`Stage`: o estágio da função (`LIVE` ou `DEVELOPMENT`). 
`Status`: o status da função (`PUBLISHED` ou `UNPUBLISHED`).

------

Depois de criar a função, ela é adicionada ao estágio `DEVELOPMENT`. Recomendamos [testar sua função](test-function.md) antes de [publicá-la](publish-function.md). Depois de publicar a função, ela muda para o estágio `LIVE`.