Na criação do VPC Endpoint, a opção Enable Private DNS Name:
- Habilita esses DNS names privados no VPC:
execute-api.us-east-2.amazonaws.com
*.execute-api.us-east-2.amazonaws.com
- Porém a presença desses domínios privados impede a resolução de execute-api público no VPC. Mesmo assim, ainda é possível chamar uma API pública pelo seu Custom Domain Name, se houver. (Vide https://aws.amazon.com/premiumsupport/knowledge-center/api-gateway-vpc-connections/)
Com "Enable Private DNS Name", funcionam essas chamadas:
(6e5rf7yqo3 é o API ID)
curl -v https://6e5rf7yqo3.execute-api.us-east-2.amazonaws.com/dev/get
(NOTA: a chamada baseada no hostname não precisa ignorar erro de certificado "curl -k", porque o certificado é emitido para *.execute-api.us-east-2.amazonaws.com)
curl -v -k -H 'x-apigw-api-id:6e5rf7yqo3' https://execute-api.us-east-2.amazonaws.com/dev/get
Após associar o API GW com o VPC endpoint (*), é possível chamar:
curl -v https://6e5rf7yqo3-vpce-0b7a22d021cc42f88.execute-api.us-east-2.amazonaws.com/dev/get
NOTA: O hostname endpoint-specific funciona tanto pelo DNS público quanto pelo privado!
curl -v -k -H 'x-apigw-api-id:6e5rf7yqo3' https://vpce-0b7a22d021cc42f88-gectb2xb.execute-api.us-east-2.vpce.amazonaws.com/dev/get
curl -v https://vpce-0b7a22d021cc42f88-gectb2xb.execute-api.us-east-2.vpce.amazonaws.com/dev/get -H 'Host: 6e5rf7yqo3.execute-api.us-east-2.amazonaws.com'
(NOTA: a chamada baseada no hostname não precisa ignorar erro de certificado "curl -k", porque o certificado é emitido para *.execute-api.us-east-2.amazonaws.com)