

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Modifique os cabeçalhos HTTP ao migrar de F5 para um Application Load Balancer na AWS
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws"></a>

*Sachin Trivedi, Amazon Web Services*

## Resumo
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws-summary"></a>

Quando você migra um aplicativo que usa um balanceador de carga F5 para a Amazon Web Services (AWS) e deseja usar um Application Load Balancer na AWS, migrar regras F5 para modificações de cabeçalho é um problema comum. Um Application Load Balancer não suporta modificações de cabeçalhos, mas você pode usar a Amazon CloudFront como uma rede de distribuição de conteúdo (CDN) e o Lambda @Edge para modificar cabeçalhos.

Esse padrão descreve as integrações necessárias e fornece um exemplo de código para modificação do cabeçalho usando a AWS CloudFront e o Lambda @Edge.

## Pré-requisitos e limitações
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws-prereqs"></a>

**Pré-requisitos **
+ Um aplicativo on-premises que usa um balanceador de carga F5 com uma configuração que substitui o valor do cabeçalho HTTP usando `if, else`. Para obter mais informações sobre essa configuração, consulte [HTTP::header](https://clouddocs.f5.com/api/irules/HTTP__header.html) na documentação do produto F5. 

**Limitações**
+ Esse padrão se aplica à personalização do cabeçalho do balanceador de carga F5. Para outros balanceadores de carga de terceiros, confira a documentação do balanceador de carga para obter informações de suporte.
+ As funções do Lambda que você usa no Lambda@Edge devem estar na região Leste dos EUA (Norte da Virgínia).

## Arquitetura
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws-architecture"></a>

O diagrama a seguir mostra a arquitetura na AWS, incluindo o fluxo de integração entre a CDN e outros componentes da AWS.

![Arquitetura para modificação de cabeçalho usando Amazon CloudFront e Lambda @Edge](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/00abbe3c-2453-4291-9b24-b488dced4868/images/4ee9a19e-6da2-4c5a-a8bc-19d3918a166e.png)


## Ferramentas
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws-tools"></a>

**Serviços da AWS**
+ [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) ─  Um Application Load Balancer é um serviço de balanceamento de carga totalmente gerenciado pela AWS que funciona na sétima camada do modelo Open Systems Interconnection (OSI). Ele equilibra o tráfego em vários destinos e oferece suporte a solicitações de roteamento avançado com base em cabeçalhos e métodos HTTP, strings de consulta e roteamento baseado em host ou em caminho.
+ [Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) — CloudFront A Amazon é um serviço web que acelera a distribuição de seu conteúdo web estático e dinâmico, como .html, .css, .js e arquivos de imagem, para seus usuários. CloudFront entrega seu conteúdo por meio de uma rede mundial de data centers chamados de pontos de presença para menor latência e melhor desempenho.
+ O [Lambda @Edge](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html) ─ Lambda @Edge é uma extensão do AWS Lambda que permite executar funções para personalizar o conteúdo que é entregue. CloudFront Você pode criar funções na região Leste dos EUA (Norte da Virgínia) e depois associar a função a uma CloudFront distribuição para replicar automaticamente seu código em todo o mundo, sem provisionar ou gerenciar servidores. Isso reduz a latência e melhora a experiência do usuário.

**Código **

O código de exemplo a seguir fornece um plano para modificar os cabeçalhos de CloudFront resposta. Siga as instruções na seção *Épicos* para implantar o código.

```
exports.handler = async (event, context) => {
    const response = event.Records[0].cf.response;
    const headers = response.headers;


    const headerNameSrc = 'content-security-policy';
    const headerNameValue = '*.xyz.com';


    if (headers[headerNameSrc.toLowerCase()]) {
        headers[headerNameSrc.toLowerCase()] = [{
            key: headerNameSrc,
            value: headerNameValue,
        }];
        console.log(`Response header "${headerNameSrc}" was set to ` +
                    `"${headers[headerNameSrc.toLowerCase()][0].value}"`);
    }
    else {
            headers[headerNameSrc.toLowerCase()] = [{
            key: headerNameSrc,
            value: headerNameValue,
            }];
    }
    return response;
};
```

## Épicos
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws-epics"></a>

### Criar uma distribuição CDN
<a name="create-a-cdn-distribution"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma distribuição CloudFront na web.  | Nesta etapa, você cria uma CloudFront distribuição para informar de CloudFront onde deseja que o conteúdo seja entregue e os detalhes sobre como rastrear e gerenciar a entrega de conteúdo.<br />Para criar uma distribuição usando o console, faça login no AWS Management Console, abra o [CloudFront console](https://console.aws.amazon.com/cloudfront/v3/home) e siga as etapas na [CloudFront documentação](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-creating-console.html). | Administrador de nuvem | 

### Criar e implantar as funções do Lambda@Edge
<a name="create-and-deploy-the-lambda-edge-function"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie e implante uma função do Lambda@Edge. | Você pode criar uma função Lambda @Edge usando um esquema para modificar CloudFront cabeçalhos de resposta. (Outros BluePrints estão disponíveis para diferentes casos de uso; para obter mais informações, consulte [exemplos de funções do Lambda @Edge](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-examples.html) CloudFront na documentação.) <br />Para criar uma função Lambda@Edge:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws.html) | Administrador da AWS | 
| Implante a função do Lambda@Edge. | Siga as instruções na [etapa 4](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-edge-how-it-works-tutorial.html#lambda-edge-how-it-works-tutorial-add-trigger) do *tutorial: Criação de uma função simples do Lambda @Edge* na CloudFront documentação da Amazon para configurar o CloudFront gatilho e implantar a função. | Administrador da AWS | 

## Recursos relacionados
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws-resources"></a>

**CloudFront documentação**
+ [Comportamento de solicitações e respostas para origens personalizadas](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html) 
+ [Trabalhar com distribuições](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-working-with.html) 
+ [Funções de exemplo do Lambda@Edge](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-examples.html) 
+ [Personalizar o conteúdo na borda com o Lambda@Edge](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html)
+ [Tutorial: criação de uma função do Lambda@Edge simples](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-edge-how-it-works-tutorial.html)