AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
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