Richten Sie eine API-Gateway-API mit privaten Integrationen ein, indem Sie den 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.

Richten Sie eine API-Gateway-API mit privaten Integrationen ein, indem Sie den AWS CLI

Bevor Sie eine API mit der privaten Integration erstellen können, müssen Sie Ihre VPC-Ressource eingerichtet und einen Network Load Balancer erstellt und mit Ihrer VPC-Quelle als Ziel konfiguriert haben. Wenn die Anfragen nicht erfüllt sind, folgen Sie Network Load Balancer für private API Gateway-Integrationen einrichten, um die VPC-Ressource zu installieren, einen Network Load Balancer zu erstellen und die VPC-Ressource als Ziel des Network Load Balancers festzulegen.

Anmerkung

Der Network Load Balancer und die API müssen demselben AWS Konto gehören.

Damit Sie eine VpcLink erstellen und verwalten können, müssen Sie auch die entsprechenden Berechtigungen konfiguriert haben. Weitere Informationen finden Sie unter Erteilen von Berechtigungen zum Erstellen eines VPC-Links.

Anmerkung

Sie benötigen nur die Berechtigungen zum Erstellen eines VpcLink in Ihrer API. Sie benötigen nicht die Berechtigungen zum Verwenden des VpcLink.

Nachdem der Network Load Balancer erstellt wurde, notieren Sie sich den zugehörigen ARN. Sie benötigen ihn zum Erstellen eines VPC-Links für die private Integration.

