API-Verbraucher: Zuweisung Ihres VPC-Endpunkts zu einem mit Ihnen gemeinsam genutzten privaten benutzerdefinierten Domainnamen - Amazon API Gateway

API-Verbraucher: Zuweisung Ihres VPC-Endpunkts zu einem mit Ihnen gemeinsam genutzten privaten benutzerdefinierten Domainnamen

In den folgenden Schritten sehen Sie, wie Sie einen privaten Domänennamen in einem anderen AWS-Konto verbrauchen. Abhängig von Ihrer Vertrauensbeziehung mit dem API-Anbieter kann AWS RAM evtl. einige der Aufgaben für Sie erledigen.

Wenn Sie aus einem anderen privaten benutzerdefinierten Domainnamen heraus mit einem AWS-Konto verbinden, können Sie Ihren VPC-Endpunkt nur einem privaten benutzerdefinierten Domainnamen zuweisen und ihn aufrufen. Sie können die policy oder andere Parameter des privaten benutzerdefinierten Domainnamens nicht anzeigen.

Voraussetzungen

Die folgenden Voraussetzungen sind erforderlich, um einen privaten benutzerdefinierten Domainnamen in einem anderen AWS-Konto zu verbrauchen:

  • VPC und VPC-Endpunkt für den execute-api-Service erstellen. In Ihrem VPC muss enableDnsHostnames und enableDnsSupport auf true gesetzt sein.

  • Wir empfehlen, mindestens zwei Verfügbarkeitszonen für jeden VPC-Endpunkt zu konfigurieren.

(Optional) Akzeptieren Sie die Ressourcenfreigabe für die private benutzerdefinierte Domain

Wenn Ihr API-Anbieter AWS RAM zur Erstellung einer Ressourcenfreigabe verwendet hat, haben Sie 12 Stunden Zeit, diese zu akzeptieren. Wenn Sie derselben Organisation angehören, und AWS Organizations als API-Anbieter verwenden, wird die Freigabe automatisch akzeptiert. Wenn Sie einer Organisation angehören, in der die automatische Ressourcenfreigabe aktiviert ist, wird die Ressource automatisch für Sie freigegeben.

AWS Management Console

Weitere Informationen zur Verwendung der AWS Management Console finden Sie unter Annehmen und Ablehnen von Einladungen zur Ressourcenfreigabe im AWS RAM-Benutzerhandbuch.

AWS CLI

Mithilfe des Befehls get-resource-share-invitations finden Sie alle mit Ihnen geteilten Ressourcenfreigaben:

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

Verwenden Sie den resultierenden Ressourcenfreigabe-ARN, um die Einladung zur Ressourcenfreigabe anzunehmen. Der Befehl accept-resource-share-invitation akzeptiert die Ressourcenfreigabe.

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

Zuweisung Ihres VPC-Endpunkts zu einem mit Ihnen gemeinsam genutzten privaten benutzerdefinierten Domainnamen

Da private benutzerdefinierte Domainnamen nicht eindeutig sind, verknüpfen Sie Ihren VPC-Endpunkt mit dem eindeutigen benutzerdefinierten Domainnamen-ARN. Nachdem Sie Ihre Domainnamenzugriffszuweisung erstellt haben, kann es bis zu 15 Minuten dauern, bis Ihr VPC-Endpunkt Ihren privaten benutzerdefinierten Domänennamen erfolgreich aufruft. Wenn Sie über einen VPC-Endpunkt verfügen, den Sie für den Zugriff auf einen öffentlichen benutzerdefinierten Domainnamen verwenden, sollten Sie diesen nicht zur Erstellung einer Domainnamenzugriffszuweisung verwenden.

AWS Management Console
So verknüpfen Sie Ihren VPC-Endpunkt mit einem gemeinsam genutzten privaten benutzerdefinierten Domainnamen
  1. Melden Sie sich bei der API-Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Klicken Sie im Hauptnavigationsbereich auf Domainnamenzugriffszuweisungen.

  3. Klicken Sie auf Domainnamenzugriffszuweisung erstellen.

  4. Für Domainnamen-ARN wählen Sie den Domainnamen-ARN aus, den der API-Anbieter mit Ihnen geteilt hat.

    Der Domänennamen-ARN erscheint möglicherweise nicht in der Dropdown-Liste. Sie können die AWS RAM-Konsole verwenden, um Domainnamen anzuzeigen, die mit Ihnen geteilt wurden, und dann den Domainnamen-ARN kopieren und in dieses Feld eingeben.

  5. Wählen Sie für VPC-Endpunkt-ID die VPC-Endpunkt-ID aus, mit der Sie die Domainnamenzugriffszuweisung bilden möchten.

  6. Klicken Sie auf Domainnamenzugriffszuweisung erstellen.

AWS CLI

