Crea un account privato API - Amazon API Gateway

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Crea un account privato API

Prima di creare un endpoint privatoAPI, devi prima creare un VPC endpoint per API Gateway. Quindi crei il tuo account privato API e gli alleghi una politica delle risorse. Facoltativamente, puoi associare il tuo VPC endpoint a quello privato API per semplificare il modo in cui richiami il tuo. API Infine, distribuisci il tuo. API

Le seguenti procedure descrivono come eseguire questa operazione. È possibile creare un file privato REST API utilizzando AWS Management Console, AWS CLI o un AWS SDK.

Prerequisiti

Per seguire questi passaggi, è necessario disporre di un file completamente configuratoVPC. Per informazioni su come creare un fileVPC, consulta Create a VPC only nella Amazon VPC User Guide. Per seguire tutti i passaggi consigliati durante la creazione del tuoVPC, abilita privateDNS. In questo modo puoi invocare your API within a VPC senza dover passare l'Host o l'x-apigw-api-idheader.

Per abilitare privateDNS, gli enableDnsHostnames attributi enableDnsSupport and di your VPC devono essere impostati su. true Per ulteriori informazioni, consulta DNSSupport in Your VPC e Updating DNS Support for Your VPC.

Passaggio 1: crea un VPC endpoint per API Gateway nel tuo VPC

La procedura seguente mostra come creare un VPC endpoint per API Gateway. Per creare un VPC endpoint per API Gateway, specificate il execute-api dominio Regione AWS in cui create il vostro dispositivo privato. API Il execute-api dominio è il servizio componente API Gateway per API l'esecuzione.

Quando crei l'VPCendpoint per API Gateway, specifichi le DNS impostazioni. Se disattivi la modalità privataDNS, puoi accedere solo API tramite pubblicoDNS. Per ulteriori informazioni, consulta Problema: non riesco a connettermi al mio dispositivo pubblico API da un VPC endpoint API Gateway.

AWS Management Console
Per creare un VPC endpoint di interfaccia per API Gateway
  1. Accedi a AWS Management Console e apri la VPC console Amazon all'indirizzo https://console.aws.amazon.com/vpc/.

  2. Dal riquadro di navigazione, in Cloud privato virtuale, scegli Endpoint.

  3. Seleziona Crea endpoint.

  4. (Facoltativo) Per il tag Name, inserisci un nome per identificare l'VPCendpoint.

  5. Per Service category (Categoria servizio), scegli AWS services.

  6. In Servizi, nella barra di ricerca, inserisciexecute-api. Quindi, scegli l'endpoint del servizio API Gateway in Regione AWS cui creerai il tuoAPI. Il nome del servizio dovrebbe essere simile com.amazonaws.us-east-1.execute-api e il tipo dovrebbe essere Interface.

  7. Per VPC, scegli VPC quello in cui vuoi creare l'endpoint.

  8. (Facoltativo) Per disattivare Abilita DNS nome privato, scegli Impostazioni aggiuntive e quindi deseleziona Abilita DNS nome privato.

  9. Per le sottoreti, scegli le zone di disponibilità in cui hai creato le interfacce di rete degli endpoint. Per migliorare la disponibilità delle tueAPI, scegli più sottoreti.

  10. Per Gruppo di sicurezza, seleziona il gruppo di sicurezza da associare alle interfacce di rete degli VPC endpoint.

    Il gruppo di sicurezza scelto deve essere impostato in modo da consentire il HTTPS traffico in entrata sulla TCP Porta 443 proveniente da un intervallo IP del tuo VPC o da un altro gruppo di sicurezza del tuo. VPC

  11. Per Policy, esegui una delle seguenti operazioni:

    • Se non hai creato una policy privata API o non desideri configurare una policy personalizzata per gli VPC endpoint, scegli Accesso completo.

    • Se hai già creato una policy privata API e desideri configurare una policy personalizzata per gli VPC endpoint, puoi inserire una policy personalizzata per gli VPC endpoint. Per ulteriori informazioni, consulta Usa le politiche VPC degli endpoint per uso privato APIs in API Gateway.

    È possibile aggiornare la policy degli VPC endpoint dopo aver creato l'endpoint. VPC Per ulteriori informazioni, consulta Aggiornare una policy per gli VPC endpoint.

  12. Seleziona Crea endpoint.

  13. Copia l'ID VPC endpoint risultante, poiché potresti utilizzarlo nelle fasi future.

