Consumidor de API: associar o endpoint da VPC a um nome de domínio personalizado privado compartilhado com você
O procedimento a seguir mostra como consumir um nome de domínio privado em outra Conta da AWS. Dependendo da sua relação de confiança com o provedor de API, o AWS RAM pode concluir algumas tarefas para você.
Quando você está em uma Conta da AWS diferente da conta de um nome de domínio personalizado privado, só é possível associar o endpoint da VPC a um nome de domínio personalizado privado e invocá-lo. Não é possível visualizar a policy nem nenhum outro parâmetro do nome de domínio personalizado privado.
      Pré-requisitos
      Para consumir um nome de domínio personalizado privado em outra Conta da AWS, é necessário observar os seguintes pré-requisitos:
      
         
         
      - 
          Uma VPC e um endpoint da VPC para o serviço execute-api. A VPC deve terenableDnsHostnameseenableDnsSupportconfigurados comotrue.
 
- 
          Recomendamos configurar pelo menos duas zonas de disponibilidade por endpoint da VPC. 
 
     
      (Opcional) Aceite o compartilhamento de recursos do domínio personalizado privado
        Se o provedor de API usou o AWS RAM para criar um compartilhamento de recursos, você tem 12 horas para aceitá-lo. Se você estiver na mesma organização que está usando o AWS Organizations como provedor de API, o compartilhamento será aceito automaticamente. Se estiver em uma organização que tem recursos compartilhados automáticos habilitados, o recurso será compartilhado automaticamente com você.
      
        - AWS Management Console
- 
              Para usar o AWS Management Console, consulte Accepting and rejecting resource share invitations no Guia do usuário do AWS RAM.  
- AWS CLI
- Para encontrar todos os recursos compartilhados com você, use o comando get-resource-share-invitations indicado abaixo: - aws ram get-resource-share-invitations \
    --region us-west-2
 - Use o ARN de compartilhamento de recursos resultante para aceitar o convite de compartilhamento de recursos. O comando accept-resource-share-invitation a seguir aceita o compartilhamento de recursos. - aws ram accept-resource-share-invitation \
    --resource-share-invitation-arn arn:aws:ram:us-west-2:123456789012:resource-share-invitation/1e3477be-4a95-46b4-bbe0-c4001EXAMPLE \
    --region us-west-2
 
Associe o endpoint da VPC a um nome de domínio personalizado privado compartilhado
        Como os nomes de domínio personalizados privados não são exclusivos, você deve associar o endpoint da VPC ao ARN do nome de domínio personalizado exclusivo. Após a criação da associação de acesso ao nome de domínio, pode demorar até 15 minutos para que o endpoint da VPC invoque com sucesso o nome de domínio personalizado privado. Se você usa um endpoint da VPC para acessar um nome de domínio personalizado público, não o use para criar associações de acesso a nomes de domínio. 
      
        - AWS Management Console
- Como associar o endpoint da VPC a um nome de domínio personalizado privado compartilhado- Faça login no console do API Gateway em https://console.aws.amazon.com/apigateway. 
- 
              No painel de navegação principal, escolha Associações de acesso a nomes de domínio. 
- Escolha Criar uma associação de acesso ao nome de domínio. 
- 
                  Em ARN do nome de domínio, selecione o ARN do nome de domínio que o provedor de API compartilhou com você. O ARN do nome de domínio pode não aparecer na lista suspensa. Você pode usar o console do AWS RAM para visualizar os nomes de domínio compartilhados com você e, em seguida, copiar o ARN do nome de domínio e inseri-lo nesse campo. 
- 
                  Em IDs de endpoint da VPC, selecione o ID do endpoint da VPC com o qual você deseja formar a associação de acesso ao nome de domínio. 
- Escolha Criar uma associação de acesso ao nome de domínio. 
 
- AWS CLI
- Como os nomes de domínio personalizados privados não são exclusivos, você deve associar o endpoint da VPC ao ARN do nome de domínio personalizado exclusivo. Para localizar o ARN do nome de domínio, use um dos comandos a seguir. - 
            
               
               
            
                - AWS RAM
- 
                  Você pode usar o comando list-resources a seguir para visualizar os recursos que são compartilhados com você. Para usar esse comando, o provedor de API deve ter usado o AWS RAM para compartilhar o respectivo domínio personalizado privado com você. aws ram list-resources \
    --resource-owner OTHER-ACCOUNTS \
    --region us-west-2
    --resource-type apigateway:Domainnames
 
- API Gateway
- O comando - get-domain-namesa seguir lista todos os nomes de domínio personalizados privados pertencentes a outras Contas da AWS com as quais você pode formar associações de acesso a nomes de domínio.
 - aws apigateway get-domain-names \
    --resource-owner OTHER_ACCOUNTS \
    --region us-west-2
 
 
 