Da private benutzerdefinierte Domainnamen nicht eindeutig sind, verknüpfen Sie Ihren VPC-Endpunkt mit dem eindeutigen benutzerdefinierten Domainnamen-ARN. Verwenden Sie einen der folgenden Befehle, um den Domänennamen-ARN zu finden.

  1. AWS RAM

    Der Befehl list-resources listet Ressourcen auf, die mit Ihnen gemeinsam genutzt werden. Um diesen Befehl verwenden zu können, muss der API-Anbieter AWS RAM verwendet haben, um seine private benutzerdefinierte Domain mit Ihnen zu teilen.

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

    Der Befehl get-domain-names listet alle privaten benutzerdefinierten Domainnamen auf, die anderen AWS-Konten gehören und mit denen Sie Domainnamenzugriffszuweisungen bilden können.

    aws apigateway get-domain-names \ --resource-owner OTHER_ACCOUNTS \ --region us-west-2
  2. Nachdem Sie den ARN abgerufen haben, verwenden Sie API Gateway, um die Domainnamenzugriffszuweisung zwischen Ihrem VPC-Endpunkt und einem gemeinsam genutzten privaten benutzerdefinierten Domainnamen zu bilden. Verwenden Sie den folgenden create-domain-name-access-association-Befehl:

    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"

    Die Ausgabe sieht wie folgt aus:

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

Nachdem Sie Ihren VPC-Endpunkt mit dem privaten benutzerdefinierten Domainnamen verknüpft haben, vergewissern Sie sich, dass Ihr API-Anbieter die Richtlinie für seinen privaten benutzerdefinierten Domainnamen aktualisiert hat, sodass Ihr VPC-Endpunkt seinen Domainnamen aufrufen kann. Weitere Informationen finden Sie unter Anderen Konten Aufrufberechtigungen für Ihren privaten benutzerdefinierten Domainnamen gewähren.

Erstellen einer von Route 53 gehosteten Zone

Sie müssen zunächst eine private gehostete Route 53-Zone erstellen, um den privaten benutzerdefinierten Domainnamen auflösen zu können. Eine gehostete Zone ist ein Container mit Informationen darüber, wie Sie Datenverkehr zu einer Domain innerhalb einer oder mehrerer VPCs weiterleiten möchten, ohne die Ressource über das Internet zugreifbar zu machen. Weitere Informationen finden Sie unter Arbeiten mit privat gehosteten Zonen.

AWS Management Console

Informationen zur Verwendung von AWS Management Console finden Sie unter Erstellen einer privat gehosteten Zone im Amazon-Route 53-Entwicklerhandbuch.

Geben Sie unter Name den Namen des privaten benutzerdefinierten Domainnamens an. Verwenden Sie für VPC-ID die VPC, die den VPC-Endpunkt enthält, den Sie für Ihre Domainnamenzugriffszuweisung verwendet haben.

AWS CLI

Der Befehl create-hosted-zone erstellt eine private gehostete Zone:

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

Die Ausgabe enthält die ID der gehosteten Zone. Die ID der gehosteten Zone brauchen Sie für die nachfolgenden Schritte.

Erstellen eines Route 53-DNS-Datensatzes

Nachdem Sie die gehostete Zone erstellt haben, erstellen Sie einen Datensatz, mit dem Sie die private benutzerdefinierte Domäne auflösen. In diesem Beispiel erstellen Sie einen A-Datensatztyp. Wenn Sie IPv6 für Ihren VPC-Endpunkt verwenden, erstellen Sie einen AAAA-Datensatztyp. Wenn Sie Dualstack für Ihren VPC-Endpunkt verwenden, erstellen Sie sowohl einen AAAA- als auch einen A-Datensatztyp.

AWS Management Console

Informationen zur Verwendung der AWS Management Console finden Sie unter Weiterleiten des Datenverkehrs zu einer Amazon-API-Gateway-API mithilfe des Domainnamens.

Verwenden Sie die Funktion Schnellerstellung und aktivieren Sie Alias. Für Endpunkt nehmen Sie den DNS-Namen des VPC-Endpunkts.

AWS CLI

Wenn Sie Ihre DNS-Datensätze so konfigurieren möchten, dass der private benutzerdefinierte Domainname dem Hostnamen der vorgegebenen gehosteten Zonen-ID zugewiesen wird, erstellen Sie zunächst eine JSON-Datei, die die Konfiguration für die Einrichtung eines DNS-Datensatzes für den privaten Domainnamen enthält.

Im Folgenden setup-dns-record.json wird gezeigt, wie Sie einen DNSA-Datensatz erstellen, um einen privaten benutzerdefinierten Domainnamen seinem privaten Hostnamen zuzuweisen. Sie geben den DNSName Ihrer VPC-DNS-ID und die Hosting-Zonen-ID an, die Sie oben erstellt haben.

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

Der Befehl change-resource-record-sets erstellt einen DNS-Datensatz für den privaten benutzerdefinierten Domainnamen:

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

Ersetzen Sie die hosted-zone-id durch die Route-53-Hosted-Zone-ID des DNS-Datensatzes, die in Ihrem Konto eingerichtet wurde. Derchange-batch-Parameterwert verweist auf eine JSON-Datei.

Nächste Schritte für einen API-Verbraucher

Sie können die private API jetzt in Ihrem eigenen AWS-Konto aufrufen. Verwenden Sie in Ihrer VPC den folgenden curl-Befehl, um auf Ihren privaten benutzerdefinierten Domainnamen zuzugreifen.

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

Weitere Informationen zu anderen Möglichkeiten Ihre private API aufzurufen, finden Sie unter Aufrufen einer privaten API mithilfe eines benutzerdefinierten Domainnamens.