Faça Deploy do seu Site Astro na AWS
AWS é uma plataforma de hospedagem de aplicações web completa que pode ser utilizada para fazer o deploy de um site Astro.
Para fazer deploy do seu projeto na AWS será necessário a utilização do console AWS. (A maioria dessas ações também pode ser feitas usando o AWS CLI). Este guia irá lhe mostrar o passo a passo para fazer deploy do seu site na AWS utilizando o AWS Amplify, hospedagem de websites estáticos com S3, e CloudFront.
AWS Amplify
Seção intitulada AWS AmplifyAWS Amplify é um conjunto de ferramentas e funcionalidades especialmente concebidas para que programadores front-end web e mobile construam aplicações completas na AWS de forma rápida e fácil.
-
Crie um novo projeto na Amplify Hosting.
-
Conecte seu repositório ao Amplify.
-
Modifique as configurações de compilação para corresponder ao processo de compilação do seu projeto.
O Amplify irá fazer deploy do seu site automaticamente e o atualizará quando você enviar um commit no seu repositório.
Hospedagem de websites estáticos com S3
Seção intitulada Hospedagem de websites estáticos com S3S3 é o ponto de partida para qualquer aplicação. É onde os arquivos do seu projeto e outros assets são armazenados. O S3 cobra por arquivos armazenados e por número de requisições. Você pode encontrar mais informações sobre o S3 na documentação da AWS.
-
Crie um S3 bucket com o nome do seu projeto.
O nome do bucket deve ser único globalmente. Nós recomendamos uma combinação do nome do seu projeto e o nome do domínio do seu site.
-
Desabilite “Bloquear todo o acesso público”. Por padrão, a AWS define todos os buckets como privados. Para torná-lo público, você deve desmarcar a opção “Bloquear todo o acesso público” nas propriedades do seu bucket.
-
Faça upload dos arquivos gerados na build localizados em
dist
para o S3. Você pode fazer isso manualmente no console ou usando o AWS CLI. Se você usar o AWS CLI, você pode usar o seguinte comando após autenticar-se com suas credenciais da AWS: -
Atualize a política do seu bucket para permitir o acesso público. Você pode encontrar esta configuração em Permissões > Política do bucket.
Não se esqueça de substituir
<BUCKET_NAME>
com o nome do seu bucket. -
Habilite a hospedagem de websites para o seu bucket. Você pode encontrar esta configuração em Propriedades > Hospedagem de site estático. Defina seu documento de índice para
index.html
e seu documento de erro para404.html
. Por fim, você pode encontrar a URL do seu site em Propriedades > Hospedagem de site estático.Se você estiver fazendo deploy de uma aplicação de página única (Single-Page application - SPA), defina seu documento de erro para
index.html
.
S3 com CloudFront
Seção intitulada S3 com CloudFrontCloudFront é um serviço web que oferece capacidades de uma rede de distribuição de conteúdo (Content Delivery Network - CDN). Ele é utilizado para armazenar o conteúdo de um servidor web e distribuí-lo aos usuários finais. O CloudFront cobra por quantidade de dados transferidos. Adicionar o CloudFront ao seu S3 bucket é mais econômico e proporciona uma entrega mais rápida.
Para conectar o S3 ao CloudFront, crie uma distribuição do CloudFront com os seguintes valores:
- Origin domain: O endpoint do site estático do seu bucket S3. Você pode encontrar seu endpoint em Propriedades > Hospedagem de site estático. Alternativamente, você pode selecionar seu bucket S3 e clicar no balão de chamada para substituir o endereço do seu bucket pelo endpoint estático do seu bucket.
- Viewer protocol policy: “Redirect HTTP to HTTPS”
Essa configuração servirá seu site usando a rede CDN do CloudFront. Você pode encontrar a URL da distribuição do CloudFront em Distributions > Domain name no bucket.
Ao conectar o CloudFront a um endpoint de site estático do S3, você depende das políticas de bucket do S3 para controle de acesso. Consulte hospedagem de websites estáticos com S3 para mais informações sobre políticas de bucket.
Entrega contínua com GitHub Actions
Seção intitulada Entrega contínua com GitHub ActionsExistem várias maneiras de configurar a Entrega contínua para a AWS. Uma possibilidade para o código hospedado no GitHub é usar GitHub Actions para fazer deploy de seu site toda vez que você enviar um commit.
-
Crie uma nova política em sua conta da AWS usando IAM com as seguintes permissões. Essa política permitirá que você faça upload de arquivos compilados para o seu bucket S3 e invalide os arquivos de distribuição do CloudFront quando enviar um commit.
Não se esqueça de substituir
<DISTRIBUTION_ARN>
e<BUCKET_NAME>
. Você pode encontrar o DISTRIBUTION_ARN em CloudFront > Distributions > Details. -
Crie um novo usuário IAM e anexe a política ao usuário. Isso fornecerá sua
AWS_SECRET_ACCESS_KEY
eAWS_ACCESS_KEY_ID
. -
Adicione este modelo de workflow ao seu repositório em
.github/workflows/deploy.yml
e envie-o para o GitHub. Você precisará adicionarAWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
,BUCKET_ID
, eDISTRIBUTION_ID
como “secrets” em seu repositório no GitHub em Settings > Secrets > Actions. Clique em New repository secret para adicioná-los.Seu
BUCKET_ID
é o nome do seu bucket S3. SeuDISTRIBUTION_ID
é o ID de distribuição do CloudFront. Você pode encontrar o ID de distribuição do CloudFront em CloudFront > Distributions > ID