Modifique os cabeçalhos HTTP ao migrar de F5 para um Application Load Balancer na AWS - Recomendações da AWS

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

Criado por Sachin Trivedi (AWS)

Ambiente: PoC ou piloto

Origem: On-Premise

Destino: Nuvem AWS

Tipo R: redefinir a plataforma

Workload: todas as outras workloads

Tecnologias: rede; nuvem híbrida; migração

Serviços da AWS: Amazon CloudFront; Elastic Load Balancing (ELB); AWS Lambda

Resumo

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

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

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

Ferramentas

Serviços da AWS

  • Application Load Balancer ─  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 — 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 ─ 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

TarefaDescriçãoHabilidades 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.

Para criar uma distribuição usando o console, faça login no AWS Management Console, abra o CloudFront console e siga as etapas na CloudFront documentação.

Administrador de nuvem
TarefaDescriçãoHabilidades 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 CloudFront na documentação.) 

Para criar uma função Lambda@Edge:

  1. Faça login no Console de Gerenciamento da AWS e abra o console do AWS Lambda em https://console.aws.amazon.com/lambda/.

  2. Verifique se você está na região Leste dos EUA (Norte da Virgínia). CloudFront As plantas estão disponíveis somente nesta região.

  3. Escolha a opção Criar função.

  4. Escolha Usar um esquema e, em seguida, insira cloudfront no campo de pesquisa Esquemas

  5. Escolha o cloudfront-modify-response-headerblueprint e, em seguida, escolha Configurar.

  6. Na página Informações básicas, forneça as seguintes informações:

    1. Insira um nome de função.

    2. Em Função de execução, selecione Criar uma nova função de modelos de política da AWS.

    3. Associe o nome do perfil do AWS Identity and Access Management (IAM).

  7. Escolha a opção Criar função.

  8. Na seção Designer da página, escolha o nome da sua função.

  9. Na seção Código da função, substitua o código do modelo pelo código de amostra fornecido anteriormente nesse padrão, na seção Código.

  10. No código de exemplo, substitua xyz.com pelo nome de seu domínio.  

  11. Escolha Salvar.

Administrador da AWS
Implante a função do Lambda@Edge.

Siga as instruções na etapa 4 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

CloudFront documentação