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 HTTP os cabeçalhos ao migrar de F5 para um Application Load Balancer em AWS
Criado por Sachin Trivedi () AWS
Ambiente: PoC ou piloto | Origem: On-Premise | Alvo: AWS Nuvem |
Tipo R: redefinir a plataforma | Workload: todas as outras workloads | Tecnologias: rede; nuvem híbrida; migração |
AWSserviços: Amazon CloudFront; Elastic Load Balancing (ELB); Lambda AWS |
Resumo
Quando você migra um aplicativo que usa um balanceador de carga F5 para o Amazon Web Services (AWS) e deseja usar um Application Load Balancer ativado, migrar regras F5 para AWS 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 o AWS CloudFront Lambda @Edge.
Pré-requisitos e limitações
Pré-requisitos
Um aplicativo local que usa um balanceador de carga F5 com uma configuração que substitui o valor do HTTP cabeçalho 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 ativadaAWS, incluindo o fluxo de integração entre os AWS componentes CDN e outros.
Ferramentas
AWSserviços
Application Load Balancer ─ Um Application Load Balancer é AWS um serviço de balanceamento de carga totalmente gerenciado 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 avançadas de roteamento com base em HTTP cabeçalhos e métodos, cadeias de caracteres 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, entre 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 na CloudFront documentação.) Para criar uma função Lambda@Edge:
| AWSadministrador |
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. | AWSadministrador |
Recursos relacionados
CloudFront documentação