Crea un API gateway REST APIs con Step Functions - AWS Step Functions

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 API gateway REST APIs con Step Functions

Scopri come usare Amazon API Gateway per creare, pubblicare, gestire e monitorare HTTP e REST APIs con Step Functions. Per l'integrazione con API Gateway, si definisce uno Task stato in Step Functions che chiama direttamente un API API Gateway HTTP o un REST endpoint Gateway, senza scrivere codice o fare affidamento su altre infrastrutture. Una definizione di Task stato include tutte le informazioni necessarie per la API chiamata. È inoltre possibile selezionare diversi metodi di autorizzazione.

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere Integrazione dei servizi ePassaggio di parametri a un servizio API in Step Functions.

Caratteristiche principali dell'integrazione con Optimized API Gateway
  • apigateway:invoke:non ha equivalenti nell'integrazione dei AWS SDK servizi. Invece, il servizio Optimized API Gateway chiama direttamente l'endpoint API Gateway.

APISupporto delle funzionalità Gateway

L'integrazione di Step Functions API Gateway supporta alcune funzionalità di API Gateway, ma non tutte. Per un elenco più dettagliato delle funzionalità supportate, consulta quanto segue.

  • Supportato dalle HTTP API integrazioni Step Functions API API Gateway REST API e Gateway:

    • Autorizzatori: IAM (utilizzando Signature Version 4), No Auth, Autorizzatori Lambda (basati su parametri di richiesta e basati su token con intestazione personalizzata)

    • APItipi: Regionali

    • APIgestione: nomi di API dominio API Gateway, API stage, Path, Query Parameters, Request Body

  • Supportato dall'HTTPAPIintegrazione Step Functions API Gateway. L'RESTAPIintegrazione Step Functions API Gateway che offre l'opzione per l'ottimizzazione per Edge APIs non è supportata.

  • Non supportato dall'integrazione Step Functions API Gateway:

    • Autorizzatori: Amazon Cognito, Native Open ID ConnectOAuth/2.0, intestazione di autorizzazione per autorizzatori Lambda basati su token

    • APItipi: Privato

    • APIgestione: nomi di dominio personalizzati

Per ulteriori informazioni su API Gateway HTTP e le sue REST APIs proprietà, vedere quanto segue.

Formato della richiesta

Quando si crea la definizione Task dello stato, Step Functions convalida i parametri, crea il necessario URL per eseguire la chiamata, quindi chiama il. API La risposta include il codice di HTTP stato, le intestazioni e il corpo della risposta. Il formato della richiesta ha parametri obbligatori e facoltativi.

Parametri di richiesta obbligatori

  • ApiEndpoint

    • Tipo: String

    • Il nome host di un API gatewayURL. Il formato è <API ID>.execute-api.<region>.amazonaws.com.

      L'APIID può contenere solo una combinazione dei seguenti caratteri alfanumerici: 0123456789abcdefghijklmnopqrstuvwxyz

  • Method

    • Tipo: Enum

    • Il HTTP metodo, che deve essere uno dei seguenti:

      • GET

      • POST

      • PUT

      • DELETE

      • PATCH

      • HEAD

      • OPTIONS

Parametri di richiesta opzionali

  • Headers

    • Tipo: JSON

    • HTTPle intestazioni consentono un elenco di valori associati alla stessa chiave.

  • Stage

    • Tipo: String

    • Il nome della fase in cui API viene distribuito in API Gateway. È facoltativo per chiunque utilizzi HTTP API lo $default stage.

  • Path

    • Tipo: String

    • Parametri del percorso che vengono aggiunti dopo l'APIendpoint.

  • QueryParameters

    • Tipo: JSON

    • Le stringhe di query consentono solo un elenco di valori associati alla stessa chiave.

  • RequestBody

    • Tipo: JSON or String

    • Il corpo della HTTP richiesta. Il suo tipo può essere un JSON oggetto oString. RequestBodyè supportato solo per i PUT HTTP metodi PATCHPOST, e.

  • AllowNullValues

    • Tipo: BOOLEAN — valore predefinito: false

    • Con l'impostazione predefinita, eventuali valori nulli nello stato di input della richiesta non verranno inviati al tuoAPI. Nell'esempio seguente, il category campo non verrà incluso nella richiesta, a meno che non AllowNullValues sia impostato su true nella definizione della macchina a stati.

      { "NewPet": { "type": "turtle", "price": 123, "category": null } }
      Nota

      Per impostazione predefinita, i campi con valori nulli nello stato di input della richiesta non verranno inviati al tuoAPI. È possibile forzare l'invio di valori null al proprio indirizzo API impostandolo true nella definizione della macchina AllowNullValues a stati.

  • AuthType

    • Tipo: JSON

    • Il metodo di autenticazione. Il metodo predefinito èNO_AUTH. I valori consentiti sono:

      • NO_AUTH

      • IAM_ROLE

      • RESOURCE_POLICY

      Per ulteriori informazioni, vedere Autenticazione e autorizzazione.

Nota

Per motivi di sicurezza, le seguenti chiavi di HTTP intestazione non sono attualmente consentite:

  • Qualsiasi cosa preceduta da, o. X-Forwarded X-Amz X-Amzn

  • Authorization

  • Connection

  • Content-md5

  • Expect

  • Host

  • Max-Forwards

  • Proxy-Authenticate

  • Server

  • TE

  • Transfer-Encoding

  • Trailer

  • Upgrade

  • Via

  • Www-Authenticate

