Que serviço da AWS para evitar problemas de CORS com conteúdo estático do S3 e back-ends do aws?

4

Introdução

Eu tenho a arquitetura a seguir implantada no Amazon AWS.

Oobjetivoéexporumaplicativodaweb(aplicativodepáginaúnica)agindocomoumpontodeentradano link . Este é um aplicativo de página única que:

  • exibe recursos estáticos (html / js / css)
  • precisa acessar o backend do REST por meio de javascript

Backend

A idéia é ter os backends implementados em um cluster do Elastic Container Service (via docker). Em seguida, eles são gerados / redimensionados automaticamente em grupos-alvo que estão sendo atendidos por um balanceador de carga. O back-end é exposto por meio do link . (um CNAME de DNS apontando para o loadbalancer da AWS)

Frontend

O aplicativo de página única é implantado em um bucket do Amazon S3 e exposto por meio da hospedagem do site estático do S3. ( link ). Isso também pode ser exposto por meio de um CNAME de DNS no link

Proxy reverso

O que eu gostaria de ter é o seguinte. Os usuários acessam o aplicativo por meio do link . Isso deve servir o conteúdo estático. Para evitar a configuração do CORS, gostaria que o aplicativo de página única pudesse fazer chamadas de API desse domínio para /api , portanto, chamadas para link ** deve mapear para o backend.

Obviamente, isso pode ser feito com algo parecido com o Nginx, mas eu queria saber se havia algo que a Amazon oferece para isso, e que tipo de blocos de construção seriam necessários para ter essa funcionalidade

    
por ddewaele 18.02.2017 / 12:03

1 resposta

3

Você pode atingir sua meta com a abordagem Cloudfront e de proxy reverso:

  1. Primeiro, crie sua distribuição com app.acmecorp.com como CNAME allomed e faça o upload de um certificado SSL personalizado para este subdomínio.

  2. Crie duas origens, uma apontando para seu bloco e outra apontando para o balanceador de carga da API. Essas duas origens serão usadas posteriormente quando você configurar seus comportamentos de CDN.

  3. Crie um comportamento para / api que tenha seu balanceador como origem, passando todos os cabeçalhos para origem (o que efetivamente desativa os caches de borda)

  4. Configure o comportamento padrão para apontar para o seu bucket do S3.

  5. Finalmente, aponte seu app.acmecorp.com para o endpoint CDN no DNS.

As origens e os comportamentos da Cloudfront têm muito mais opções a serem tomadas, mas o básico para atender às suas necessidades está lá.

    
por 09.03.2017 / 01:05