Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Como uso um endpoint da VPC de interface para acessar uma API REST privada do API Gateway em outra conta?
Quero usar um endpoint da nuvem privada virtual (VPC) de interface para acessar uma API REST privada do Amazon API Gateway que está em outra conta da AWS.
Breve descrição
Para usar um endpoint da VPC de interface para acessar uma API REST privada do API Gateway que está em outra conta da AWS, realize as seguintes etapas:
- Crie um endpoint de interface em uma Amazon Virtual Private Cloud (Amazon VPC) em uma conta (conta A).
- Crie uma API REST privada do API Gateway em uma segunda conta (conta B).
- Configure uma política de recursos para a API REST privada que permita que o endpoint da interface invoque a API.
- Configure um método para a API REST privada.
- Implante a API REST privada.
- Chame a API REST privada da conta A para testar a configuração.
Observação: a API REST privada do API Gateway e o endpoint da VPC devem estar na mesma região da AWS.
Resolução
Criar um endpoint de interface em uma Amazon VPC em uma conta (conta A)
Criar um novo endpoint da VPC de interface
Na conta A, siga as instruções em Criar um endpoint da VPC para API Gateway na VPC.
Importante: em Política, escolha Acesso total. É uma prática recomendada usar uma política de endpoint da VPC para restringir o acesso ao endpoint por ID de API. Também é uma prática recomendada usar a política de recursos do API Gateway para restringir o acesso ao endpoint por entidade principal. Para obter mais informações, consulte Aplicar permissões de privilégio mínimo.
Ao criar o endpoint de interface, considere realizar as seguintes ações:
- É uma prática recomendada selecionar várias sub-redes em diferentes zonas de disponibilidade. Quando você configura sub-redes em várias zonas de disponibilidade, seu endpoint de interface é mais resistente a possíveis falhas de Zona de Disponibilidade.
- Ative o DNS privado para usar o DNS público ou privado para se conectar à sua API REST privada.
Observação: quando você ativa o DNS privado para um endpoint da VPC da interface, não é possível mais acessar as APIs públicas do API Gateway a partir da sua VPC. Para obter mais informações, consulte Por que recebo um erro HTTP “403 Forbidden” ao me conectar às minhas APIs do API Gateway a partir de uma VPC? - Seus grupos de segurança devem ter uma regra que permita o tráfego HTTPS de entrada da porta TCP 443 a partir de um intervalo de endereço IP em sua VPC. A regra também pode ser de outro grupo de segurança em sua VPC.
Observação: se você não tiver um grupo de segurança que atenda a qualquer um desses requisitos, escolha Criar um novo grupo de segurança para sua VPC. Se você não especificar um grupo de segurança, um grupo de segurança padrão será associado às interfaces de rede do endpoint.
Recuperar o ID do endpoint da VPC de interface
Depois de criar o endpoint da interface, o ID do endpoint da VPC é exibido. Copie o ID do endpoint da VPC do seu novo endpoint de interface, por exemplo: vpce-1a2b3c456d7e89012.
Observação: use esse ID de endpoint da VPC ao criar e configurar sua API REST privada.
Recuperar o nome DNS público do endpoint de interface
A página Endpoints é exibida no console da Amazon VPC. Na guia Detalhes da página Endpoints, na coluna Nomes de DNS, copie o nome do DNS público do seu endpoint de interface. Por exemplo: vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com.
Crie uma API REST privada do API Gateway em uma segunda conta (conta B)
- Na conta B, abra o console do API Gateway.
- Escolha Criar API.
- Em Escolha um tipo de API, em API REST privada, escolha Criar.
- Em Detalhes da API, insira as seguintes informações:
Em Nome da API, insira um nome.
(Opcional) Em Descrição, insira uma descrição.
Defina Tipo de endpoint como Privado.
Em IDs de endpoint da VPC, insira o ID de endpoint da interface. Em seguida, selecione Adicionar.
Observação: quando você associa seu endpoint de interface à sua API REST privada, o API Gateway gera um novo registro de alias do Amazon Route 53. É possível usar o alias do Route53 para acessar sua API privada. - Escolha Criar API.
Para obter mais informações, consulte Criar uma API privada.
Configure uma política de recursos para a API REST privada que permita que o endpoint da interface invoque a API
- No painel de navegação do console do API Gateway, em sua API, escolha Política de recursos.
- Na página Política de recursos, insira o seguinte exemplo de política de recursos na caixa de texto:
Observação: substitua vpce-1a2b3c456d7e89012 pelo ID do endpoint de interface.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/*/*/*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1a2b3c456d7e89012" } } }, { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/*/*/*" } ] }
Para mais informações, consulte Configurar uma política de recursos para uma API privada.
Configure um método para a API REST privada
- No painel de navegação do console do API Gateway, em sua API, escolha Recursos.
- No painel Recursos, escolha Ações e, em seguida, Criar método.
- Na lista suspensa abaixo do nó / resource, escolha ANY e, em seguida, o ícone de marca de verificação.
- No painel / - ANY - Setup, em Tipo de integração, escolha Simulação.
Observação: uma integração simulada responde a qualquer solicitação recebida. - Escolha Salvar.
Para mais informações, consulte Métodos para APIs REST no API Gateway.
Implante a API REST privada
- No painel Recursos do console do API Gateway, escolha Ações e, em seguida, Implantar API.
- Na caixa de diálogo Implantar API, insira as seguintes informações:
Em Estágio de implantação, escolha [New Stage].
Em Nome do estágio, insira um nome. Por exemplo, dev ou test. - Escolha Implantar.
- No painel Editor do estágio, localize a mensagem Se o DNS privado estiver ativado, use este URL:. Copie o URL de invocação da API REST privada.
Observação: use o URL de invocação da API REST privada para testar a configuração.
Para obter mais informações, consulte Implantar uma API privada.
Chame a API REST privada da conta A para testar a configuração
- Na conta A, execute uma instância do Amazon Elastic Compute Cloud (Amazon EC2) na mesma VPC do endpoint de interface.
Importante: escolha o grupo de segurança que você associou ao seu endpoint de interface. - Conecte-se à instância do Amazon EC2.
Observação: uma instância do EC2 pode incorrer em cobranças em sua conta da AWS. Se você criar uma instância para testar, encerre-a quando terminar para evitar outras cobranças. - Na linha de comando da sua instância do EC2, use qualquer um dos seguintes comandos curl para chamar a API REST privada na conta B.
Observação: para mais informações, consulte Invocar a API privada usando nomes de host DNS públicos específicos de endpoint.
Para um nome de DNS privado
Execute o seguinte comando:
Observação: substitua https://a1bc234d5e.execute-api.region.amazonaws.com/stage-name pelo URL de invocação da sua API privada. Esse comando funciona somente se você tiver ativado o DNS privado para seu endpoint de interface. Para mais informações, consulte Invocar a API privada usando os nomes DNS privados.curl -i https://a1bc234d5e.execute-api.region.amazonaws.com/stage-name
Para um alias Route53
Execute o seguinte comando:
Observação: substitua a1bc234d5e pelo ID da sua API, vpce-1a2b3c456d7e89012 pelo ID do endpoint da interface e region pela região da sua API. Substitua stage-name pelo nome do estágio em que sua API privada está implantada. Para mais informações, consulte Invocar uma API privada usando um alias Route53.curl -i https://a1bc234d5e-vpce-1a2b3c456d7e89012.execute-api.region.amazonaws.com/stage-name
Para um nome DNS público com um cabeçalho de host
Execute o seguinte comando:
Observação: substitua vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com pelo nome de DNS público do seu endpoint de interface e stage-name pelo nome do estágio em que você implantou sua API privada. Substitua a1bc234d5e.execute-api.region.amazonaws.com pelo URL de invocação da sua API privada.curl -i https://vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com/stage-name -H "Host: a1bc234d5e.execute-api.region.amazonaws.com"
Para um nome DNS público com o cabeçalho x-apigw-api-id
Execute o seguinte comando:
Observação: substitua vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com pelo nome de DNS público do seu endpoint de interface e stage-name pelo nome do estágio em que você implantou sua API privada. Substitua a1bc234d5e pelo ID da sua API.curl -i https://vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com/stage-name -H "x-apigw-api-id:a1bc234d5e"
- Examine a saída do comando. Caso a conexão funcione corretamente, o API Gateway retornará uma resposta 200 OK.
Informações relacionadas
Como soluciono problemas ao me conectar a um endpoint de API privada do API Gateway?
Acessar um AWS service (Serviço da AWS) usando um endpoint da VPC de interface
Vídeos relacionados


Conteúdo relevante
- feita há 2 diaslg...
- feita há um mêslg...
- feita há 3 meseslg...
- Resposta aceitafeita há 4 meseslg...
- AWS OFICIALAtualizada há um mês