Il seguente esempio di codice mostra come richiamare API Gateway utilizzando Step Functions.

{ "Type": "Task", "Resource":"arn:aws:states:::apigateway:invoke", "Parameters": { "ApiEndpoint": "example.execute-api.us-east-1.amazonaws.com", "Method": "GET", "Headers": { "key": ["value1", "value2"] }, "Stage": "prod", "Path": "bills", "QueryParameters": { "billId": ["123456"] }, "RequestBody": {}, "AuthType": "NO_AUTH" } }

Autenticazione e autorizzazione

È possibile utilizzare i seguenti metodi di autenticazione:

  • Nessuna autorizzazione: chiama API direttamente senza alcun metodo di autorizzazione.

  • IAMruolo: Con questo metodo, Step Functions assume il ruolo di macchina a stati, firma la richiesta con Signature Version 4 (SigV4), quindi chiama il. API

  • Politica delle risorse: Step Functions autentica la richiesta, quindi chiama il. API È necessario allegare una politica delle risorse alla API quale specifichi quanto segue:

    1. La macchina a stati che API richiamerà Gateway.

      Importante

      È necessario specificare la macchina a stati per limitarne l'accesso. In caso contrario, verrà concesso l'accesso a qualsiasi macchina a stati che autentichi la sua richiesta API Gateway con l'autenticazione della politica delle risorse. API

    2. That Step Functions è il servizio che chiama API Gateway:"Service": "states.amazonaws.com".

    3. La risorsa a cui desideri accedere, tra cui:

      • Tipo region.

      • account-idNella regione specificata.

      • Tipo api-id.

      • Tipo stage-name.

      • Il HTTP-VERB (metodo).

      • Tipo resource-path-specifier.

    Per un esempio di politica delle risorse, consulta IAMle politiche per Step Functions e API Gateway.

    Per ulteriori informazioni sul formato delle risorse, vedere Formato delle risorse delle autorizzazioni per l'esecuzione API in API Gateway nella API Gateway Developer Guide.

    Nota

    Le politiche relative alle risorse sono supportate solo per. REST API

Modelli di integrazione dei servizi

L'integrazione API Gateway supporta due modelli di integrazione dei servizi:

  • Richiesta e risposta, che è il modello di integrazione predefinito. Consente a Step Functions di passare alla fase successiva immediatamente dopo aver ricevuto una HTTP risposta.

  • Attendi una richiamata con Task Token(.waitForTaskToken), che attende la restituzione di un task token con un payload. Per usare il .waitForTaskToken pattern, aggiungi. waitForTaskSimbolo alla fine del campo Risorsa della definizione dell'attività, come mostrato nell'esempio seguente:

    { "Type": "Task", "Resource":"arn:aws:states:::apigateway:invoke.waitForTaskToken", "Parameters": { "ApiEndpoint": "example.execute-api.us-east-1.amazonaws.com", "Method": "POST", "Headers": { "TaskToken.$": "States.Array($$.Task.Token)" }, "Stage": "prod", "Path": "bills/add", "QueryParameters": {}, "RequestBody": { "billId": "my-new-bill" }, "AuthType": "IAM_ROLE" } }

Formato di output

Vengono forniti i seguenti parametri di output:

Nome Tipo Descrizione
ResponseBody JSON o String Il corpo della risposta della API chiamata.
Headers JSON Le intestazioni di risposta.
StatusCode Integer Il codice di HTTP stato della risposta.
StatusText String Il testo dello stato della risposta.

Un esempio di risposta:

{ "ResponseBody": { "myBills": [] }, "Headers": { "key": ["value1", "value2"] }, "StatusCode": 200, "StatusText": "OK" }

Gestione degli errori

Quando si verifica un errore, cause viene restituito un error and come segue:

  • Se il codice di HTTP stato è disponibile, l'errore verrà restituito nel formatoApiGateway.<HTTP Status Code>.

  • Se il codice di HTTP stato non è disponibile, l'errore verrà restituito nel formatoApiGateway.<Exception>.

In entrambi i casi, cause viene restituito come stringa.

L'esempio seguente mostra una risposta in cui si è verificato un errore:

{ "error": "ApiGateway.403", "cause": "{\"message\":\"Missing Authentication Token\"}" }
Nota

Un codice di stato 2XX indica l'esito positivo e non verrà restituito alcun errore. Tutti gli altri codici di stato o le eccezioni generate genereranno un errore.

IAMpolitiche per le chiamate verso Amazon API Gateway

I seguenti modelli di esempio mostrano come AWS Step Functions generare IAM politiche in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consulta In che modo Step Functions genera IAM politiche per servizi integrati e Scopri i modelli di integrazione dei servizi in Step Functions.

Risorse:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:Invoke" ], "Resource": [ "arn:[[region]]:[[accountId]]:*" ] } ] }

Il seguente esempio di codice mostra una politica delle risorse per chiamare API Gateway.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "states.amazonaws.com" }, "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:<region>:<account-id>:<api-id>/<stage-name>/<HTTP-VERB>/<resource-path-specifier>", "Condition": { "StringEquals": { "aws:SourceArn": [ "<SourceStateMachineArn>" ] } } } ] }