AWS CLI

Il create-vpc-endpointcomando seguente può essere usato per creare un VPC endpoint:

aws ec2 create-vpc-endpoint \ --vpc-id vpc-1a2b3c4d \ --vpc-endpoint-type Interface \ --service-name com.amazonaws.us-east-1.execute-api \ --subnet-ids subnet-7b16de0c \ --security-group-id sg-1a2b3c4d

Copia l'ID VPC endpoint risultante, poiché potresti utilizzarlo nelle fasi future.

Passaggio 2: crea un account privato API

Dopo aver creato il tuo VPC endpoint, ne crei uno privato RESTAPI. La procedura seguente mostra come creare un privatoAPI.

AWS Management Console
Per creare un ambiente privato API
  1. Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway.

  2. Scegli Crea. API

  3. In RESTAPI, scegli Costruisci.

  4. In Nome, immetti un nome.

  5. (Facoltativo) In Description (Descrizione), immettere una descrizione.

  6. Per il tipo di API endpoint, seleziona Privato.

  7. (Facoltativo) Per VPCendpoint IDs, inserisci un ID VPC endpoint.

    Se associ un ID VPC endpoint al tuo ID privatoAPI, puoi richiamare il tuo modulo API dall'interno del tuo VPC senza sovrascrivere un'Hostintestazione o passare un x-apigw-api-id header messaggio. Per ulteriori informazioni, consulta. (Facoltativo) Associa o dissocia un endpoint da un endpoint privato VPC API

  8. Scegli Crea. API

Dopo aver completato i passaggi precedenti, puoi seguire le istruzioni riportate in Inizia a usare la REST API console per configurare metodi e integrazioni a tale scopoAPI, ma non puoi implementare il tuo. API Per implementare il tuoAPI, segui il passaggio 3 e allega una politica delle risorse al tuo. API

AWS CLI

Il create-rest-apicomando seguente mostra come creare un file privatoAPI:

aws apigateway create-rest-api \ --name 'Simple PetStore (AWS CLI, Private)' \ --description 'Simple private PetStore API' \ --region us-west-2 \ --endpoint-configuration '{ "types": ["PRIVATE"] }'

In caso di esito positivo, la chiamata restituisce un output simile al seguente:

{ "createdDate": "2017-10-13T18:41:39Z", "description": "Simple private PetStore API", "endpointConfiguration": { "types": "PRIVATE" }, "id": "0qzs2sy7bh", "name": "Simple PetStore (AWS CLI, Private)" }

Dopo aver completato i passaggi precedenti, puoi seguire le istruzioni riportate in Tutorial: crea un'API REST utilizzando AWS SDK o AWS CLI per configurare metodi e integrazioni a tale scopoAPI, ma non puoi implementare il tuo. API Per implementare il tuoAPI, segui il passaggio 3 e allega una politica delle risorse al tuo. API

SDK JavaScript v3

L'esempio seguente mostra come creare un file privato API utilizzando AWS SDK for JavaScript v3:

