Tutorial: Crie uma API REST privada
Neste tutorial, você cria uma API REST privada. Os clientes podem acessar a API somente de dentro de sua Amazon VPC. A API é isolada da internet pública, que é um requisito de segurança comum.
Este tutorial leva aproximadamente 30 minutos para ser concluído. Primeiro, você usa um modelo do AWS CloudFormation para criar uma Amazon VPC, um endpoint da VPC, uma função do AWS Lambda e executar uma instância do Amazon EC2 que você usará para testar sua API. Em seguida, use o AWS Management Console para criar uma API privada e anexar uma política de recursos que permita o acesso somente a partir do endpoint da VPC. Por fim, você testa a sua API.
Para concluir esse tutorial, você precisa de uma conta da AWS e de um usuário do AWS Identity and Access Management com acesso ao console. Para obter mais informações, consulte Configurar para usar o API Gateway.
Neste tutorial, você usará o AWS Management Console. Para obter um modelo do AWS CloudFormation que cria essa API e todos os recursos relacionados, consulte template.yaml.
Tópicos
- Etapa 1: Criar dependências
- Etapa 2: Crie uma API privada
- Etapa 3: Crie um método e integração
- Etapa 4: Anexe uma política de recursos
- Etapa 5: Implante sua API
- Etapa 6: Verifique se sua API não está acessível publicamente
- Etapa 7: Conecte-se a uma instância em sua VPC e invoque sua API
- Etapa 8: Limpar
- Próximas etapas: Automatize com AWS CloudFormation
Etapa 1: Criar dependências
Baixe e descompacte este modelo do AWS CloudFormation. Você usa o modelo para criar todas as dependências para sua API privada, incluindo uma Amazon VPC, um endpoint da VPC e uma função do Lambda que serve como backend de sua API. Você cria a API privada mais tarde.
Como criar uma pilha do AWS CloudFormation
Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation
. -
Selecione Create stack (Criar pilha) e With new resources (standard) (Com novos recursos (padrão)).
-
Em Specify template (Especificar modelo), escolha Upload a template file (Fazer upload de um arquivo de modelo).
-
Selecione o modelo que você baixou.
-
Escolha Next (Próximo).
-
Em Nome da pilha, insira
private-api-tutorial
e escolha Avançar. -
Para Configurar opções de pilha, escolha Avançar.
-
Para Capabilities (Recursos), reconheça que AWS CloudFormation pode criar recursos do IAM em sua conta.
-
Selecione Enviar.
AWS CloudFormationO provisiona as dependências da sua API, o que pode levar alguns minutos. Quando o status da sua pilha do AWS CloudFormation for CREATE_COMPLETE, escolha Outputs (Saídas). Observe o ID de endpoint da VPC. Você precisa dele para as etapas posteriores neste tutorial.
Etapa 2: Crie uma API privada
Crie uma API privada para permitir que somente clientes dentro de sua VPC a acessem.
Para criar uma API privada
Inicie uma sessão no console do API Gateway em https://console.aws.amazon.com/apigateway
. -
Escolha Criar APIe, em seguida, para API REST, escolha Criar.
-
Em API name (Nome da API), insira
private-api-tutorial
. -
Em Tipo de endpoint de API, escolha Privado.
-
Em IDs de endpoint da VPC, insira o ID de endpoint da VPC em Saídas da pilha do AWS CloudFormation.
-
Selecione Criar API.
Etapa 3: Crie um método e integração
Crie um método GET
e uma integração do Lambda para lidar com solicitações GET
para sua API. Quando um cliente invoca sua API, o API Gateway envia a solicitação para a função do Lambda criada na Etapa 1 e, em seguida, retorna uma resposta ao cliente.
Para criar um método e integração
Inicie uma sessão no console do API Gateway em https://console.aws.amazon.com/apigateway
. -
Selecione a API.
-
Escolha Criar método.
-
Em Tipo de método, selecione
GET
. -
Em Tipo de integração, selecione Função do Lambda.
-
Ative Integração de proxy do Lambda. Com uma integração de proxy do Lambda, o API Gateway envia um evento para o Lambda com uma estrutura definida e transforma a resposta da função do Lambda em uma resposta HTTP.
-
Para Lambda function (Função do Lambda), escolha a função que criou com o modelo do AWS CloudFormation na Etapa 1. O nome da função começa com
private-api-tutorial
. -
Escolha Criar método.
Etapa 4: Anexe uma política de recursos
Anexe uma política de recursos à sua API, que permite que os clientes invoquem sua API somente por meio do endpoint da VPC. Para restringir ainda mais o acesso à sua API, você também pode configurar uma política de endpoint da VPC para o endpoint da VPC, mas isso não é necessário para este tutorial.
Para anexar uma política de recursos
Inicie uma sessão no console do API Gateway em https://console.aws.amazon.com/apigateway
. -
Selecione a API.
-
Selecione Política de recursos e Criar política.
-
Insira a seguinte política. Substitua o
vpceID
pelo seu ID de endpoint da VPC em Outputs (Saídas) da sua pilha do AWS CloudFormation.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "
vpceID
" } } }, { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/*" } ] } -
Escolha Salvar alterações.
Etapa 5: Implante sua API
Em seguida, implante sua API para torná-la disponível para clientes em sua Amazon VPC.
Para implantar uma API
Inicie uma sessão no console do API Gateway em https://console.aws.amazon.com/apigateway
. -
Selecione a API.
Escolha Implantar API.
Em Estágio, selecione Novo estágio.
Em Stage name (Nome do estágio), insira
test
.(Opcional) Em Description (Descrição), insira uma descrição.
Escolha Deploy (Implantar).
Agora você está pronto para testar sua API.
Etapa 6: Verifique se sua API não está acessível publicamente
Use curl
para verificar se você não pode invocar sua API fora da Amazon VPC.
Para testar sua API
Inicie uma sessão no console do API Gateway em https://console.aws.amazon.com/apigateway
. -
Selecione a API.
-
No painel de navegação principal, selecione Estágios e escolha o estágio testar.
-
Em Detalhes do estágio, escolha o ícone de cópia para copiar o URL de invocação da API. O URL se parece com
https://
. O endpoint da VPC que foi criado na Etapa 1 tem o DNS privado ativado, portanto, você pode usar o URL fornecido para chamar sua API.abcdef123
.execute-api.us-west-2
.amazonaws.com/test -
Use curl para tentar invocar sua API fora da VPC.
curl https://
abcdef123
.execute-api.us-west-2
.amazonaws.com/testO curl indica que o endpoint da sua API não pode ser resolvido. Se você receber uma resposta diferente, volte para a Etapa 2 e certifique-se de escolher Privado para o tipo de endpoint da API.
curl: (6) Could not resolve host:
abcdef123
.execute-api.us-west-2
.amazonaws.com/test
Em seguida, conecte-se a uma instância do Amazon EC2 em sua VPC para chamar sua API.
Etapa 7: Conecte-se a uma instância em sua VPC e invoque sua API
Em seguida, teste sua API de dentro da Amazon VPC. Para acessar sua API privada, conexte-se a uma instância do Amazon EC2 em sua VPC e, em seguida, use curl para chamar sua API. Use o Gerenciador de sessões do Systems Manager para se conectar à instância no navegador.
Para testar sua API
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/
. -
Selecione Instances (Instâncias).
-
Escolha a instância chamada private-api-tutorial que você criou com o modelo do AWS CloudFormation na Etapa 1.
-
Escolha Conectar e escolha Session Manager.
-
Escolha Conectar para executar uma sessão baseada em navegador na instância.
-
Na sessão do Session Manager, use curl para invocar sua API. Invoque sua API porque está usando uma instância na sua Amazon VPC.
curl https://
abcdef123
.execute-api.us-west-2
.amazonaws.com/testVerifique se você obtém a resposta
Hello from Lambda!
.
Você criou com sucesso uma API que é acessível apenas a partir de sua Amazon VPC e, em seguida, verificou se ela funciona.
Etapa 8: Limpar
Para evitar custos desnecessários, exclua os recursos que você criou como parte desse tutorial. As etapas a seguir excluem sua API REST e sua pilha do AWS CloudFormation.
Para excluir uma API REST
Inicie uma sessão no console do API Gateway em https://console.aws.amazon.com/apigateway
. -
Na página APIs , selecione uma API. Selecione Ações da API, Excluir API e, depois, confirme a escolha.
Para excluir uma pilha do AWS CloudFormation
Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation
. -
Selecione sua pilha do AWS CloudFormation.
-
Escolha Excluir e, em seguida, confirme sua escolha.
Próximas etapas: Automatize com AWS CloudFormation
Você pode automatizar a criação e a limpeza de todos os recursos da AWS envolvidos neste tutorial. Para obter um modelo do AWS CloudFormation de exemplo completo, consulte template.yaml.