- 
                   Depois de recuperar o ARN, use o API Gateway para criar a associação de acesso ao nome de domínio entre o endpoint da VPC e um nome de domínio personalizado privado compartilhado. Use o seguinte comando create-domain-name-access-association:
 aws apigateway create-domain-name-access-association \
    --access-association-source-type VPCE \
    --access-association-source 'vpce-1a2b3c4d5e6f1a2b3' \
    --domain-name-arn arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234"
 A saída será exibida da seguinte forma: {
    "domainNameAccessAssociationARN": "arn:aws:apigateway:us-west-2:444455556666:/domainnameaccessassociations/domainname/private.example.com+abcd1234/vpcesource/vpce-abcd1234efg", 
    "accessAssociationSource": "vpce-1a2b3c4d5e6f1a2b3",
    "accessAssociationSourceType": "VPCE",
    "domainNameARN" : "arn:aws:apigateway:us-west-1:111122223333:/domainnames/private.example.com+a1b2c3"
}
 
 
Depois de associar o endpoint da VPC ao nome de domínio personalizado privado, confirme se o provedor de API atualizou a política do nome de domínio personalizado privado para permitir que seu endpoint da VPC invoque o nome de domínio. Para obter mais informações, consulte Permita que outras contas invoquem seu nome de domínio personalizado privado.
     
      Como criar uma zona hospedada no Route 53 
      Para resolver o nome de domínio personalizado privado, você precisa criar uma zona hospedada privada do Route 53. Zona hospedada é um contêiner que abriga informações sobre como você deseja rotear o tráfego para um domínio dentro de uma ou mais VPCs sem expor seus recursos à internet. Para obter mais informações, consulte Como trabalhar com zonas hospedadas privadas.
      
        - AWS Management Console
- 
            Para usar o AWS Management Console, consulte Creating a private hosted zone no Guia do desenvolvedor do Amazon Route 53. Em Name, use o nome do domínio personalizado privado. Em ID da VPC, use a VPC que contém o endpoint da VPC que você usou para a associação de acesso ao nome de domínio. 
- AWS CLI
- O comando create-hosted-zone indicado abaixo cria uma zona hospedada privada: - aws route53 create-hosted-zone --name private.example.com \
    --caller-reference 2014-04-01-18:47 \
    --hosted-zone-config Comment="command-line version",PrivateZone=true \
    --vpc VPCRegion=us-west-2,VPCId=vpc-abcd1234
 - A saída contém o ID da zona hospedada. Você usa o ID da zona hospedada nas etapas a seguir. 
Crie um registro de DNS A do Route 53. 
        Depois de criar a zona hospedada, crie um registro para resolver o domínio personalizado privado. Neste exemplo, você cria um tipo de registro A. Se estiver usando IPv6 para o endpoint da VPC, crie um tipo de registro AAAA. Se estiver usando pilha dupla para o endpoint da VPC, crie um registro do tipo AAAA e um do tipo A.
      
        - AWS Management Console
- 
            Para usar o AWS Management Console, consulte Routing traffic to an Amazon API Gateway API by using your domain name. Use Criação rápida e ative Alias. Para o endpoint, use o nome DNS do endpoint da VPC. 
- AWS CLI
- 
            Para configurar os registros de DNS para associar o nome de domínio personalizado privado ao nome de host do ID de zona hospedada fornecido, primeiro crie um arquivo JSON que contenha a configuração de um registro de DNS para o nome de domínio privado. O comando setup-dns-record.jsona seguir mostra como criar um registro de DNSApara associar um nome de domínio personalizado privado ao respectivo nome de host privado. Você fornece oDNSNamedo ID do DNS da VPC e o ID da zona hospedada que você criou na etapa anterior.
 {
  "Changes": [
    {
      "Action": "UPSERT",
      "ResourceRecordSet": {
        "Name": "private.example.com",
        "Type": "A",
        "AliasTarget": {
          "DNSName": "vpce-abcd1234.execute-api.us-west-2.vpce.amazonaws.com",
          "HostedZoneId": "Z2OJLYMUO9EFXC",
          "EvaluateTargetHealth": false
        }
      }
    }
  ]
}
 O comando change-resource-record-sets indicado abaixo cria um registro de DNS para o nome de domínio personalizado privado: aws route53 change-resource-record-sets \
    --hosted-zone-id ZABCDEFG1234 \
    --change-batch file://path/to/your/setup-dns-record.json
 Substitua hosted-zone-idpelo ID da zona hospedada do Route 53 do conjunto de registros DNS na conta. O valor do parâmetrochange-batchaponta para um arquivo JSON.
 
Próximas etapas para um consumidor de API 
      Agora você pode invocar a API privada em sua Conta da AWS. Na VPC, você pode usar o comando curl a seguir para acessar o nome de domínio personalizado privado.
 
      curl https://private.example.com/v1
      Para ter mais informações sobre outras formas de invocar sua API privada, consulte Invocar uma API privada usando um nome de domínio personalizado.