Modifique HTTP os cabeçalhos ao migrar de F5 para um Application Load Balancer em 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 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: :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 ativadaAWS, incluindo o fluxo de integração entre os AWS componentes CDN e outros.

Arquitetura para modificação de cabeçalho usando Amazon CloudFront e Lambda @Edge

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

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, entre 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 na CloudFront documentação.) 

Para criar uma função Lambda@Edge:

  1. Faça login no AWS Management Console e abra o console 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, escolha Criar uma nova função a partir de modelos de AWS política.

    3. Associe o nome de função necessário 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.

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