Skip to content

Instantly share code, notes, and snippets.

@udhos
Created April 7, 2022 15:08
Show Gist options
  • Save udhos/1fb8d7e9e745a29055a4b56921399dc3 to your computer and use it in GitHub Desktop.
Save udhos/1fb8d7e9e745a29055a4b56921399dc3 to your computer and use it in GitHub Desktop.
aws-api-gateway-private-invoke

1. Enable Private DNS Name

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

Com "Enable Private DNS Name", funcionam essas chamadas:

(6e5rf7yqo3 é o API ID)

Chamada baseada no hostname:

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)

Chamada baseada no Header x-apigw-api-id:

curl -v -k -H 'x-apigw-api-id:6e5rf7yqo3' https://execute-api.us-east-2.amazonaws.com/dev/get

2. Route53 alias

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

(*) https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-apis.html#associate-private-api-with-vpc-endpoint

3. endpoint-specific public DNS hostnames

NOTA: O hostname endpoint-specific funciona tanto pelo DNS público quanto pelo privado!

Pode ser chamado pelo Header "x-apigw-api-id"

curl -v -k -H 'x-apigw-api-id:6e5rf7yqo3' https://vpce-0b7a22d021cc42f88-gectb2xb.execute-api.us-east-2.vpce.amazonaws.com/dev/get

Também pode ser chamado pelo Header "Host":

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)

Documentação:

https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-api-test-invoke-url.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment