Consumatore di API: associazione dell'endpoint VPC a un nome di dominio personalizzato privato condiviso - Amazon API Gateway

Consumatore di API: associazione dell'endpoint VPC a un nome di dominio personalizzato privato condiviso

La procedura seguente mostra come utilizzare un nome di dominio privato in un altro Account AWS. A seconda della tua relazione di trust con il provider di API, è possibile che AWS RAM completi automaticamente alcune attività.

Quando utilizzi un Account AWS diverso da un nome di dominio personalizzato privato, puoi solo associare il tuo endpoint VPC a un nome di dominio personalizzato privato e invocarlo. Non puoi visualizzare la policy o qualsiasi altro parametro del nome di dominio personalizzato privato.

Prerequisiti

Di seguito sono elencati i prerequisiti necessari per utilizzare un nome di dominio personalizzato privato in un altro Account AWS:

  • Un VPC e un endpoint VPC per il servizio execute-api. Per il VPC, è necessario che enableDnsHostnames e enableDnsSupport siano impostati su true.

  • È consigliabile configurare almeno due zone di disponibilità per endpoint VPC.

(Facoltativo) Accettare la condivisione di risorse del dominio personalizzato privato

Se il provider di API ha utilizzato AWS RAM per creare una condivisione di risorse, hai 12 ore di tempo per accettarla. Se fai parte della stessa organizzazione del provider di API tramite AWS Organizations, la condivisione viene accettata automaticamente. Se fai parte di un'organizzazione in cui è abilitata la condivisione automatica delle risorse, la risorsa viene condivisa automaticamente con te.

AWS Management Console

Per utilizzare la AWS Management Console, consulta Accepting and rejecting resource share invitations nella Guida per l'utente di AWS RAM.

AWS CLI

Per trovare tutte le risorse condivise con te, usa il seguente comando get-resource-share-invitations:

aws ram get-resource-share-invitations \ --region us-west-2

Utilizza l'ARN di condivisione risorse risultante per accettare l'invito alla condivisione di risorse. Il seguente comando accept-resource-share-invitation accetta la condivisione di risorse.

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

Associazione dell'endpoint VPC a un nome di dominio personalizzato privato condiviso

Poiché i nomi di dominio personalizzati privati non sono univoci, devi associare il tuo endpoint VPC all'ARN del nome di dominio personalizzato univoco. Dopo aver creato l'associazione di accesso al nome di dominio, possono essere necessari fino a 15 minuti prima che l'endpoint VPC invochi correttamente il nome di dominio personalizzato privato. Se disponi di un endpoint VPC che utilizzi per accedere a un nome di dominio personalizzato pubblico, non utilizzarlo per creare associazioni di accesso a nomi di dominio.

AWS Management Console
Per associare l'endpoint VPC a un nome di dominio personalizzato privato condiviso
  1. Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway.

  2. Nel pannello di navigazione principale, scegli Associazioni di accesso ai nomi di dominio.

  3. Scegli Crea associazione di accesso al nome di dominio.

  4. Per ARN del nome di dominio, seleziona l'ARN del nome di dominio che il provider di API ha condiviso con te.

    L'ARN del nome di dominio potrebbe non essere visualizzato nell'elenco a discesa. Puoi utilizzare la console AWS RAM per visualizzare i nomi di dominio condivisi con te, quindi copiare l'ARN del nome di dominio e inserirlo in questo campo.

  5. Per ID endpoint VPC, seleziona l'ID endpoint VPC con cui desideri creare l'associazione di accesso al nome di dominio.

  6. Scegli Crea associazione di accesso al nome di dominio.

AWS CLI

Poiché i nomi di dominio personalizzati privati non sono univoci, devi associare il tuo endpoint VPC all'ARN del nome di dominio personalizzato univoco. Per trovare l'ARN del nome di dominio, utilizza uno dei comandi seguenti.

  1. AWS RAM

    Il seguente comando list-resources elenca le risorse condivise con te. Per utilizzare questo comando, è necessario che il provider di API abbia utilizzato AWS RAM per condividere con te il proprio dominio personalizzato privato.

    aws ram list-resources \ --resource-owner OTHER-ACCOUNTS \ --region us-west-2 --resource-type apigateway:Domainnames
    API Gateway

    Il seguente comando get-domain-names elenca tutti i nomi di dominio personalizzati privati appartenenti ad altri Account AWS con cui puoi creare associazioni di accesso ai nomi di dominio.

    aws apigateway get-domain-names \ --resource-owner OTHER_ACCOUNTS \ --region us-west-2
  2. Dopo aver recuperato l'ARN, utilizza Gateway API per creare l'associazione di accesso al nome di dominio tra l'endpoint VPC e un nome di dominio personalizzato privato condiviso. Utilizza il seguente 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"

    L'output sarà simile al seguente.

    { "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" }

Dopo aver associato il tuo endpoint VPC al nome di dominio personalizzato privato, verifica che il tuo provider di API abbia aggiornato la policy del proprio nome di dominio personalizzato privato per consentire al tuo endpoint VPC di invocare il suo nome di dominio. Per ulteriori informazioni, consulta Consentire ad altri account di invocare il nome di dominio personalizzato privato.

Creazione di una zona ospitata Route 53

Per risolvere il nome di dominio personalizzato privato, devi creare una zona ospitata privata Route 53. Una zona ospitata è un container che contiene informazioni su come instradare il traffico per un dominio all'interno di uno o più VPC senza esporre le risorse su Internet. Per ulteriori informazioni, consulta Utilizzo delle zone ospitate private.

AWS Management Console

Per utilizzare la AWS Management Console, consulta Creating a private hosted zone nella Guida per gli sviluppatori di Amazon Route 53.

Per Nome, usa il nome di dominio personalizzato privato. Per ID VPC, usa il VPC contenente l'endpoint VPC che hai usato per l'associazione di accesso al nome di dominio.

AWS CLI

Il seguente comando create-hosted-zone crea una zona ospitata privata:

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

L'output contiene l'ID della zona ospitata. L'ID della zona ospitata viene utilizzato nei passaggi seguenti.

Creazione di un record DNS di Route 53

Dopo aver creato la zona ospitata, devi creare un record per risolvere il dominio personalizzato privato. In questo esempio viene creato un tipo di record A. Se utilizzi IPv6 per il tuo endpoint VPC, crea un tipo di record AAAA. Se utilizzi dualstack per il tuo endpoint VPC, crea un tipo di record sia AAAA che A.

AWS Management Console

Per utilizzare la AWS Management Console, consulta Routing traffic to an Amazon API Gateway API by using your domain name.

Usa Creazione rapida e attiva Alias. Per l'endpoint, utilizza il nome DNS dell'endpoint VPC.

AWS CLI

Per configurare i record DNS in modo da mappare il nome di dominio personalizzato privato al relativo nome host dell'ID della zona ospitata, devi prima creare un file JSON contenente la configurazione per configurare un record DNS per il nome di dominio privato.

Il seguente setup-dns-record.json mostra come creare un record A DNS per mappare un nome di dominio personalizzato privato al relativo nome host privato. Fornisci il DNSName del tuo ID DNS VPC e l'ID della zona ospitata che hai creato nel passaggio precedente.

{ "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 } } } ] }

Il seguente comando change-resource-record-sets crea un record DNS per il nome di dominio personalizzato privato:

aws route53 change-resource-record-sets \ --hosted-zone-id ZABCDEFG1234 \ --change-batch file://path/to/your/setup-dns-record.json

Sostituisci hosted-zone-id con l'ID della zona ospitata di Route 53 del record DNS impostato nel tuo account. Il valore del parametro change-batch punta a un file JSON.

Passaggi successivi per un consumatore di API

Ora puoi invocare l'API privata nel tuo Account AWS. Nel tuo VPC, puoi usare il seguente comando curl per accedere al tuo nome di dominio personalizzato privato.

curl https://private.example.com/v1

Per ulteriori informazioni su altri modi per invocare la tua API privata, consulta Invocazione di un'API privata utilizzando un nome di dominio personalizzato.