import {APIGatewayClient, CreateRestApiCommand} from "@aws-sdk/client-api-gateway"; const apig = new APIGatewayClient({region:"us-east-1"}); const input = { // CreateRestApiRequest name: "Simple PetStore (JavaScript v3 SDK, private)", // required description: "Demo private API created using the AWS SDK for JavaScript v3", version: "0.00.001", endpointConfiguration: { // EndpointConfiguration types: [ "PRIVATE"], }, }; export const handler = async (event) => { const command = new CreateRestApiCommand(input); try { const result = await apig.send(command); console.log(result); } catch (err){ console.error(err) } };

In caso di esito positivo, la chiamata restituisce un output simile al seguente:

{ apiKeySource: 'HEADER', createdDate: 2024-04-03T17:56:36.000Z, description: 'Demo private API created using the AWS SDK for JavaScript v3', disableExecuteApiEndpoint: false, endpointConfiguration: { types: [ 'PRIVATE' ] }, id: 'abcd1234', name: 'Simple PetStore (JavaScript v3 SDK, private)', rootResourceId: 'efg567', version: '0.00.001' }

Dopo aver completato i passaggi precedenti, puoi seguire le istruzioni riportate in Tutorial: crea un'API REST utilizzando AWS SDK o AWS CLI per configurare metodi e integrazioni a tale scopoAPI, ma non puoi implementare il tuo. API Per implementare il tuoAPI, segui il passaggio 3 e allega una politica delle risorse al tuo. API

Python SDK

L'esempio seguente mostra come creare un file privato API usando AWS SDK for Python:

import json import boto3 import logging logger = logging.getLogger() apig = boto3.client('apigateway') def lambda_handler(event, context): try: result = apig.create_rest_api( name='Simple PetStore (Python SDK, private)', description='Demo private API created using the AWS SDK for Python', version='0.00.001', endpointConfiguration={ 'types': [ 'PRIVATE', ], }, ) except botocore.exceptions.ClientError as error: logger.exception("Couldn't create private API %s.", error) raise attribute=["id", "name", "description", "createdDate", "version", "apiKeySource", "endpointConfiguration"] filtered_data ={key:result[key] for key in attribute} result = json.dumps(filtered_data, default=str, sort_keys='true') return result

In caso di esito positivo, la chiamata restituisce un output simile al seguente:

"{\"apiKeySource\": \"HEADER\", \"createdDate\": \"2024-04-03 17:27:05+00:00\", \"description\": \"Demo private API created using the AWS SDK for \", \"endpointConfiguration\": {\"types\": [\"PRIVATE\"]}, \"id\": \"abcd1234\", \"name\": \"Simple PetStore (Python SDK, private)\", \"version\": \"0.00.001\"}"

Dopo aver completato i passaggi precedenti, puoi seguire le istruzioni riportate in Tutorial: crea un'API REST utilizzando AWS SDK o AWS CLI per configurare metodi e integrazioni a tale scopoAPI, ma non puoi implementare il tuo. API Per implementare il tuoAPI, segui il passaggio 3 e allega una politica delle risorse al tuo. API

Passaggio 3: Imposta una politica delle risorse per un privato API

Il tuo account privato attuale API è inaccessibile a tuttiVPCs. Utilizza una politica in materia di risorse per concedere a te VPCs e agli VPC endpoint l'accesso ai dati privati. APIs Puoi concedere l'accesso a un VPC endpoint in qualsiasi AWS account.

La tua politica sulle risorse dovrebbe contenere aws:SourceVpc o stabilire aws:SourceVpce condizioni per limitare l'accesso. Ti consigliamo di identificare VPC endpoint VPCs e dispositivi specifici e di non creare una politica delle risorse che consenta l'accesso a tutti VPCs gli VPC endpoint.

La procedura seguente mostra come allegare una politica delle risorse al tuo. API

AWS Management Console
  1. Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway.

  2. Scegli un. REST API

  3. Nel riquadro di navigazione principale, scegli Policy delle risorse.

  4. Scegli Create Policy (Crea policy).

  5. Scegli Seleziona un modello, quindi scegli Fonte VPC.

  6. {{vpceID}}Sostituiscilo (comprese le bretelle arricciate) con il tuo ID VPC endpoint.

  7. Scegli Save changes (Salva modifiche).

AWS CLI

Il update-rest-apicomando seguente mostra come allegare una politica delle risorse a una esistente: API

aws apigateway update-rest-api \ --rest-api-id a1b2c3 \ --patch-operations op=replace,path=/policy,value='"{\"jsonEscapedPolicyDocument\"}"'

Potresti anche voler controllare quali risorse hanno accesso al tuo VPC endpoint. Per controllare quali risorse hanno accesso al tuo VPC endpoint, allega una policy sull'endpoint al tuo endpoint. VPC Per ulteriori informazioni, consulta Usa le politiche VPC degli endpoint per uso privato APIs in API Gateway.

(Facoltativo) Associa o dissocia un endpoint da un endpoint privato VPC API

Quando associ un VPC endpoint a un dispositivo privatoAPI, API Gateway genera un nuovo record di alias Route 53. DNS Puoi usare questo record per richiamare il tuo nome privato APIs proprio come fai con quello pubblico APIs senza sovrascrivere un'intestazione o passare un'Hostintestazione. x-apigw-api-id

La base generata URL è nel seguente formato:

https://{rest-api-id}-{vpce-id}.execute-api.{region}.amazonaws.com/{stage}
Associate a VPC endpoint (AWS Management Console)

Puoi associare un VPC endpoint al tuo dispositivo privato al API momento della creazione o dopo la creazione. La procedura seguente mostra come associare un VPC endpoint a un dispositivo creato in precedenza. API

Per associare un VPC endpoint a un dispositivo privato API
  1. Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway.

  2. Scegli il tuo account privato. API

  3. Nel riquadro di navigazione principale, scegli Policy delle risorse.

  4. Modifica la politica delle risorse per consentire le chiamate dall'VPCendpoint aggiuntivo.

  5. Nel riquadro di navigazione principale, scegli APIimpostazioni.

  6. Nella sezione dei APIdettagli, scegli Modifica.

  7. Per VPCendpoint IDs, seleziona VPC IDs endpoint aggiuntivo.

  8. Seleziona Salva.

  9. Ridistribuisci il tuo API per rendere effettive le modifiche.

Dissociate a VPC endpoint (AWS Management Console)
Per dissociare un VPC endpoint da uno privato REST API
  1. Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com /apigateway.

  2. Scegli il tuo account privato. API

  3. Nel riquadro di navigazione principale, scegli Policy delle risorse.

  4. Modifica la tua politica sulle risorse per rimuovere le menzioni dell'VPCendpoint che desideri separare da quelle private. API

  5. Nel pannello di navigazione principale, scegli impostazioni. API

  6. Nella sezione dei APIdettagli, scegli Modifica.

  7. Per VPCendpoint IDs, scegli la X per dissociare l'endpoint. VPC

  8. Seleziona Salva.

  9. Ridistribuisci il tuo API per rendere effettive le modifiche.

Associate a VPC endpoint (AWS CLI)

Il create-rest-apicomando seguente mostra come associare gli VPC endpoint al momento della creazione: API

aws apigateway create-rest-api \ --name Petstore \ --endpoint-configuration '{ "types": ["PRIVATE"], "vpcEndpointIds" : ["vpce-0212a4ababd5b8c3e", "vpce-0393a628149c867ee"] }' \ --region us-west-2

L'output sarà simile al seguente:

{ "apiKeySource": "HEADER", "endpointConfiguration": { "types": [ "PRIVATE" ], "vpcEndpointIds": [ "vpce-0212a4ababd5b8c3e", "vpce-0393a628149c867ee" ] }, "id": "u67n3ov968", "createdDate": 1565718256, "name": "Petstore" }

Il update-rest-apicomando seguente mostra come associare gli VPC endpoint a un dispositivo API già creato:

aws apigateway update-rest-api \ --rest-api-id u67n3ov968 \ --patch-operations "op='add',path='/endpointConfiguration/vpcEndpointIds',value='vpce-01d622316a7df47f9'" \ --region us-west-2

L'output sarà simile al seguente:

{ "name": "Petstore", "apiKeySource": "1565718256", "tags": {}, "createdDate": 1565718256, "endpointConfiguration": { "vpcEndpointIds": [ "vpce-0212a4ababd5b8c3e", "vpce-0393a628149c867ee", "vpce-01d622316a7df47f9" ], "types": [ "PRIVATE" ] }, "id": "u67n3ov968" }

Ridistribuite il vostro API per rendere effettive le modifiche.

Disassociate a VPC endpoint (AWS CLI)

Il update-rest-apicomando seguente mostra come dissociare un VPC endpoint da un dispositivo privato: API

aws apigateway update-rest-api \ --rest-api-id u67n3ov968 \ --patch-operations "op='remove',path='/endpointConfiguration/vpcEndpointIds',value='vpce-0393a628149c867ee'" \ --region us-west-2

L'output sarà simile al seguente:

{ "name": "Petstore", "apiKeySource": "1565718256", "tags": {}, "createdDate": 1565718256, "endpointConfiguration": { "vpcEndpointIds": [ "vpce-0212a4ababd5b8c3e", "vpce-01d622316a7df47f9" ], "types": [ "PRIVATE" ] }, "id": "u67n3ov968" }

Ridistribuisci il tuo API per rendere effettive le modifiche.

Fase 4: Implementa un account privato API

Per implementare la tuaAPI, crei una API distribuzione e la associ a una fase. La procedura seguente mostra come implementare la versione privata. API

AWS Management Console
Per distribuire un dispositivo privato API
  1. Scegli il tuo. API

  2. Scegliere Deploy (Implementa)API.

  3. In Fase, seleziona Nuova fase.

  4. Per Nome fase immetti il nome di una fase.

  5. (Facoltativo) In Description (Descrizione), immettere una descrizione.

  6. Seleziona Deploy (Implementa).

AWS CLI

Il seguente comando create-deployment mostra come distribuire un file privato: API

aws apigateway create-deployment --rest-api-id a1b2c3 \ --stage-name test \ --stage-description 'Private API test stage' \ --description 'First deployment'

Risolvi i problemi relativi al file privato API

Di seguito vengono forniti consigli per la risoluzione di errori e problemi che potresti riscontrare durante la creazione di un file privato. API

Problema: non riesco a connettermi al mio dispositivo pubblico API da un VPC endpoint API Gateway

Quando crei il tuoVPC, puoi configurare le DNS impostazioni. Ti consigliamo di attivare la modalità privata DNS per il tuoVPC. Se scegli di disattivare la modalità privataDNS, puoi accedere al tuo solo API tramite pubblicoDNS.

Se abiliti la modalità privataDNS, non puoi accedere all'endpoint predefinito di un API Gateway pubblico API dal tuo VPC endpoint. Puoi accedere a un dominio API con un nome di dominio personalizzato.

Se crei un nome di dominio personalizzato regionale, utilizzi un record di alias di tipo A, se crei un nome di dominio personalizzato ottimizzato per Edge, non ci sono restrizioni per il tipo di record. Puoi accedere a questi dati pubblici APIs con l'opzione privata abilitata. DNS Per ulteriori informazioni, vedi Problema: mi connetto al mio pubblico API da un VPC endpoint API Gateway.

Problema: i miei resi API {"Message":"User: anonymous is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:us-east-1:********/****/****/"}

Nella tua politica delle risorse, se imposti il AWS Principal su un principale, come segue:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", ""Principal": { "AWS": [ "arn:aws:iam::account-id:role/developer", "arn:aws:iam::account-id:role/Admin" ] }, "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ] }, ... }

È necessario utilizzare AWS_IAM l'autorizzazione per ogni metodo utilizzatoAPI, altrimenti verrà API restituito il messaggio di errore precedente. Per ulteriori istruzioni su come attivare AWS_IAM l'autorizzazione per un metodo, consultaMetodi per REST APIs in API Gateway.

Problema: non riesco a capire se il mio VPC endpoint è associato al mio API

Se associ o dissocii un VPC endpoint dal tuo dispositivo privatoAPI, devi ridistribuire il tuo. API Il completamento dell'operazione di aggiornamento potrebbe richiedere alcuni minuti a causa della propagazione. DNS Durante questo periodo, il tuo API è disponibile, ma la DNS propagazione della nuova generazione DNS URLs potrebbe essere ancora in corso. Se dopo alcuni minuti, i nuovi file non URLs si risolvonoDNS, si consiglia di ridistribuire il file. API