Configurazione di un'API di API Gateway con integrazioni private tramite la AWS CLI
Il seguente tutorial mostra come utilizzare l'interfaccia AWS CLI per creare un collegamento VPC e un'integrazione privata. Devono essere soddisfatti i seguenti prerequisiti:
-
È necessario creare e configurare un Network Load Balancer con l'origine VPC come destinazione. Per ulteriori informazioni, consultare Configurazione di un sistema Network Load Balancer per le integrazioni private di API Gateway. Il collegamento deve essere nello stesso Account AWS dell'API. È necessario l'ARN del Network Load Balancer per creare il collegamento VPC.
-
Per creare e gestire un
VpcLink
, sono necessarie le autorizzazioni per creare unVpcLink
nell'API. Non sono necessarie autorizzazioni per utilizzare ilVpcLink
. Per ulteriori informazioni, consultare Concessione di autorizzazioni per Gateway API per la creazione di un collegamento VPC.
Per configurare un'API con integrazione privata tramite AWS CLI
-
Con il seguente comando create-vpc-link viene creato un
VpcLink
che ha come destinazione il Network Load Balancer specificato.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
L'output di questo comando riconosce la ricezione della richiesta e mostra lo stato
PENDING
per ilVpcLink
in fase di creazione.{ "status": "PENDING", "targetArns": [ "arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/net/my-vpclink-test-nlb/1234567890abcdef" ], "id": "gim7c3", "name": "my-test-vpc-link" }
Per la creazione dell'oggetto
VpcLink
in API Gateway sono necessari da 2 a 4 minuti. Dopo il completamento dell'operazione, il valore distatus
èAVAILABLE
. Per verificarlo, puoi chiamare il seguente comando get-vpc-link:aws apigateway get-vpc-link --vpc-link-id
gim7c3
Se l'operazione non riesce, lo stato è
FAILED
estatusMessage
contiene il messaggio di errore. Se, ad esempio, tenti di creare un oggettoVpcLink
con un sistema Network Load Balancer già associato a un endpoint VPC, la proprietàstatusMessage
contiene quanto segue:"NLB is already associated with another VPC Endpoint Service"
Dopo la corretta creazione di
VpcLink
è possibile creare un'API e integrarla con la risorsa VPC tramite laVpcLink
.Prendi nota del valore
id
delVpcLink
appena creato. In questo output di esempio, ègim7c3
. Questo valore è necessario per configurare l'integrazione privata. -
Con il seguente comando create-rest-api viene creata una risorsa
RestApi
di Gateway API:aws apigateway create-rest-api --name 'My VPC Link Test'
Prendi nota del valore
id
diRestApi
e del valorerootResourceId
diRestApi
nel risultato restituito. Questo valore è necessario per eseguire ulteriori operazioni sull'API.A scopo illustrativo, creeremo un'API con solo un metodo
GET
nella risorsa root (/
) e integreremo il metodo conVpcLink
. -
Configura il metodo
GET /
. Utilizza il seguente comando put-method e inserisci il valoreId
perrest-api-id
e il valorerootResourceId
perresource-id
:aws apigateway put-method \ --rest-api-id
abcdef123
\ --resource-idskpp60rab7
\ --http-method GET \ --authorization-type "NONE"Se non usi l'integrazione proxy con il
VpcLink
, devi configurare anche almeno una risposta del metodo per il codice di stato200
. In questo caso usiamo l'integrazione proxy. -
Dopo aver creato il metodo
GET /
, viene configurata l'integrazione. Per un'integrazione privata, si utilizza il parametroconnection-id
per fornire l'ID delVpcLink
. Puoi utilizzare una variabile di fase o inserire direttamente l'ID delVpcLink
. Il parametrouri
non viene usato per il routing delle richieste all'endpoint, ma viene usato per impostare l'intestazioneHost
per la convalida del certificato.In qualsiasi momento, puoi anche aggiornare l'integrazione per modificare il valore
connection-id
. Il seguente comando update-integration mostra come aggiornare l'integrazione:aws apigateway update-integration \ --rest-api-id
abcdef123
\ --resource-idskpp60rab7
\ --http-method GET \ --patch-operations '[{"op":"replace","path":"/connectionId","value":"${stageVariables.vpcLinkId}"}]'Assicurati di usare un elenco JSON in formato stringa come valore del parametro
patch-operations
.Poiché abbiamo utilizzato l'integrazione proxy privata, l'API è ora pronta per l'implementazione e i test. In caso di integrazione non proxy, è anche necessario configurare la risposta del metodo e la risposta di integrazione, come si fa quando si configura un'API con integrazioni HTTP personalizzate.
-
Se hai utilizzato la variabile di fase per definire il valore
connection-id
, devi implementare l'API per testarla. Il seguente comando create-deployment mostra come implementare l'API con una variabile di fase:aws apigateway create-deployment \ --rest-api-id
abcdef123
\ --stage-name test \ --variables vpcLinkId=gim7c3
Per aggiornare la variabile di fase con un ID
VpcLink
diverso (ad esempio
), chiama il comando update-stage:asf9d7
aws apigateway update-stage \ --rest-api-id
abcdef123
\ --stage-name test \ --patch-operations op=replace,path='/variables/vpcLinkId',value='asf9d7
'Quando imposti come hardcoded la proprietà
connection-id
con il valore letterale ID diVpcLink
, non è necessario implementare l'API per testarla. Utilizza il comando test-invoke-method per testare l'API prima che venga implementata. -
Utilizza il seguente comando per invocare l'API:
curl -X GET https://
abcdef123
.execute-api.us-east-2.amazonaws.com/testIn alternativa, puoi inserire l'URL di invocazione dell'API in un browser web per visualizzare il risultato.