Como faço para usar o Amazon S3 para hospedar um site estático que usa o API Gateway como proxy?
Quero usar o Amazon API Gateway para criar uma API como proxy para meu site estático. Em seguida, quero hospedar o site no Amazon Simple Storage Service (Amazon S3).
Resolução
Para usar o Amazon S3 para hospedar um site estático que usa o API Gateway como proxy, use uma integração HTTP ou uma integração de serviço da AWS.
Use uma integração HTTP
Se o seu site estático estiver acessível publicamente, use uma integração HTTP e forneça o URL do site estático do Amazon S3 para a API.
Configure um site estático no Amazon S3. Em seguida, use o console do API Gateway para criar uma API REST e um método para o recurso raiz e implante sua API REST.
Crie uma API REST
Conclua as etapas a seguir:
- Abra o console do API Gateway.
- Clique em Criar API.
- Em API REST, selecione Criar.
- Em Nome da API, insira um nome para sua API REST.
- Na lista suspensa Tipo de endpoint de API, selecione o seu tipo de endpoint e, em seguida, clique em Criar API.
- No painel de navegação, selecione Recursos abaixo do nome da sua API.
- Clique em Criar recurso.
- Em Caminho do recurso, mantenha como /.
- Em Nome do recurso, insira um nome. Por exemplo, key.
- Clique em Criar recurso.
Crie o método para o recurso raiz
Conclua as etapas a seguir:
- Em Recursos, selecione o recurso que você criou. Por exemplo, /key.
- Em Métodos, clique em Criar método.
- Na lista suspensa Tipo de método, selecione GET.
- Em Tipo de integração, clique em HTTP.
- Selecione HTTP integração proxy.
- Na lista suspensa Método HTTP, clique em GET.
- No URL do endpoint, insira http://BUCKET_NAME.s3-website.REGION.amazonaws.com/key.<br id=hardline_break/> Observação: substitua BUCKET_NAME pelo nome do seu bucket, REGION pela região do seu bucket e key pelo nome do seu recurso.
- Clique em Criar método.
Implante a API REST
Conclua as etapas a seguir:
- Selecione Implantar API.
- Na lista suspensa Estágio, clique em *New Stage*.
- Em Nome do estágio, insira um nome. Por exemplo, STAGE_NAME.
- Selecione Implantar.
- Em Detalhes do estágio, anote o URL de invocação para testar sua API.
- Para testar o proxy da API em seu site do S3, execute o seguinte comando curl:
Observação: substitua API_ID pelo ID da sua API, REGION pela sua região e STAGE_NAME pelo nome do seu estágio.curl -X GET https://API_ID.execute-api.REGION.amazonaws.com/STAGE_NAME/index.html
Use uma integração de serviços da AWS
Configure o site estático do S3
Se o seu site estático do S3 estiver bloqueado para acesso público, configure o site para que ele seja acessado somente pelo proxy da API.
Conclua as etapas a seguir:
- Configure um site estático no Amazon S3.<br id=hardline_break/> Observação: ao configurar o site estático, pule a seção Etapa 3: edite as configurações de Bloqueio de acesso público. Mantenha a configuração padrão Bloquear todo o acesso público ativada.
- Modifique uma política de bucket que disponibilize publicamente o conteúdo do seu bucket para permitir que o proxy da API acesse somente o bucket do S3. Exemplo de política de bucket:
Observação: substitua BUCKET_NAME pelo nome do seu bucket, REGION pela sua região, ACCOUNT_ID pelo ID da sua conta da AWS e API_ID pelo ID da sua API.{ "Version": "2012-10-17", "Statement": [{ "Sid": "APIProxyBucketPolicy", "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::BUCKET_NAME/*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:execute-api:REGION:ACCOUNT_ID:API_ID/*/GET/" } } }] } - Crie uma política do AWS Identity and Access Management (AWS IAM) para permitir que a API GetObject acesse o bucket do S3. Exemplo de política do IAM:
Observação: substitua BUCKET_NAME pelo nome do seu bucket.{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": [ "arn:aws:s3:::BUCKET_NAME/*" ] }] } - Crie um perfil do IAM e anexe a política do IAM anterior.
- Anote o nome do recurso da Amazon (ARN) do perfil do IAM.<br id=hardline_break/>
Observação: o perfil do IAM deve conter a seguinte política de confiança para que o API Gateway assuma o perfil:
{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
Crie um proxy da API REST para o serviço do S3
Conclua as etapas a seguir:
- Abra o console do API Gateway.
- Clique em Criar API.
- Em API REST, selecione Criar.
- Em Nome da API, insira um nome para sua API REST.
- Em Tipo de endpoint de API, selecione o tipo de endpoint com base na origem da maior parte do tráfego do cliente.<br id=hardline_break/> Observação: é uma prática recomendada usar endpoints otimizados para borda para serviços públicos acessados pela internet. Se o tráfego do seu cliente acessar suas APIs somente de dentro da mesma região da AWS, use endpoints regionais.
- Clique em Criar API.
Crie o método GET para o recurso raiz
Conclua as etapas a seguir:
- Selecione o recurso raiz /.
- Clique em Criar método.
- Na lista suspensa Tipo de método, selecione GET.
- Em Tipo de integração, clique em Serviço AWS.
- Na lista suspensa Região da AWS, selecione sua região.
- Na lista suspensa Serviço da AWS clique em Simple Storage Service (S3).
- Em Subdomínio da AWS, mantenha o campo em branco.
- Na lista suspensa Método HTTP, clique em GET.
- Em Tipo de ação, selecione Usar substituição de caminho.
- Em Substituição de caminho, insira o caminho do seu bucket do S3. Por exemplo, BUCKET_NAME/index.html.
- Em Perfil de execução, insira o ARN do perfil do IAM.
- Clique em Criar método.
Observação: a configuração integra a solicitação GET da API no frontend https://your-api-host/stage/ ao backend GET do S3 https://your-s3-host/index.html.
Crie um objeto de recurso de API
Conclua as etapas a seguir:
- Clique em Criar recurso.
- Em Caminho do recurso, mantenha como /.
- Em Nome do recurso, insira um nome. Por exemplo, object.
- Clique em Criar recurso.
Configure um método GET para o recurso
Conclua as etapas a seguir:
- Em Recursos, selecione o recurso que você criou. Por exemplo, \object.
- Conclua as etapas 2 a 12 da seção Crie o método GET para o recurso raiz.
- Clique em GET e, em seguida, selecione Solicitação da integração.<br id=hardline_break/> Observação: substitua object pelo nome do seu recurso.
- Clique em Editar.
- Expanda Parâmetros do caminho do URL e selecione Adicionar parâmetro do caminho.
- Em Nome, insira o nome do seu recurso.
- Em Mapeado de, insira o valor como method.request.path.object.<br id=hardline_break/> Observação: substitua object pelo nome do seu recurso.
- Clique em Salvar.
Configure os mapeamentos do cabeçalho de resposta do método GET
Você deve mapear o valor do parâmetro do cabeçalho do tipo de conteúdo de backend para a contraparte de frontend para que o navegador processe a resposta com o tipo de conteúdo.
Conclua as etapas a seguir:
- Em Recursos, selecione /.
- Clique em GET e, em seguida, selecione Resposta do método.
- Em Resposta 200, clique em Editar.
- Em Nome do cabeçalho, selecione Adicionar cabeçalho.
- Defina o Nome como Content-Type.
- Clique em Salvar.
- Selecione Resposta de integração e, em seguida, Editar.
- Em Mapeamentos de cabeçalho, ao lado de Content-Type, insira o Valor do mapeamento como integration.response.header.Content-Type.
- Repita as etapas de 2 a 8 para o método GET no recurso /object.<br id=hardline_break/> Observação: substitua object pelo nome do seu recurso.
Implante a API REST
Conclua as etapas a seguir:
- Selecione Implantar API.
- Na lista suspensa Estágio, clique em *New Stage*.
- Em Nome do estágio, insira um nome. Por exemplo, STAGE_NAME.
- Selecione Implantar.
- Em Detalhes do estágio, anote o URL de invocação para testar sua API.
Para testar o proxy da API em seu site estático do S3, execute um comando curl.
Observação: nos exemplos a seguir, substitua API_ID pelo ID da sua API, REGION pela sua região e STAGE_NAME pelo nome do seu estágio.
Para testar o recurso raiz, execute o seguinte comando curl:
curl -X GET https://API_ID.execute-api.REGION.amazonaws.com/STAGE_NAME/
Para testar o recurso do objeto, execute o seguinte comando curl:
curl -X GET https://API_ID.execute-api.REGION.amazonaws.com/STAGE_NAME/home.html
Informações relacionadas
Tutorial: Crie uma API REST como um proxy do Amazon S3
Hospedagem de um site estático usando o Amazon S3
- Idioma
- Português
Vídeos relacionados


Conteúdo relevante
feita há um ano