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.
-
La pagina dei concetti di Amazon API Gateway.
-
Scelta tra HTTP APIs e REST APIs nella guida per sviluppatori di API Gateway.
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.rproxy.goskope.comL'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
orString
-
Il corpo della HTTP richiesta. Il suo tipo può essere un
JSON
oggetto oString
.RequestBody
è supportato solo per iPUT
HTTP metodiPATCH
POST
, 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 nonAllowNullValues
sia impostato sutrue
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 macchinaAllowNullValues
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:
-
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
-
That Step Functions è il servizio che chiama API Gateway:
"Service": "states.amazonaws.com"
. -
La risorsa a cui desideri accedere, tra cui:
-
Tipo
region
. -
account-id
Nella 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 formato
ApiGateway.
.<HTTP Status Code>
-
Se il codice di HTTP stato non è disponibile, l'errore verrà restituito nel formato
ApiGateway.
.<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>
"
]
}
}
}
]
}