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à.
Chiama terze parti APIs nei flussi di lavoro Step Functions
Un HTTP Task è un tipo di Stato del flusso di lavoro delle attività stato che ti consente di chiamare qualsiasi terza parte pubblicaAPI, come Salesforce e Stripe, nei tuoi flussi di lavoro. Per chiamare una terza parteAPI, utilizza lo stato Task con la risorsa. arn:aws:states:::http:invoke
Quindi, fornisci i dettagli di configurazione dell'APIendpoint, come il API URL metodo che desideri utilizzare e i dettagli di autenticazione.
Se utilizzi Workflow Studio per creare una macchina a stati che contiene un HTTP Task, Workflow Studio genera automaticamente un ruolo di esecuzione con IAM le politiche per il HTTP Task. Per ulteriori informazioni, consulta Ruolo per il test HTTP delle attività in Workflow Studio.
Argomenti
- HTTPDefinizione dell'attività
- HTTPCampi delle attività
- Autenticazione per un task HTTP
- Unione dei dati di EventBridge connessione e HTTP di definizione delle attività
- Applicazione della URL codifica -encoding sul corpo della richiesta
- IAMautorizzazioni per eseguire un'attività HTTP
- HTTPEsempio di attività
- Test di un'attività HTTP
- Risposte alle attività non supportate HTTP
HTTPDefinizione dell'attività
La ASLdefinizione rappresenta un'HTTPattività con una http:invoke
risorsa. La seguente definizione di HTTP Task richiama uno Stripe API che restituisce un elenco di tutti i clienti.
"Call third-party API": {
"Type": "Task",
"Resource": "arn:aws:states:::http:invoke",
"Parameters": {
"ApiEndpoint": "https://api.stripe.com/v1/customers",
"Authentication": {
"ConnectionArn": "arn:aws:events:us-east-2
:123456789012
:connection/Stripe/81210c42-8af1-456b-9c4a-6ff02fc664ac"
},
"Method": "GET"
},
"End": true
}
HTTPCampi delle attività
Un'HTTPattività include i seguenti campi nella sua definizione.
Resource
(Obbligatorio)-
Per specificare un tipo di attività, ARN inseriscilo nel
Resource
campo. Per un HTTP Task, si specifica ilResource
campo come segue."Resource": "arn:aws:states:::http:invoke"
Parameters
(Obbligatorio)-
Contiene i
ConnectionArn
campiApiEndpoint
Method
, e che forniscono informazioni sulla terza parte API che si desidera chiamare.Parameters
contiene anche campi opzionali, comeHeaders
eQueryParameters
.È possibile specificare una combinazione di statico JSON e JsonPath
sintassi come Parameters
nelParameters
campo. Per ulteriori informazioni, consulta Passaggio di parametri a un servizio API in Step Functions.ApiEndpoint
(Obbligatorio)-
Specificare la URL terza parte API che si desidera chiamare. Per aggiungere parametri di interrogazione a loroURL, usa il campo.
QueryParameters
L'esempio seguente mostra come chiamare Stripe API per recuperare l'elenco di tutti i clienti."ApiEndpoint":"https://api.stripe.com/v1/customers"
È inoltre possibile specificare un percorso di riferimento utilizzando la JsonPath
sintassi per selezionare il JSON nodo che contiene la terza parte. API URL Ad esempio, supponiamo che tu voglia chiamare uno di Stripe APIs utilizzando un ID cliente specifico. Immagina di aver fornito il seguente input di stato. { "customer_id": "1234567890", "name": "John Doe" }
Per recuperare i dettagli di questo ID cliente utilizzando StripeAPI, specifica
ApiEndpoint
come mostrato nell'esempio seguente. Questo esempio utilizza una funzione intrinseca e un percorso di riferimento."ApiEndpoint.$":"States.Format('https://api.stripe.com/v1/customers/{}', $.customer_id)"
In fase di esecuzione, Step Functions risolve il valore di
ApiEndpoint
come segue.https://api.stripe.com/v1/customers/
1234567890
Method
(Obbligatorio)-
Specificate il HTTP metodo da utilizzare per chiamare una terza parteAPI. Puoi specificare uno di questi metodi nel tuo HTTP Task:GET,POST,PUT,DELETE, PATCHOPTIONS, oHEAD.
Ad esempio, per utilizzare il GET metodo, specifica il
Method
campo come segue."Method": "GET"
È inoltre possibile utilizzare un percorso di riferimento per specificare il metodo in fase di esecuzione. Ad esempio
"Method.$": "$.myHTTPMethod"
. Authentication
(Obbligatorio)-
Contiene il
ConnectionArn
campo che specifica come autenticare una chiamata di terze partiAPI. Step Functionssupporta l'autenticazione per una determinata areaApiEndpoint
utilizzando la risorsa di connessione di. Amazon EventBridgeConnectionArn
(Obbligatorio)-
Specifica la EventBridge connessione. ARN
Un HTTP task richiede una EventBridge connessione, che gestisce in modo sicuro le credenziali di autenticazione di un provider. API Una connessione specifica il tipo di autorizzazione e le credenziali da utilizzare per autorizzare una terza parte. API L'utilizzo di una connessione consente di evitare l'inserimento di segreti codificati, come API le chiavi, nella definizione della macchina a stati. In una connessione, è inoltre possibile specificare
Headers
QueryParameters
, e parametri.RequestBody
Quando si crea una EventBridge connessione, si forniscono i dettagli di autenticazione. Per ulteriori informazioni su come funziona l'autenticazione per un HTTP Task, consultaAutenticazione per un task HTTP.
L'esempio seguente mostra come specificare il
Authentication
campo nella definizione del HTTP task."Authentication": { "ConnectionArn": "arn:aws:events:us-east-2:
123456789012
:connection/Stripe/81210c42-8af1-456b-9c4a-6ff02fc664ac" } Headers
(facoltativo).-
Fornisce contesto e metadati aggiuntivi all'APIendpoint. È possibile specificare le intestazioni come stringa o matrice. JSON
È possibile specificare le intestazioni nella EventBridge connessione e nel
Headers
campo in un HTTP Task. Ti consigliamo di non includere nelHeaders
campo i dettagli di autenticazione API dei tuoi provider. Ti consigliamo di includere questi dettagli nella tua EventBridge connessione.Step Functionsaggiunge le intestazioni specificate nella EventBridge connessione alle intestazioni specificate nella definizione dell'HTTPattività. Se nella definizione e nella connessione sono presenti le stesse chiavi di intestazione, Step Functions utilizza i valori corrispondenti specificati nella EventBridge connessione per tali intestazioni. Per ulteriori informazioni su come Step Functions esegue l'unione dei dati, vedere. Unione dei dati di EventBridge connessione e HTTP di definizione delle attività
L'esempio seguente specifica un'intestazione che verrà inclusa in una chiamata di terze partiAPI:.
content-type
"Headers": { "content-type": "application/json" }
È inoltre possibile utilizzare un percorso di riferimento per specificare le intestazioni in fase di esecuzione. Ad esempio
"Headers.$": "$.myHTTPHeaders"
.Step Functionsimposta le
Host
intestazioniUser-Agent
Range
, e. Step Functionsimposta il valore dell'Host
intestazione in base al nome API che stai chiamando. Di seguito è riportato un esempio di queste intestazioni.User-Agent: Amazon|StepFunctions|HttpInvoke|
us-east-1
, Range: bytes=0-262144, Host: api.stripe.comNon è possibile utilizzare le seguenti intestazioni nella definizione dell'HTTPattività. Se si utilizzano queste intestazioni, l'HTTPoperazione ha esito negativo e viene visualizzato l'
States.Runtime
errore.-
A-IM
-
Accept-Charset
-
Accept-Datetime
-
Accept-Encoding
-
Cache-Control
-
Connessione
-
Content-Encoding
-
Contenuto- MD5
-
Data
-
Expect
-
Forwarded
-
Da
-
Host
-
HTTP2-Impostazioni
-
If-Match
-
If-Modified-Since
-
If-None-Match
-
If-Range
-
If-Unmodified-Since
-
Max-Forwards
-
Origin
-
Pragma
-
Proxy-Authorization
-
Referente
-
Server
-
TE
-
Trailer
-
Transfer-Encoding
-
Upgrade
-
Via
-
Attenzione
-
x-forwarded-*
-
x-amz-*
-
x-amzn-*
-
QueryParameters
(facoltativo).-
Inserisce coppie chiave-valore alla fine di un. API URL È possibile specificare i parametri di interrogazione come stringa, JSON matrice o oggetto. JSON Step FunctionsURLcodifica automaticamente i parametri di interrogazione quando chiama una terza parte. API
Ad esempio, supponiamo di voler chiamare Stripe per API cercare clienti che effettuano transazioni in dollari USA (). USD Immagina di aver fornito quanto segue
QueryParameters
come input di stato."QueryParameters": { "currency": "usd" }
In fase di esecuzione, Step Functions aggiunge API URL quanto segue.
QueryParameters
https://api.stripe.com/v1/customers/search?currency=usd
È inoltre possibile utilizzare un percorso di riferimento per specificare i parametri della query in fase di esecuzione. Ad esempio
"QueryParameters.$": "$.myQueryParameters"
.Se hai specificato i parametri di query nella EventBridge connessione, Step Functions aggiunge questi parametri di query ai parametri di query specificati nella definizione del HTTP task. Se nella definizione e nella connessione sono presenti le stesse chiavi dei parametri di interrogazione, Step Functions utilizza i valori corrispondenti specificati nella EventBridge connessione per tali intestazioni. Per ulteriori informazioni su come Step Functions esegue l'unione dei dati, vedere. Unione dei dati di EventBridge connessione e HTTP di definizione delle attività
Transform
(facoltativo).-
Contiene i
RequestEncodingOptions
campiRequestBodyEncoding
e. Per impostazione predefinita, Step Functions invia il corpo della richiesta come JSON dati a un API endpoint.Se il API provider accetta i corpi delle
form-urlencoded
richieste, utilizza ilTransform
campo per specificare URL -encoding per i corpi della richiesta. È inoltre necessario specificare l'content-type
intestazione come.application/x-www-form-urlencoded
Step Functionsquindi URL codifica automaticamente il corpo della richiesta.RequestBodyEncoding
-
Specifica URL -encoding del corpo della richiesta. È possibile specificare uno di questi valori: o.
NONE
URL_ENCODED
-
NONE
— Il corpo della HTTP richiesta sarà la serializzazione JSON delRequestBody
campo. Si tratta del valore di default. -
URL_ENCODED
— Il corpo della HTTP richiesta sarà costituito dai dati del modulo URL codificati dal campo.RequestBody
-
RequestEncodingOptions
-
Determina l'opzione di codifica da utilizzare per gli array nel corpo della richiesta, se impostata su.
RequestBodyEncoding
URL_ENCODED
Step Functionssupporta le seguenti opzioni di codifica degli array. Per ulteriori informazioni su queste opzioni e sui relativi esempi, vedereApplicazione della URL codifica -encoding sul corpo della richiesta.
-
INDICES
— Codifica gli array utilizzando il valore di indice degli elementi dell'array. Per impostazione predefinita, Step Functions utilizza questa opzione di codifica. -
REPEAT
— Ripete una chiave per ogni elemento di un array. -
COMMAS
— Codifica tutti i valori di una chiave come elenco di valori delimitato da virgole. -
BRACKETS
— Ripete una chiave per ogni elemento di una matrice e aggiunge una parentesi, [], alla chiave per indicare che si tratta di una matrice.
-
L'esempio seguente imposta URL -encoding per i dati del corpo della richiesta. Specifica inoltre di utilizzare l'opzione di
COMMAS
codifica per gli array nel corpo della richiesta."Transform": { "RequestBodyEncoding": "URL_ENCODED", "RequestEncodingOptions": { "ArrayFormat": "COMMAS" } }
RequestBody
(facoltativo).-
Accetta JSON i dati forniti nell'input dello stato. In
RequestBody
, puoi specificare una combinazione di statico JSON e JsonPathsintassi. Ad esempio, supponiamo di fornire il seguente input di stato: { "CardNumber": "1234567890", "ExpiryDate": "09/25" }
Per utilizzare questi valori di
CardNumber
eExpiryDate
nel corpo della richiesta in fase di esecuzione, potete specificare i seguenti JSON dati nel corpo della richiesta."RequestBody": { "Card": { "Number.$": "$.CardNumber", "Expiry.$": "$.ExpiryDate", "Name": "John Doe", "Address": "123 Any Street, Any Town, USA" } }
Se la terza parte che API desideri chiamare richiede i corpi della
form-urlencoded
richiesta, devi specificare URL -encoding per i dati del corpo della richiesta. Per ulteriori informazioni, consulta Applicazione della URL codifica -encoding sul corpo della richiesta.
Autenticazione per un task HTTP
Un HTTP Task richiede una EventBridge connessione, che gestisce in modo sicuro le credenziali di autenticazione di un API provider. Una connessione specifica il tipo di autorizzazione e le credenziali da utilizzare per autorizzare una terza parte. API L'utilizzo di una connessione consente di evitare l'inserimento di segreti codificati, come API le chiavi, nella definizione della macchina a stati. Una EventBridge connessione supporta gli schemi di autorizzazione Basic OAuth e API Key.
Quando si crea una EventBridge connessione, si forniscono i dettagli di autenticazione. È inoltre possibile includere i parametri header, body e query necessari per l'autorizzazione con unAPI. È necessario includere la connessione ARN in qualsiasi HTTP attività che richiami una terza parteAPI.
Quando si crea una connessione e si aggiungono parametri di autorizzazione, EventBridge crea un indirizzo segreto AWS Secrets Manager. In questo segreto, EventBridge memorizza i parametri di connessione e autorizzazione in forma crittografata. Per creare o aggiornare correttamente una connessione, è necessario utilizzare un Account AWS utente autorizzato a utilizzare Secrets Manager. Per ulteriori informazioni sulle IAM autorizzazioni necessarie alla macchina a stati per accedere a una EventBridge connessione, vedereIAMautorizzazioni per eseguire un'attività HTTP.
L'immagine seguente mostra come Step Functions gestisce l'autenticazione per le API chiamate di terze parti utilizzando una EventBridge connessione. La EventBridge connessione che gestisce le credenziali di un API provider terzo. EventBridgecrea un indirizzo segreto Secrets Manager per memorizzare i parametri di connessione e autorizzazione in forma crittografata.
![Diagramma che mostra come Step Functions utilizza le EventBridge connessioni per le chiamate agli HTTP endpoint.](images/http-task-how-auth-works.png)
Unione dei dati di EventBridge connessione e HTTP di definizione delle attività
Quando richiami un HTTP Task, puoi specificare i dati nella tua EventBridge connessione e nella definizione del HTTP Task. Questi dati includono Headers
QueryParameters
, e RequestBody
parametri. Prima di chiamare una terza parteAPI, Step Functions unisce il corpo della richiesta con i parametri del corpo della connessione in tutti i casi, tranne se il corpo della richiesta è una stringa e i parametri del corpo di connessione non sono vuoti. In questo caso, il HTTP Task ha esito negativo e viene restituito l'States.Runtime
errore.
Se sono presenti chiavi duplicate specificate nella definizione dell'HTTPattività e nella EventBridge connessione, Step Functions sovrascrive i valori del HTTP Task con i valori della connessione.
L'elenco seguente descrive come Step Functions unire i dati prima di chiamare una terza parte: API
-
Intestazioni: Step Functions aggiunge le intestazioni specificate nella connessione alle intestazioni nel
Headers
campo dell'Attività. HTTP In caso di conflitto tra le chiavi di intestazione, Step Functions utilizza i valori specificati nella connessione per tali intestazioni. Ad esempio, se hai specificato l'content-type
intestazione sia nella definizione dell'HTTPattività che nella EventBridge connessione, Step Functions utilizza il valore dell'content-type
intestazione specificato nella connessione. -
Parametri di interrogazione: Step Functions aggiunge tutti i parametri di interrogazione specificati nella connessione ai parametri di interrogazione nel
QueryParameters
campo del HTTP Task. In caso di conflitto tra le chiavi dei parametri di query, Step Functions utilizza i valori specificati nella connessione per tali parametri di query. Ad esempio, se hai specificato il parametro dimaxItems
query sia nella definizione dell'HTTPattività che nella EventBridge connessione, Step Functions utilizza il valore del parametro dimaxItems
query specificato nella connessione. -
Parametri corpo
-
Step Functionsaggiunge tutti i valori del corpo della richiesta specificati nella connessione al corpo della richiesta nel
RequestBody
campo del HTTP Task. In caso di conflitto tra le chiavi del corpo della richiesta, Step Functions utilizza i valori specificati nella connessione per il corpo della richiesta. Ad esempio, supponiamo di aver specificato unMode
campo sia nellaRequestBody
definizione dell'HTTPattività che nella EventBridge connessione. Step Functionsutilizza il valore delMode
campo specificato nella connessione. -
Se si specifica il corpo della richiesta come stringa anziché come JSON oggetto e la EventBridge connessione contiene anche il corpo della richiesta, non è Step Functions possibile unire il corpo della richiesta specificato in entrambe queste posizioni. Fallisce il HTTP Task con l'
States.Runtime
errore.
Step Functionsapplica tutte le trasformazioni e serializza il corpo della richiesta dopo aver completato la fusione del corpo della richiesta.
-
L'esempio seguente imposta i RequestBody
campi Headers
QueryParameters
, e sia nel Task che nella connessione. HTTP EventBridge
HTTPDefinizione dell'attività
{ "Comment": "Data merging example for HTTP Task and EventBridge connection", "StartAt": "ListCustomers", "States": { "ListCustomers": { "Type": "Task", "Resource": "arn:aws:states:::http:invoke", "Parameters": { "Authentication": { "ConnectionArn": "arn:aws:events:us-east-1:
123456789012
:connection/Example/81210c42-8af1-456b-9c4a-6ff02fc664ac
" }, "ApiEndpoint": "https:/example.com/path
", "Method": "GET", "Headers": {"Request-Id": "my_request_id", "Header-Param": "state_machine_header_param"
}, "RequestBody": {"Job": "Software Engineer", "Company": "AnyCompany", "BodyParam": "state_machine_body_param"
}, "QueryParameters": {"QueryParam": "state_machine_query_param"
} } } } }
connessione EventBridge
{ "AuthorizationType": "
API_KEY
", "AuthParameters": { "ApiKeyAuthParameters": { "ApiKeyName": "ApiKey
", "ApiKeyValue": "key_value
" }, "InvocationHttpParameters": { "BodyParameters": [ {"Key": "BodyParam", "Value": "connection_body_param"
} ], "HeaderParameters": [ {"Key": "Header-Param", "Value": "connection_header_param"
} ], "QueryStringParameters": [ {"Key": "QueryParam", "Value": "connection_query_param"
} ] } } }
In questo esempio, le chiavi duplicate vengono specificate in HTTP Attività e EventBridge connessione. Pertanto, Step Functions sovrascrive i valori del HTTP Task con i valori della connessione. Il seguente frammento di codice mostra la HTTP richiesta Step Functions inviata alla terza parte. API
POST /path?QueryParam=connection_query_param HTTP/1.1
Apikey: key_value
Content-Length: 79
Content-Type: application/json; charset=UTF-8
Header-Param: connection_header_param
Host: example.com
Range: bytes=0-262144
Request-Id: my_request_id
User-Agent: Amazon|StepFunctions|HttpInvoke|us-east-1
{"Job":"Software Engineer","Company":"AnyCompany","BodyParam":"connection_body_param"}
Applicazione della URL codifica -encoding sul corpo della richiesta
Per impostazione predefinita, Step Functions invia il corpo della richiesta come JSON dati a un API endpoint. Se il API provider di terze parti richiede i corpi delle form-urlencoded
richieste, è necessario specificare URL -encoding per i corpi della richiesta. Step Functionsquindi URL -codifica automaticamente il corpo della richiesta in base all'opzione URL -encoding selezionata.
Specificate URL -encoding usando il campo. Transform
Questo campo contiene il RequestBodyEncoding
campo che specifica se si desidera applicare o meno URL -encoding ai corpi della richiesta. Quando specificate il RequestBodyEncoding
campo, Step Functions converte il corpo della richiesta in quello della JSON richiesta prima di chiamare la form-urlencoded
terza parte. API È inoltre necessario specificare l'content-type
intestazione in application/x-www-form-urlencoded
quanto APIs i dati con URL codifica accettata prevedono l'intestazione. content-type
Per codificare gli array nel corpo della richiesta, Step Functions fornisce le seguenti opzioni di codifica dell'array.
-
INDICES
— Ripete una chiave per ogni elemento di un array e aggiunge una parentesi, [], alla chiave per indicare che si tratta di un array. Questa parentesi contiene l'indice dell'elemento dell'array. L'aggiunta dell'indice consente di specificare l'ordine degli elementi dell'array. Per impostazione predefinita, Step Functions utilizza questa opzione di codifica.Ad esempio, se il corpo della richiesta contiene il seguente array.
{"array": ["a","b","c","d"]}
Step Functionscodifica questo array nella seguente stringa.
array[0]=a&array[1]=b&array[2]=c&array[3]=d
-
REPEAT
— Ripete una chiave per ogni elemento di un array.Ad esempio, se il corpo della richiesta contiene il seguente array.
{"array": ["a","b","c","d"]}
Step Functionscodifica questo array nella seguente stringa.
array=a&array=b&array=c&array=d
-
COMMAS
— Codifica tutti i valori di una chiave come elenco di valori delimitato da virgole.Ad esempio, se il corpo della richiesta contiene il seguente array.
{"array": ["a","b","c","d"]}
Step Functionscodifica questo array nella seguente stringa.
array=a,b,c,d
-
BRACKETS
— Ripete una chiave per ogni elemento di un array e aggiunge una parentesi, [], alla chiave per indicare che si tratta di una matrice.Ad esempio, se il corpo della richiesta contiene il seguente array.
{"array": ["a","b","c","d"]}
Step Functionscodifica questo array nella seguente stringa.
array[]=a&array[]=b&array[]=c&array[]=d
IAMautorizzazioni per eseguire un'attività HTTP
Il ruolo di esecuzione della macchina a stati deve avere lestates:InvokeHTTPEndpoint
, events:RetrieveConnectionCredentials
secretsmanager:GetSecretValue
, e secretsmanager:DescribeSecret
le autorizzazioni affinché un HTTP Task possa chiamare una terza parte. API Il seguente esempio di IAM politica concede i privilegi minimi richiesti al ruolo di macchina a stati per chiamare Stripe. APIs Questa IAM politica concede inoltre l'autorizzazione al ruolo della macchina a stati per accedere a una EventBridge connessione specifica, incluso il segreto per questa connessione archiviato in Secrets Manager.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": "states:InvokeHTTPEndpoint", "Resource": "arn:aws:states:us-east-2:
123456789012
:stateMachine:myStateMachine
", "Condition": { "StringEquals": { "states:HTTPMethod": "GET" }, "StringLike": { "states:HTTPEndpoint": "https://api.stripe.com/*" } } }, { "Sid": "Statement2", "Effect": "Allow", "Action": [ "events:RetrieveConnectionCredentials", ], "Resource": "arn:aws:events:us-east-2:123456789012
:connection/oauth_connection/aeabd89e-d39c-4181-9486-9fe03e6f286a
" }, { "Sid": "Statement3", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": "arn:aws:secretsmanager:*:*:secret:events!connection/*" } ] }
HTTPEsempio di attività
La seguente definizione di macchina a stati mostra un HTTP Task che include i RequestBody
parametri Headers
QueryParameters
Transform
,, e. Il HTTP Task chiama StripeAPI, https://api.stripe.com/v1/ fattura, per generare una fattura. Il HTTP Task specifica anche URL -encoding per il corpo della richiesta utilizzando l'opzione di codifica. INDICES
Assicurati di aver creato una connessione. EventBridge L'esempio seguente mostra una connessione creata utilizzando il tipo di BASIC autenticazione.
{
"Type": "BASIC",
"AuthParameters": {
"BasicAuthParameters": {
"Password": "myPassword",
"Username": "myUsername"
},
}
}
Ricordati di sostituire il italicized
testo con le informazioni specifiche della risorsa.
{ "Comment": "A state machine that uses HTTP Task", "StartAt": "CreateInvoiceAPI", "States": { "CreateInvoiceAPI": { "Type": "Task", "Resource": "arn:aws:states:::http:invoke", "Parameters": { "ApiEndpoint": "https://api.stripe.com/v1/invoices", "Method": "POST", "Authentication": { "ConnectionArn": ""arn:aws:events:
us-east-2
:123456789012
:connection/Stripe/81210c42-8af1-456b-9c4a-6ff02fc664ac" }, "Headers": { "Content-Type": "application/x-www-form-urlencoded" }, "RequestBody": { "customer.$": "$.customer_id", "description": "Monthly subscription", "metadata": { "order_details": "monthly report data" } }, "Transform": { "RequestBodyEncoding": "URL_ENCODED", "RequestEncodingOptions": { "ArrayFormat": "INDICES" } } }, "Retry": [ { "ErrorEquals": [ "States.Http.StatusCode.429", "States.Http.StatusCode.503", "States.Http.StatusCode.504", "States.Http.StatusCode.502" ], "BackoffRate": 2, "IntervalSeconds": 1, "MaxAttempts": 3, "JitterStrategy": "FULL" } ], "Catch": [ { "ErrorEquals": [ "States.Http.StatusCode.404", "States.Http.StatusCode.400", "States.Http.StatusCode.401", "States.Http.StatusCode.409", "States.Http.StatusCode.500" ], "Comment": "Handle all non 200 ", "Next": "HandleInvoiceFailure" } ], "End": true } } }
Per eseguire questa macchina a stati, fornisci l'ID cliente come input, come mostrato nell'esempio seguente:
{
"customer_id": "1234567890"
}
L'esempio seguente mostra la HTTP richiesta che Step Functions viene inviata a StripeAPI.
POST /v1/invoices HTTP/1.1
Authorization: Basic <base64 of username and password>
Content-Type: application/x-www-form-urlencoded
Host: api.stripe.com
Range: bytes=0-262144
Transfer-Encoding: chunked
User-Agent: Amazon|StepFunctions|HttpInvoke|us-east-1
description=Monthly%20subscription&metadata%5Border_details%5D=monthly%20report%20data&customer=1234567890
Test di un'attività HTTP
Puoi utilizzarlo TestStateAPItramite la console o AWS CLI per testare un HTTP Task. SDK La procedura seguente descrive come utilizzare il TestState API nella Step Functions console. Puoi testare in modo iterativo i dettagli della API richiesta, della risposta e dell'autenticazione finché il HTTP Task non funzioni come previsto.
Verifica lo stato di un HTTP Task nella console Step Functions
-
Apri la console Step Functions
. -
Scegli Crea macchina a stati per iniziare a creare una macchina a stati o scegli una macchina a stati esistente che contiene un HTTP Task.
Fai riferimento al Passaggio 4 se stai testando l'attività in una macchina a stati esistente.
-
In Workflow Studio, configura visivamente un'HTTPattività. modalità di progettazione Oppure scegli la modalità Codice per copiare e incollare la definizione della macchina a stati dal tuo ambiente di sviluppo locale.
-
In modalità Progettazione, scegliete Test state nel Pannello Inspector pannello di Workflow Studio.
-
Nella finestra di dialogo Test state, effettuate le seguenti operazioni:
-
Per Ruolo di esecuzione, scegliete un ruolo di esecuzione per testare lo stato. Se non disponi di un ruolo con autorizzazioni sufficienti per un'HTTPattività, consulta Ruolo per il test HTTP delle attività in Workflow Studio per creare un ruolo.
-
(Facoltativo) Fornisci tutti gli JSON input necessari allo stato selezionato per il test.
-
Per il livello di ispezione, mantieni la selezione predefinita di INFO. Questo livello mostra lo stato della API chiamata e lo stato dell'output. Questo è utile per verificare rapidamente la API risposta.
-
Scegli Avvia test.
-
Se il test ha esito positivo, l'output dello stato viene visualizzato sul lato destro della finestra di dialogo Test state. Se il test fallisce, viene visualizzato un errore.
Nella scheda Dettagli dello stato della finestra di dialogo, puoi vedere la definizione dello stato e un link alla tua EventBridgeconnessione.
-
Modificare il livello di ispezione in TRACE. Questo livello mostra la HTTP richiesta e la risposta non elaborate ed è utile per verificare intestazioni, parametri di query e altri dettagli API specifici.
-
Scegli la casella di controllo Rivela segreti. In combinazione con TRACE, questa impostazione consente di visualizzare i dati sensibili inseriti dalla EventBridge connessione, come API le chiavi. L'identità IAM utente utilizzata per accedere alla console deve disporre dell'autorizzazione per eseguire l'
states:RevealSecrets
azione. Senza questa autorizzazione, all'avvio Step Functions del test viene generato un errore di accesso negato. Per un esempio di IAM policy che imposta l'states:RevealSecrets
autorizzazione, vediIAMautorizzazioni per l'utilizzo TestState API.L'immagine seguente mostra un test per un HTTP Task che ha esito positivo. Il livello di ispezione per questo stato è impostato su. TRACE La scheda HTTPRichiesta e risposta nell'immagine seguente mostra il risultato della API chiamata di terze parti.
-
Scegli Avvia test.
-
Se il test ha esito positivo, puoi visualizzare HTTP i tuoi dati nella scheda HTTPRichiesta e risposta.
-
Risposte alle attività non supportate HTTP
Un HTTP task ha esito negativo con l'States.Runtime
errore se una delle seguenti condizioni è vera per la risposta restituita:
-
La risposta contiene un'intestazione del tipo di contenuto di
application/octet-stream
,image/*
,video/*
o.audio/*
-
La risposta non può essere letta come una stringa valida. Ad esempio, dati binari o di immagine.