Um eine API mit der privaten Integration einzurichten, verwenden Sie AWS CLI
  1. Erstellen Sie einen VpcLink mit Ausrichtung auf den angegebenen Network Load Balancer.

    aws apigateway create-vpc-link \ --name my-test-vpc-link \ --target-arns arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/net/my-vpclink-test-nlb/1234567890abcdef

    Die Ausgabe dieses Befehls bestätigt den Eingang der Anfrage und zeigt den PENDING-Status des soeben erstellten VpcLink an.

    { "status": "PENDING", "targetArns": [ "arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/net/my-vpclink-test-nlb/1234567890abcdef" ], "id": "gim7c3", "name": "my-test-vpc-link" }

    Es dauert 2-4 Minuten, bis API Gateway die Erstellung des VpcLink abgeschlossen hat. Wenn der Vorgang erfolgreich abgeschlossen wird, lautet der status AVAILABLE. Sie können dies überprüfen, indem Sie den folgenden CLI-Befehl aufrufen:

    aws apigateway get-vpc-link --vpc-link-id gim7c3

    Wenn der Vorgang fehlschlägt, erhalten Sie den Status FAILED und die statusMessage mit der Fehlermeldung. Wenn Sie beispielsweise versuchen, VpcLink mit einem Network Load Balancer zu erstellen, der bereits einem VPC-Endpunkt zugewiesen ist, erhalten Sie Folgendes in der Eigenschaft statusMessage:

    "NLB is already associated with another VPC Endpoint Service"

    Erst nachdem der VpcLink erfolgreich erstellt wurde, können wir die API erstellen und über den VpcLink in die VPC-Ressource integrieren.

    Notieren Sie sich den Wert id im neu erstellten VpcLink (gim7c3 in der vorangegangenen Ausgabe). Sie benötigen ihn zum Einrichten der privaten Integration.

  2. Richten Sie eine API ein, indem Sie eine API Gateway-RestApi-Ressource erstellen:

    aws apigateway create-rest-api --name 'My VPC Link Test'

    Notieren Sie sich den in der Antwort angegebenen RestApi-Wert für die id. Sie benötigen diesen Wert später, um weitere Vorgänge in der API, auszuführen.

    Zur Veranschaulichung erstellen wir eine API mit nur einer GET-Methode in der Root-Ressource (/) und integrieren die Methode im VpcLink.

  3. Richten Sie die GET /-Methode ein. Rufen Sie zunächst die Kennung der Root-Ressource () (/):

    aws apigateway get-resources --rest-api-id abcdef123

    Notieren Sie sich den id-Wert des Pfads / in der Ausgabe. In diesem Beispiel nehmen wir an, er lautet skpp60rab7.

    Richten Sie die Methodenanforderung für die API-Methode ei GET /:

    aws apigateway put-method \ --rest-api-id abcdef123 \ --resource-id skpp60rab7 \ --http-method GET \ --authorization-type "NONE"

    Wenn Sie die Proxy-Integration mit dem VpcLink nicht verwenden, müssen Sie mindestens eine Methodenantwort des Statuscodes 200 einrichten. In diesem Beispiel verwenden wir die Proxy-Integration.

  4. Richten Sie die private Integration des Typs HTTP_PROXY ein und rufen Sie den Befehl put-integration wie folgt auf:

    aws apigateway put-integration \ --rest-api-id abcdef123 \ --resource-id skpp60rab7 \ --uri 'http://my-vpclink-test-nlb-1234567890abcdef.us-east-2.amazonaws.com' \ --http-method GET \ --type HTTP_PROXY \ --integration-http-method GET \ --connection-type VPC_LINK \ --connection-id gim7c3

    Für eine private Integration müssen Sie connection-type auf „VPC_LINK“ und connection-id entweder auf die Kennung Ihres VpcLink oder auf eine Stufenvariable festlegen, die auf Ihre VpcLink-ID verweist. Der Parameter uri wird nicht für das Routing von Anforderungen an Ihren Endpunkt verwendet, wohl aber zum Festlegen des Host-Headers und für die Zertifikatsvalidierung.

    Der Befehl gibt die folgende Ausgabe zurück:

    { "passthroughBehavior": "WHEN_NO_MATCH", "timeoutInMillis": 29000, "connectionId": "gim7c3", "uri": "http://my-vpclink-test-nlb-1234567890abcdef.us-east-2.amazonaws.com", "connectionType": "VPC_LINK", "httpMethod": "GET", "cacheNamespace": "skpp60rab7", "type": "HTTP_PROXY", "cacheKeyParameters": [] }

    Legen Sie unter Verwendung einer Stufenvariable die Eigenschaft connectionId beim Erstellen der Integration fest:

    aws apigateway put-integration \ --rest-api-id abcdef123 \ --resource-id skpp60rab7 \ --uri 'http://my-vpclink-test-nlb-1234567890abcdef.us-east-2.amazonaws.com' \ --http-method GET \ --type HTTP_PROXY \ --integration-http-method GET \ --connection-type VPC_LINK \ --connection-id "\${stageVariables.vpcLinkId}"

    Stellen Sie sicher, dass Sie den Stufenvariablenausdruck in doppelte Anführungszeichen (${stageVariables.vpcLinkId}) setzen und das Zeichen $ mit einem Escape-Zeichen versehen.

    Alternativ können Sie die Integration aktualisieren, um den Wert connectionId mit einer Stufenvariable zurückzusetzen:

    aws apigateway update-integration \ --rest-api-id abcdef123 \ --resource-id skpp60rab7 \ --http-method GET \ --patch-operations '[{"op":"replace","path":"/connectionId","value":"${stageVariables.vpcLinkId}"}]'

    Verwenden Sie unbedingt eine in Text umgewandelte JSON-Liste als patch-operations-Parameterwert.

    Sie können eine Stufenvariable verwenden, um Ihre API in eine andere VPC oder einen anderen Network Load Balancer zu integrieren, indem Sie den Wert der VpcLink-Stufenvariablen zurücksetzen.

    Da wir die private Proxy-Integration verwendet haben, ist die API jetzt für die Bereitstellung und für Testläufe bereit. Mit der Nicht-Proxy-Integration müssen Sie auch die Methoden- und Integrationsantwort einrichten ähnlich wie beim Einrichten einer API mit benutzerdefinierten HTTP-Integrationen.

  5. Stellen Sie die API bereit, um sie zu testen. Dies ist erforderlich, wenn Sie die Stufenvariable als Platzhalter der VpcLink-ID verwendet haben. Zum Bereitstellen der API mit einer Stufenvariablen rufen Sie den Befehl create-deployment wie folgt auf:

    aws apigateway create-deployment \ --rest-api-id abcdef123 \ --stage-name test \ --variables vpcLinkId=gim7c3

    Zum Aktualisieren der Stufenvariablen mit einer anderen VpcLink-ID (z. B. asf9d7) rufen Sie den Befehl update-stage auf:

    aws apigateway update-stage \ --rest-api-id abcdef123 \ --stage-name test \ --patch-operations op=replace,path='/variables/vpcLinkId',value='asf9d7'

    Rufen Sie Ihre API mit dem folgenden Befehl auf:

    curl -X GET https://abcdef123.execute-api.us-east-2.amazonaws.com/test

    Alternativ können Sie die invoke-URL der API in einem Webbrowser eingeben, um das Ergebnis anzuzeigen.

    Wenn Sie die Eigenschaft connection-id mit dem VpcLink-ID-Literal hartcodieren, können Sie auch test-invoke-method verwenden, um das Aufrufen der API vor der Bereitstellung zu testen.