View a markdown version of this page

API-Anbieter: Teilen Sie Ihren privaten benutzerdefinierten Domainnamen mithilfe des API-Gateways AWS CLI - 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 mithilfe des API-Gateways AWS CLI

Sie können mithilfe des API-Gateways einen privaten benutzerdefinierten Domainnamen teilen. Wir empfehlen jedoch AWS CLI, diesen AWS RAM zu verwenden, um Ihren Betriebsaufwand zu reduzieren. Anweisungen AWS RAM zum Teilen Ihres privaten benutzerdefinierten Domainnamens finden Sie unterAPI-Anbieter: Teilen Sie Ihren privaten benutzerdefinierten Domainnamen mit AWS RAM.

Um einen privaten benutzerdefinierten Domainnamen mithilfe des API-Gateways zu teilen AWS CLI, gewähren Sie anderen AWS-Konten Zugriff, um Domainnamen-Zugriffszuordnungen zu erstellen und Ihren privaten benutzerdefinierten Domainnamen aufzurufen. Hierzu aktualisieren Sie diemanagementPolicy für den API-Gateway-Management-Dienst und die policy für den execute-api-Dienst Ihres privaten benutzerdefinierten Domainnamens. Sie müssen außerdem dem VPC-Endpunkt des API-Verbrauchers Zugriff in der Ressourcenrichtlinie gewähren, um Ihren privaten benutzerdefinierten Domainnamen und alle ihm zugewiesenen privaten APIs aufrufen zu können.

Der API-Verbraucher muss trotzdem eine Domainnamenzugriffszuweisung zwischen dem eigenen VPC-Endpunkt und Ihrem privaten benutzerdefinierten Domainnamen erstellen. Das können Sie nicht von Ihrer Seite aus tun.

Zugriff auf Ihren privaten benutzerdefinierten Domainnamen gewähren

So gewähren Sie Zugriff auf Ihren privaten benutzerdefinierten Domainnamen
  1. Erstellen Sie eine JSON-Datei mit dem Patch-Vorgang zur Aktualisierung der Richtlinie, um die managementPolicy für den API-Gateway-Management-Dienste zu aktualisieren. Im Folgenden patch-managementPolicy.json wird die aktuelle Richtlinie durch eine Beispielrichtlinie ersetzt, die AWS-Konten 111122223333 und 444455556666 Zugriff gewährt, um Zuordnungen für den Domainnamen-Zugriff managementPolicy mit dem privaten benutzerdefinierten Domainnamen zu erstellen. private.example.com

    [{ "op": "replace", "path": "/managementPolicy", "value": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"arn:aws:iam::111122223333:root\", \"arn:aws:iam::444455556666:root\"]},\"Action\":\"apigateway:CreateAccessAssociation\",\"Resource\":\"arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234\"}]}" }]

    Der Befehl update-domain-name aktualisiert die managementPolicy mithilfe der Datei patch-managementPolicy.json.

    aws apigateway update-domain-name \ --domain-name private.example.com \ --domain-name-id abcd1234 \ --patch-operations file://patch-managementPolicy.json

    Sobald Sie den Zugriff gewährt haben, müssen Sie den API-Verbraucher informieren, dass er die Domainnamenzugriffszuweisung erstellen kann. Wenn Sie verwenden, wird dieser Schritt für Sie ausgeführt. AWS RAM AWS RAM

  2. Erstellen Sie eine JSON-Datei mit dem Patch-Vorgang zur Aktualisierung der Richtlinie, um die policy für den execute-api-Dienst zu aktualisieren. Die patch-policy.json ersetzt die aktuelle policy durch eine Beispielrichtlinie, die zwei VPC-Endpunkten das Aufrufen des privaten benutzerdefinierten Domainnamens private.example.com gewährt.

    [{ "op": "replace", "path": "/policy", "value": "{\"Version\": \"2012-10-17\",\"Statement\": [{\"Effect\": \"Allow\",\"Principal\": \"*\",\"Action\": \"execute-api:Invoke\",\"Resource\": \"arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.example.com+abcd1234\"},{\"Effect\": \"Deny\",\"Principal\": \"*\",\"Action\": \"execute-api:Invoke\",\"Resource\": \"arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.example.com+abcd1234\",\"Condition\": {\"StringNotEquals\": {\"aws:SourceVpce\": [\"vpce-abcd1234\",\"vpce-xyzz0000\"]}}}]}" }]

    Verwenden Sie den Befehl update-domain-name, um die policy mithilfe der Datei patch-policy.json zu aktualisieren.

    aws apigateway update-domain-name \ --domain-name private.example.com \ --domain-name-id abcd1234 \ --patch-operations file://patch-policy.json

