Einrichten einer API-Gateway-API mit privater Integration mithilfe der 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.
Der Network Load Balancer und die API müssen sich im Besitz desselben AWS-Kontos befinden.
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.
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.
So richten Sie eine API mit der privaten Integration mithilfe der AWS CLI ein
-
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.