Configurazione di un'API di API Gateway con integrazioni private tramite la AWS CLI - Amazon API Gateway

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:

Per configurare un'API con integrazione privata tramite AWS CLI
  1. 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 il VpcLink 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 di status è 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 e statusMessage contiene il messaggio di errore. Se, ad esempio, tenti di creare un oggetto VpcLink 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 la VpcLink.

    Prendi nota del valore id del VpcLink appena creato. In questo output di esempio, è gim7c3. Questo valore è necessario per configurare l'integrazione privata.

  2. 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 di RestApi e del valore rootResourceId di RestApi 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 con VpcLink.

  3. Configura il metodo GET /. Utilizza il seguente comando put-method e inserisci il valore Id per rest-api-id e il valore rootResourceId per resource-id:

    aws apigateway put-method \ --rest-api-id abcdef123 \ --resource-id skpp60rab7 \ --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 stato 200. In questo caso usiamo l'integrazione proxy.

  4. Dopo aver creato il metodo GET /, viene configurata l'integrazione. Per un'integrazione privata, si utilizza il parametro connection-id per fornire l'ID del VpcLink. Puoi utilizzare una variabile di fase o inserire direttamente l'ID del VpcLink. Il parametro uri non viene usato per il routing delle richieste all'endpoint, ma viene usato per impostare l'intestazione Host per la convalida del certificato.

    Use the VPC link ID

    Con il seguente comando put-integration viene utilizzato l'ID del VpcLink direttamente nell'integrazione:

    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
    Use a stage variable

    Con il seguente comando put-integration viene utilizzata una variabile di fase per fare riferimento all'ID del collegamento VPC. Quando implementi l'API in una fase, viene impostato l'ID del collegamento VPC.

    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}"

    Assicurati di racchiudere tra virgolette doppie l'espressione della variabile di fase (${stageVariables.vpcLinkId}) e di aggiungere il carattere di escape davanti a $.

    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-id skpp60rab7 \ --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.

  5. 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 asf9d7), chiama il comando update-stage:

    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 di VpcLink, non è necessario implementare l'API per testarla. Utilizza il comando test-invoke-method per testare l'API prima che venga implementata.

  6. Utilizza il seguente comando per invocare l'API:

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

    In alternativa, puoi inserire l'URL di invocazione dell'API in un browser web per visualizzare il risultato.