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
-
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 erstelltenVpcLink
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 derstatus
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 diestatusMessage
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 EigenschaftstatusMessage
:"NLB is already associated with another VPC Endpoint Service"
Erst nachdem der
VpcLink
erfolgreich erstellt wurde, können wir die API erstellen und über denVpcLink
in die VPC-Ressource integrieren.Notieren Sie sich den Wert
id
im neu erstelltenVpcLink
(
in der vorangegangenen Ausgabe). Sie benötigen ihn zum Einrichten der privaten Integration.gim7c3
-
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 dieid
. 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 imVpcLink
. -
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-idskpp60rab7
\ --http-method GET \ --authorization-type "NONE"Wenn Sie die Proxy-Integration mit dem
VpcLink
nicht verwenden, müssen Sie mindestens eine Methodenantwort des Statuscodes200
einrichten. In diesem Beispiel verwenden wir die Proxy-Integration. -
Richten Sie die private Integration des Typs
HTTP_PROXY
ein und rufen Sie den Befehlput-integration
wie folgt auf:aws apigateway put-integration \ --rest-api-id
abcdef123
\ --resource-idskpp60rab7
\ --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-idgim7c3
Für eine private Integration müssen Sie
connection-type
auf „VPC_LINK
“ undconnection-id
entweder auf die Kennung IhresVpcLink
oder auf eine Stufenvariable festlegen, die auf IhreVpcLink
-ID verweist. Der Parameteruri
wird nicht für das Routing von Anforderungen an Ihren Endpunkt verwendet, wohl aber zum Festlegen desHost
-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-idskpp60rab7
\ --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-idskpp60rab7
\ --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.
-
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 Befehlcreate-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.
) rufen Sie den Befehlasf9d7
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/testAlternativ können Sie die invoke-URL der API in einem Webbrowser eingeben, um das Ergebnis anzuzeigen.
Wenn Sie die Eigenschaft
connection-id
mit demVpcLink
-ID-Literal hartcodieren, können Sie auchtest-invoke-method
verwenden, um das Aufrufen der API vor der Bereitstellung zu testen.