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

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

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

Ü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 AWS RAM zu verwenden, finden Sie unter API-Anbieter: Geben Sie Ihren privaten benutzerdefinierten Domänennamen über das API-Gateway-AWS CLI frei.

  • Private benutzerdefinierte Domainnamen werden auf der AWS-Region-Ebene geteilt. 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 sich der API-Verbraucher und der API-Anbieter in derselben Organisation befinden und diese AWS Organizations verwendet, wird die gemeinsame Ressourcennutzung automatisch akzeptiert. Sie müssen jedoch trotzdem mithilfe von AWS RAM eine Ressourcenfreigabe erstellen.

  • Wenn sich der API-Verbraucher und der API-Anbieter in derselben Organisation befinden und diese AWS Organizations verwendet, und die gemeinsame Ressourcennutzung innerhalb Ihrer Organisation ist aktiviert, wird allen Prinzipalen in der Organisation, mit denen Sie die Ressource nutzen, automatisch Zugriff auf die Ressourcenfreigaben gewährt. 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, aktualisiert AWS RAM die managementPolicy für den Amazon-API-Gateway-Management-Dienst für Ihren privaten benutzerdefinierten Domainnamen, um den Zugriff für Prinzipale 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", "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" } } } ] }

    AWS RAM hat verhindert, dass Prinzipale ohne expliziten allow-Zugriff Zugriffszuweisungen mit Ihrem privaten benutzerdefinierten Domainnamen erstellen können, indem Folgendes hinzugefügt wurde:

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

    Sie können weiterhin den Prinzipal in dem AWS-Konto verwenden, der den privaten benutzerdefinierten Domainnamen für Domainnamenzuweisungszuweisungen erstellt hat.

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

Zunächst gewähren Sie einem anderen AWS-Konto Zugriff, um Domainnamenzugriffszuweisungen für Ihrem privaten benutzerdefinierten Domainnamen zu erstellen.

AWS Management Console

Siehe Erstellen einer Ressourcenfreigabe im AWS RAM-Benutzerhandbuch, zur Verwendung der AWS Management Console.

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 einem anderen AWS-Konto Zugriff gewährt haben, müssen API-Verbraucher in diesem Konto eine Domainnamenzugriffszuweisung 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 Management Console
VPC-Endpunkten in anderen Konten Zugriff auf Ihren privaten benutzerdefinierten Domainnamen gewähren
  1. Melden Sie sich bei der API-Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Klicken Sie im Hauptnavigationsbereich auf Benutzerdefinierte Domainnamen.

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

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