Zugriff auf Ihren privaten benutzerdefinierten Domainnamen verweigern

Wenn Sie die Weitergabe Ihres privaten benutzerdefinierten Domainnamens beenden möchten, müssen Sie die Domainnamenzugriffszuweisungen zwischen Ihrem privaten benutzerdefinierten Domainnamen und dem VPC-Endpunkt des API-Verbrauchers zurückweisen.

So lehnen Sie den Zugriff auf Ihren privaten benutzerdefinierten Domainnamen ab
  1. Der Befehl reject-domain-name-access-association weist die Domainnamenzugriffszuweisung ab.

    aws apigateway reject-domain-name-access-association \ --domain-name-access-association-arn arn:aws:apigateway:us-west-2:444455556666:/domainnameaccessassociations/domainname/private.example.com+abcd1234/vpcesource/vpce-abcd1234 \ --domain-name-arn arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234
  2. Ändern Sie die Datei patch-managementPolicy.json, um den Zugriff für das Konto des API-Anbieters zu entfernen, damit keine Domainnamenzugriffszuweisung mit Ihrem privaten benutzerdefinierten Domainnamen erstellt werden kann. Die Datei patch-managementPolicy.json entfernt ein Konto aus der managementPolicy:

    [{ "op": "replace", "path": "/managementPolicy", "value": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"apigateway:CreateAccessAssociation\",\"Resource\":\"arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234\"}]}" }]

    Der Befehl update-domain-name aktualisiert die managementPolicy mithilfe der Datei patch-managementPolicy.json.

    aws apigateway update-domain-name \ --domain-name private.example.com \ --domain-name-id abcd1234 \ --patch-operations file://patch-managementPolicy.json
  3. Bearbeiten Sie die Datei patch-policy.json, um den Zugriff für den VPC-Endpunkt des API-Anbieters zu entfernen und den Aufruf Ihres privaten benutzerdefinierten Domainnamens zu unterbinden. Die patch-policy.json entfernt die VPC-Endpunkt-ID aus der policy:

    [{ "op": "replace", "path": "/policy", "value": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"execute-api:Invoke\",\"Resource\":\"arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.example.com+abcd1234\"},{\"Effect\":\"Deny\",\"Principal\":\"*\",\"Action\":\"execute-api:Invoke\",\"Resource\":\"arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.example.com+abcd1234\",\"Condition\":{\"StringNotEquals\":{\"aws:SourceVpce\":\"vpce-abcd1234\"}}}]}" }]

    Der Befehl update-domain-name aktualisiert die policy mithilfe der Datei patch-policy.json.

    aws apigateway update-domain-name \ --domain-name private.example.com \ --domain-name-id abcd1234 \ --patch-operations file://patch-policy.json

In diesem Verfahren verwendete Beispielrichtlinien

Im folgenden Abschnitt sehen Sie die Beispielrichtlinien, die im Verfahren oben verwendet wurden.

Die folgende Beispielrichtlinie bezieht sich auf die managementPolicy des Amazon-API-Gateway-Management-Dienstes. Diese Richtlinie gewährt AWS-Konten 111122223333 und 444455556666 Zugriff, um Zuordnungen für den Domainnamen-Zugriff mit dem privaten benutzerdefinierten Domainnamen zu erstellen. private.example.com

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "111122223333", "444455556666" ] }, "Action": "apigateway:CreateAccessAssociation", "Resource": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+a1b2c3" } ] }

Die folgende Beispielrichtlinie ist die Richtlinie für die policy des execute-api-Dienstes. Diese Richtlinie gewährt den VPC-Endpunkten vpce-abcd1234 und vpce-xyzz0000 Zugriff zum Aufrufen des privaten benutzerdefinierten Domainnamens.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.example.com+abcd1234" }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.example.com+abcd1234", "Condition": { "StringNotEquals": { "aws:SourceVpce": [ "vpce-abcd1234", "vpce-xyzz0000" ] } } } ] }