Mapa de reescrita de URL editável para o site do CloudFront / S3 usando o Lambda @ Edge

1

Estou migrando um site estático do IIS para o Amazon S3, usando o CloudFront para https. O site antigo usava o módulo URL Rewrite e tinha 301 mapas de redirecionamento com mais de 200 entradas. Aqui está um exemplo:

example.com?pageID=1234 = > example.com/about/history

Quero garantir que todos os redirecionamentos sejam migrados com o website. Muitas das chaves de entrada incluem strings de consulta, portanto, não acho que as regras de redirecionamento XML do S3 ou os redirecionamentos de metadados do objeto funcionarão para eles (corrija-me se estiver errado).

Eu quero usar um acionador de evento de solicitação de usuário do CloudFront com uma função Lambda @ Edge para criar um mapa de reconfiguração de pares de valores-chave (algo como o descrito em este guia ). A função pegaria o URI da solicitação e, se ela corresponder a alguma das chaves no mapa, altere a solicitação para refletir o valor correspondente.

Eu poderia codificar o mapa de reescrita na função Lambda, mas novas entradas serão adicionadas ao mapa ao longo do tempo. Eu preferiria não criar uma nova versão da função e, em seguida, edite o comportamento do CloudFront para usar essa nova versão, sempre que for necessário um novo URL personalizado. Parece meio perigoso e propenso a erros que poderiam mexer no CloudFront.

Alguém sabe de uma maneira de criar um mapa de reconfiguração (um arquivo JSON ou algo assim?) que possa ser anexado a uma função do Lambda e editado sem alterar a própria função do Lambda? Obrigado!

    
por Rocky 26.09.2018 / 00:46

1 resposta

1

Eu salvaria o arquivo de configuração JSON em um bucket S3 e faria o Lambda @ Edge lê-lo na inicialização (não para cada solicitação embora! apenas uma vez no Lambda start up).

Conceda ao Lambda a permissão adequada do IAM para ler o arquivo do S3 e pronto.

  • você terá a configuração separada do código
  • não é necessário reimplantar o Lambda ou reconfigurar o CloudFront
  • as alterações de configuração serão propagadas globalmente dentro de minutos (você pode configurar um tempo de expiração da configuração no Lambda se desejar fazer o download novamente em intervalos de alguns minutos)

Espero que ajude:)

    
por 26.09.2018 / 01:04