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::headerna 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](images/pattern-img/00abbe3c-2453-4291-9b24-b488dced4868/images/4ee9a19e-6da2-4c5a-a8bc-19d3918a166e.png)
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
Tarefa | Descrição | 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. Para criar uma distribuição usando o console, faça login no AWS Management Console, abra o CloudFront console | Administrador de nuvem |
Tarefa | Descrição | 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 CloudFront na documentação.) Para criar uma função Lambda@Edge:
| 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