Como configuro o API Gateway com minha própria distribuição do CloudFront?
Quero um endpoint de API otimizado para a borda no Amazon API Gateway, mas quero criar minha própria distribuição do Amazon CloudFront para ele.
Breve descrição
Se seus clientes de API estiverem geograficamente dispersos, use um endpoint de API otimizado para borda no API Gateway. Esse tipo de endpoint atua como um endpoint regional com uma distribuição web do CloudFront gerenciada pela AWS para melhorar o tempo de conexão do cliente.
Para usar a rede global de entrega de conteúdo do CloudFront e manter mais controle sobre a distribuição, use uma API regional com uma distribuição web personalizada do CloudFront.
Resolução
Pré-requisitos: Crie uma função do AWS Lambda para integrar com sua API REST do API Gateway e crie uma API regional no API Gateway.
Crie um certificado SSL/TLS no AWS Certificate Manager (ACM) na região us-east-1 e na mesma região da AWS que sua API REST do API Gateway. Para obter um certificado para um nome de domínio emitido ou importado para o ACM, conclua as seguintes etapas:
- Registre seu domínio na Internet. Você pode usar o Amazon Route 53 ou um registrador de domínios credenciado por terceiros.
- Crie um certificado SSL/TLS para o nome de domínio no ACM ou importe um para o ACM.
Configure um método GET para sua API
Conclua as seguintes etapas:
- Abra o console do API Gateway.
- Escolha o nome da sua nova API regional.
- Escolha Criar recurso.
- Em Nome do recurso, insira saudações.
- Escolha Criar método.
- Escolha GET para o tipo de método e selecione Função do Lambda para o tipo de integração. Em seguida, ative o botão de integração do proxy do Lambda e selecione sua função do Lambda.
Implante sua API e identifique o URL de invocação de sua API
Conclua as seguintes etapas:
- Implante sua API em um estágio.
- Na parte superior do painel do Stage Editor, copie o URL de invocação do método GET HTTP do recurso de saudações para sua área de transferência.
Exemplo de URL de API de invocação do API Gateway:
https://restApiId.execute-api.region.amazonaws.com/stageName/greetings
Teste sua API para obter uma resposta de 200 OK
Para confirmar que sua API retorna uma resposta de 200 OK, teste o URL de invocação da sua API por meio do console do API Gateway, a aplicação Postman ou o curl. Para obter mais informações sobre Postman e curl, consulte o site do Postman e o site do curl.
Use curl para testar sua API para obter uma resposta de 200 OK
Com base no seu sistema operacional, execute um dos comandos a seguir.
Observação: Substitua pelo URL de invocação da sua API.
Para Linux, use o seguinte comando:
curl -IX GET https://restApiId.execute-api.region.amazonaws.com/stageName/greetings
Para o Windows PowerShell, execute o seguinte comando:
curl https://restApiId.execute-api.region.amazonaws.com/stageName/greetings
Observação: Se você receber um código de status diferente de 200 OK, verifique o console para confirmar se sua API está implantada em seu estágio. Além disso, confirme se o URL de invocação especifica corretamente seu estágio.
Crie uma distribuição web do CloudFront
Conclua as seguintes etapas:
-
Abra o console do CloudFront.
-
Escolha Criar distribuição.
-
Em Nome de domínio de origem, insira seu URL de invocação da API. Em seguida, exclua o nome do estágio e do recurso.
Exemplo de nome de domínio de origem:https://restApiId.execute-api.region.amazonaws.com
-
Em Protocolo, selecione Somente HTTPS.
Observação: o API Gateway não oferece suporte a endpoints não criptografados (HTTP). Para obter mais informações, consulte Perguntas frequentes sobre o Amazon API Gateway. -
Para o protocolo SSL de origem mínima, é uma prática recomendada escolher o TLSv1.2. Não selecione SSLv3. O API Gateway não oferece suporte ao protocolo SSLv3.
-
Em Caminho de origem, insira o nome provisório da sua API com uma barra na frente (/stageName). Ou, para inserir você mesmo o nome artístico ao invocar o URL, não insira nada no Caminho de origem.
Observação: Se você inserir um nome de estágio incorreto para o Caminho de origem e invocar a distribuição do CloudFront, poderá receber um erro. Por exemplo, você pode receber um erro de solicitação não autorizada que retorna a mensagem “Token de autenticação ausente” e um código de resposta 403 Forbidden. -
(Opcional) Para encaminhar cabeçalhos personalizados para sua origem, insira um ou mais cabeçalhos personalizados para os cabeçalhos personalizados do Origin.
-
Siga as instruções na seção Se você estiver usando a autenticação do IAM para sua API ou nomes de domínio personalizados para sua distribuição web do CloudFront, se aplicável.
-
(Opcional) Em Configurações de distribuição, defina as configurações adicionais que você deseja personalizar.
-
Escolha Criar distribuição.
-
Aguarde de 15 a 20 minutos para que sua distribuição seja implantada. Quando o Status da distribuição aparece como Implantado no console, a distribuição está pronta.
Para obter mais informações, consulte Criar uma distribuição.
Teste sua distribuição web do CloudFront
Conclua as seguintes etapas:
-
Abra o console do CloudFront.
-
Copie o nome do domínio de distribuição da sua distribuição para sua área de transferência.
Exemplo de nome de domínio não personalizado:a222222bcdefg5.cloudfront.net
-
Teste o nome do domínio para obter uma resposta de 200 OK. Se você receber um código de erro 500 do servidor, talvez a distribuição não seja implantada. Se você não obtiver resposta, o registro DNS do CloudFront ainda não foi propagado. Em ambos os casos, aguarde de 15 a 20 minutos depois de criar sua distribuição e repita o procedimento.
Importante: As etapas anteriores são para recursos de API que não têm a autenticação do AWS Identity and Access Management (AWS IAM) ativada para nenhum dos métodos de recursos. Se você tiver métodos com autenticação do IAM, anexe o nome do recurso ao final do nome do domínio de distribuição ao invocar sua API. O URL de invocação completo (incluindo o nome do recurso) é semelhante a um dos exemplos a seguir.
Exemplo de URL de API de invocação do API Gateway com um caminho de origem:
https://distributionDomainName/stageName/resourceName
Exemplo de URL de API de invocação do API Gateway sem um caminho de origem:
https://distributionDomainName/resourceName
Para obter mais informações sobre como testar sua distribuição, consulte Como ativo a autenticação do IAM para APIs do API Gateway?
Se você estiver usando autenticação do IAM para sua API ou nomes de domínio personalizados para sua distribuição web do CloudFront
Por padrão, o CloudFront não encaminha cabeçalhos de autorização recebidos para a origem (para esse caso de uso, API Gateway). Se você estiver usando a autenticação do IAM para sua API ou nomes de domínio personalizados para sua distribuição, realize uma das seguintes ações.
(Para autenticação do IAM) Adicione o cabeçalho de autorização à sua lista de permissões do CloudFront
Conclua as seguintes etapas:
- Crie uma distribuição do CloudFront.
- Na página Criar distribuição, para Comportamento padrão do cache e solicitações de chave de cache e origem selecione Configurações de cache legadas.
- Escolha Incluir os seguintes cabeçalhos na lista suspensa Cabeçalhos. Em seguida, selecione Autorização na lista de cabeçalhos que aparecem. Configure os cabeçalhos que você deseja que sejam encaminhados para sua API.
-ou-
Para solicitações de chave de cache e origem, em Política de cache, escolha uma política de cache existente ou crie uma nova política de cache. A política deve adicionar o cabeçalho de autorização à sua lista de permissões do CloudFront. - (Opcional) Para testar a configuração, faça o seguinte:
Crie a assinatura Signature Version 4 necessária para seu endpoint do API Gateway de maneira programática. Para o valor do host, insira seu URL de invocação do API Gateway. Para o valor do endpoint, insira seu URL de distribuição web do CloudFront.
Exemplo de URL de invocação do API Gateway:
Exemplo de URL de distribuição web do CloudFront:example_api_id.execute.example_region.amazon.com
d######.cloudfront.net
Observação: se você estiver usando a aplicação Postman, na guia Autorização, em Tipo, selecione AWS Signature. Em seguida, insira a Chave de acesso e a Chave secreta. O Postman usa as credenciais que você insere para gerar os cabeçalhos necessários. Em seguida, use o cabeçalho de autorização (e todos os SignedHeaders) gerado a partir do processo Signature Version 4 para enviar a solicitação de API para a distribuição do CloudFront.
(Para nomes de domínio personalizados ou autenticação do IAM) Configure um nome de domínio personalizado regional no API Gateway para acessar sua API
Conclua as seguintes etapas:
-
Crie uma nova API regional no API Gateway ou altere sua API de API Gateway otimizada para borda para uma API regional.
-
Configure um nome de domínio regional personalizado para a API e crie um mapeamento de API para sua API.
Observação: use esse nome de domínio personalizado ao acessar sua API por meio do CloudFront. -
Crie uma distribuição web do CloudFront, mas, para Nome de domínio de origem, insira o nome de domínio de destino do API Gateway em vez do URL de invocação da API.
Observação: encontre seu nome de domínio de destino do API Gateway na seção de configuração do Endpoint dos **detalhes **do seu domínio personalizado.
Exemplo de nome de domínio de destino do API Gateway:d-######.execute-api.example-region.amazonaws.com
-
Na página Criar distribuição, para Comportamento padrão do cache e solicitações de chave de cache e origem, selecione Configurações de cache legadas.
-
Escolha Incluir os seguintes cabeçalhos na lista suspensa Cabeçalhos. Em seguida, selecione o Host e a Autorização na lista de cabeçalhos que aparecem. Configure os cabeçalhos que você deseja que sejam encaminhados para sua API.
-ou-
Para solicitações de chave de cache e origem, em Política de cache, escolha uma política de cache existente ou crie uma nova política de cache. A política deve adicionar o cabeçalho de autorização à sua lista de permissões do CloudFront. -
Em Configurações de distribuição, em Nome de domínio alternativo, insira o nome de domínio personalizado que você criou.
-
Em Certificado SSL, selecione Certificados SSL personalizados. Em seguida, adicione o certificado do AWS Certificate Manager (ACM) para esse domínio.
-
Depois de implantar a distribuição web do CloudFront, configure o registro DNS para mapear o domínio personalizado para a distribuição web do CloudFront. Para fazer isso, crie um alias ou um registro CNAME. Para obter mais informações, consulte Usar URLs personalizados adicionando nomes de domínio alternativos (CNAMEs).
-
(Opcional) Para testar a configuração, crie uma solicitação assinada do Signature Version 4 para seu nome de domínio personalizado de forma programática.
Observação: Você também pode usar a aplicação Postman para testar a configuração.
Vídeos relacionados
![Assista ao vídeo de Tushar para saber mais (9:39) Assista ao vídeo de Tushar para saber mais (9:39)](https://i.ytimg.com/vi/Jb8bm_jtU34/mqdefault.jpg)
![AWS OFICIAL](/static/images/aws.png)
Conteúdo relevante
- feita há 11 diaslg...
- Resposta aceitafeita há 9 diaslg...
- feita há 11 diaslg...
- feita há 25 diaslg...
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos