

# Atualizar funções
<a name="update-function"></a>

É possível atualizar uma função a qualquer momento. As alterações são feitas somente na versão da função que está no estágio `DEVELOPMENT`. Para copiar as atualizações do estágio `DEVELOPMENT` em `LIVE`, é necessário [publicar a função](publish-function.md). 

É possível atualizar o código de uma função no console do CloudFront ou com a AWS Command Line Interface (AWS CLI).

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

**Como atualizar um código de função**

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**.

   Escolha a função a ser atualizada.

1. Escolha **Editar** e faça as seguintes alterações:
   + Atualize todos os campos na seção **Detalhes**.
   + Altere ou remova o armazenamento de valores de chave associado. Para obter mais informações sobre armazenamentos de chave-valor, consulte [Amazon CloudFront KeyValueStore](kvs-with-functions.md).
   + Altere o código da função. Selecione a guia **Criar**, faça alterações e, depois, escolha **Salvar alterações** para salvar as alterações no código.

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

**Para atualizar o código da função**

1. Abra a janela de linha de comando.

1. Execute o comando a seguir.

   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 update-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 \
       --if-match ETVABCEXAMPLE
   ```
**Observações**  
É possível identificar a função pelo nome e pela ETag (no parâmetro `if-match`). Use a ETag atual. Você pode obter esse valor com a operação de API [DescribeApplication](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_DescribeFunction.html).
É necessário incluir o `function-code`, mesmo que não deseje alterá-lo.
Tenha cuidado com a `function-config`. É necessário transmitir tudo o que deseja manter na configuração. Especificamente, trate o armazenamento de chave-valor da seguinte forma:   
Para reter a associação do armazenamento de valores de chave existente (se houver), especifique o nome do armazenamento *existente*.
Para alterar a associação, especifique o nome do *novo* armazenamento de valores de chave.
Para remover a associação, omita o parâmetro `KeyValueStoreAssociations`. 

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

   ```
   ETag: ETVXYZEXAMPLE
   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-12-19T23:41:15.389000+00:00' \
       Stage: DEVELOPMENT \
     Name: MaxAge \
     Status: UNPUBLISHED
   ```

------

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.
`FunctionARN`: o ARN da função do CloudFront.
`Stage`: o estágio da função (`LIVE` ou `DEVELOPMENT`). 
`Status`: o status da função (`PUBLISHED` ou `UNPUBLISHED`).