Chiama terze parti APIs nei flussi di lavoro 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à.

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.

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 il Resource campo come segue.

"Resource": "arn:aws:states:::http:invoke"
Parameters (Obbligatorio)

Contiene i ConnectionArn campi ApiEndpointMethod, e che forniscono informazioni sulla terza parte API che si desidera chiamare. Parameterscontiene anche campi opzionali, come Headers eQueryParameters.

È possibile specificare una combinazione di statico JSON e JsonPathsintassi come Parameters nel Parameters 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 JsonPathsintassi 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 area ApiEndpoint utilizzando la risorsa di connessione di. Amazon EventBridge

ConnectionArn(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 HeadersQueryParameters, 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 nel Headers 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 intestazioni User-AgentRange, e. Step Functionsimposta il valore dell'Hostintestazione 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.com

Non è possibile utilizzare le seguenti intestazioni nella definizione dell'HTTPattività. Se si utilizzano queste intestazioni, l'HTTPoperazione ha esito negativo e viene visualizzato l'States.Runtimeerrore.

  • 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 campi RequestBodyEncoding 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 il Transform campo per specificare URL -encoding per i corpi della richiesta. È inoltre necessario specificare l'content-typeintestazione 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 del RequestBody 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. InRequestBody, 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 e ExpiryDate 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.

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 HeadersQueryParameters, 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.Runtimeerrore.

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-typeintestazione sia nella definizione dell'HTTPattività che nella EventBridge connessione, Step Functions utilizza il valore dell'content-typeintestazione 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 di maxItems query sia nella definizione dell'HTTPattività che nella EventBridge connessione, Step Functions utilizza il valore del parametro di maxItems 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 un Mode campo sia nella RequestBody definizione dell'HTTPattività che nella EventBridge connessione. Step Functionsutilizza il valore del Mode 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.Runtimeerrore.

    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 HeadersQueryParameters, 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-typeintestazione 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:RetrieveConnectionCredentialssecretsmanager: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 QueryParametersTransform,, 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
  1. Apri la console Step Functions.

  2. 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.

  3. 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.

  4. In modalità Progettazione, scegliete Test state nel Pannello Inspector pannello di Workflow Studio.

  5. Nella finestra di dialogo Test state, effettuate le seguenti operazioni:

    1. 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.

    2. (Facoltativo) Fornisci tutti gli JSON input necessari allo stato selezionato per il test.

    3. 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.

    4. Scegli Avvia test.

    5. 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.

    6. 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.

    7. 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:RevealSecretsazione. 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:RevealSecretsautorizzazione, 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.

      Uscita di uno stato selezionato che supera il test per il TRACElivello.
    8. Scegli Avvia test.

    9. 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.Runtimeerrore se una delle seguenti condizioni è vera per la risposta restituita:

  • La risposta contiene un'intestazione del tipo di contenuto diapplication/octet-stream,image/*, video/* o. audio/*

  • La risposta non può essere letta come una stringa valida. Ad esempio, dati binari o di immagine.