View a markdown version of this page

API-Anbieter: Teilen Sie Ihren privaten benutzerdefinierten Domainnamen mit AWS RAM - Amazon API Gateway

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

API-Anbieter: Teilen Sie Ihren privaten benutzerdefinierten Domainnamen mit AWS RAM

Sie können API-Verbrauchern auch in anderen Bereichen AWS-Konten Zugriff auf Ihren privaten benutzerdefinierten Domainnamen gewähren. In diesem Abschnitt erfahren Sie, wie Sie Ihren privaten benutzerdefinierten Domainnamen mit anderen teilen AWS RAM und wie Sie den Zugriff auf Ihren privaten benutzerdefinierten Domainnamen kontrollieren können.

Überlegungen zur Weitergabe Ihres privaten benutzerdefinierten Domainnamens

Die folgenden Überlegungen können sich darauf auswirken, wie Sie mithilfe von. Zugriff auf Ihren privaten benutzerdefinierten Domainnamen mithilfe von AWS RAM gewähren. Informationen dazu, wie Sie Ihren privaten benutzerdefinierten Domainnamen teilen können, ohne ihn zu verwenden AWS RAM, finden Sie unterAPI-Anbieter: Teilen Sie Ihren privaten benutzerdefinierten Domainnamen mithilfe des API-Gateways AWS CLI.

  • Private benutzerdefinierte Domainnamen werden auf dieser AWS-Region Ebene gemeinsam genutzt. Der private benutzerdefinierte Domainname und der VPC-Endpunkt müssen sich in derselben AWS-Region befinden.

  • Sie können eine einzelne Ressourcenfreigabe für mehrere Prinzipale verwenden und weitere Prinzipale hinzufügen, nachdem Sie die Ressourcenfreigabe erstellt haben. Wir empfehlen, dass Sie Ihre Ressourcenfreigabe nach Möglichkeit wiederverwenden.

  • Sie müssen jedes Mal dem VPC-Endpunkt des API-Verbrauchers Zugriff gewähren, um Ihren privaten benutzerdefinierten Domainnamen und alle ihm zugewiesenen privaten APIs aufrufen zu können.

  • Wenn der API-Verbraucher und der API-Anbieter derselben Organisation angehören, die sie verwendet AWS Organizations, wird die gemeinsame Nutzung der Ressourcen automatisch akzeptiert. Sie müssen jedoch trotzdem mithilfe von AWS RAM eine Ressourcenfreigabe erstellen.

  • Wenn der API-Nutzer und der API-Anbieter derselben Organisation angehören AWS Organizations und die gemeinsame Nutzung von Ressourcen innerhalb Ihrer Organisation aktiviert ist, erhalten alle Principals in der Organisation, mit der Sie die Ressourcen teilen, automatisch Zugriff auf die Ressourcenfreigaben. Es ist keine Einladung erforderlich und Sie können die gemeinsame Ressourcennutzung überspringen.

  • Wenn der API-Verbraucher die gemeinsame Ressourcennutzung nicht innerhalb von 12 Stunden akzeptiert, muss der API-Anbieter die Ressource erneut teilen.

  • Nachdem Sie die Ressourcenfreigabe erstellt haben, AWS RAM aktualisiert die Option managementPolicy für den Amazon API Gateway Management Service für Ihren privaten benutzerdefinierten Domainnamen, um den Zugriff von Principals ohne expliziten allow Zugriff zu verhindern. Weitere Informationen finden Sie unter Ermitteln, ob eine Anforderung innerhalb eines Kontos zugelassen oder verweigert wird im IAM-Benutzerhandbuch.

    Die aktualisierte managementPolicy wird wie folgt aussehen:

    JSON
    { "Version":"2012-10-17", "Id": "abcd1234-1234-abcd-abcd-1234abcdefg", "Statement": [ { "Sid": "APIGatewayPrivateDomainNameManagementPolicyDefaultPermission-org", "Effect": "Allow", "Principal": "*", "Action": "apigateway:CreateAccessAssociation", "Resource": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-1234abcd" }, "StringNotEquals": { "aws:PrincipalAccount": "111122223333" } } } ] }

    AWS RAM hat verhindert, dass Principals ohne expliziten allow Zugriff Zugriffszuordnungen zu Ihrem privaten benutzerdefinierten Domainnamen erstellen, indem Folgendes hinzugefügt wurde:

    "StringNotEquals": { "aws:PrincipalAccount": "111122223333" }

    Sie können weiterhin den Principal in AWS-Konto Wer hat den privaten benutzerdefinierten Domainnamen erstellt verwenden, um Domänennamenzugriffszuordnungen zu erstellen.

Anderen Konten erlauben, Domainnamenzugriffszuweisungen mit Ihrem privaten benutzerdefinierten Domainnamen zu erstellen

Zunächst gewähren Sie einem anderen Benutzer Zugriff, AWS-Konto um Verknüpfungen zwischen Domainnamen und Ihrem privaten benutzerdefinierten Domainnamen zu erstellen.

AWS-Managementkonsole

Informationen zur AWS-Managementkonsole Verwendung finden Sie AWS RAM im AWS RAM Benutzerhandbuch unter Erstellen einer Ressourcenfreigabe.

Wählen Sie unter Ressourcentyp auswählen die Option Private benutzerdefinierte API-Gateway-Domains aus.

AWS CLI

Mit dem Befehl create-resource-share wird eine Ressourcenfreigabe für Ihren privaten benutzerdefinierten Domainnamen erstellt. Es kann einige Minuten dauern, bis die Ressourcen- und Prinzipal-Zuordnungen abgeschlossen ist. Geben Sie für Prinzipale eine Konto-ID oder eine Organisations-ID an (z. B. arn:aws:organizations::123456789012:organization/o-1234abcd). Sie können mehrere Prinzipale für Ihre Ressourcenfreigabe angeben.

aws ram create-resource-share \ --region us-west-2 \ --name privateCustomDomain-resource-share \ --permission-arns arn:aws:ram::aws:permission/APIGatewayPrivateDomainNameManagementPolicyDefaultPermission \ --resource-arns arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234 \ --principals 222222222222

Nachdem Sie Zugriff auf ein anderes Konto gewährt haben AWS-Konto, müssen die API-Nutzer in diesem Konto eine Verknüpfung für den Zugriff auf Domainnamen zwischen ihrem VPC-Endpunkt und Ihrem privaten benutzerdefinierten Domainnamen erstellen. Diese Domainnamenzugriffszuweisung können Sie nicht für andere erstellen. Weitere Informationen finden Sie unter Zuweisung Ihres VPC-Endpunkts zu einem mit Ihnen gemeinsam genutzten privaten benutzerdefinierten Domainnamen.

Anderen Konten Aufrufberechtigungen für Ihren privaten benutzerdefinierten Domainnamen gewähren

Als Nächstes gewähren Sie dem VPC-Endpunkt des API-Verbrauchers Zugriff, um Ihren privaten benutzerdefinierten Domainnamen und alle ihm zugewiesenen privaten APIs aufrufen zu können.

AWS-Managementkonsole
VPC-Endpunkten in anderen Konten Zugriff auf Ihren privaten benutzerdefinierten Domainnamen gewähren
  1. Melden Sie sich bei der API Gateway-Konsole unter an https://console.aws.amazon.com/apigateway.

  2. Klicken Sie im Hauptnavigationsbereich auf Benutzerdefinierte Domainnamen.

  3. Wählen Sie den privaten benutzerdefinierten Domainnamen, den Sie mit anderen geteilt haben AWS-Konten.

  4. Klicken Sie auf der Registerkarte Ressourcenrichtlinie auf Ressourcenrichtlinie bearbeiten.

  5. Fügen Sie die VPC-Endpunkt-ID des API-Verbrauchers zu Ihrer Ressourcenrichtlinie hinzu.

    Sie finden die VPC-Endpunkt-ID des API-Verbrauchers im Abschnitt Domainnamenzugriffszuweisungen auf der Registerkarte Ressourcenfreigabe auf der Seite mit den Domaindetails Ihres privaten benutzerdefinierten Domainnamens.

  6. Klicken Sie auf Änderungen speichern.

AWS CLI

Die folgende policy für den execute-api-Service ermöglicht eingehenden Datenverkehr zu einem privaten benutzerdefinierten Domainnamen vom VPC-Endpunkt vpce-abcd1234efg und vpce-xyz000abc.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ] }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ], "Condition" : { "StringNotEquals": { "aws:SourceVpce": [ "vpce-abcd1234", "vpce-xyzz0000" ] } } } ] }

Der Befehl update-domain-name verwendet einen Patch-Vorgang, um den policy für einen privaten benutzerdefinierten Domainnamen zu aktualisieren:

aws apigateway update-domain-name --domain-name private.example.com \ --domain-name-id abcd1234 \ --patch-operations op=replace,path=/policy,value='"{\"Version\": \"2012-10-17\",\"Statement\": [{\"Effect\": \"Allow\",\"Principal\": \"*\",\"Action\": \"execute-api:Invoke\",\"Resource\":[\"execute-api:/*\"]},{\"Effect\": \"Deny\",\"Principal\": \"*\",\"Action\": \"execute-api:Invoke\",\"Resource\":[\"execute-api:/*\"],\"Condition\":{\"StringNotEquals\":[\"vpce-abcd1234efg\", \"vpce-xyz000abc\"]}}}]}"