As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Chame terceiros APIs nos fluxos de trabalho do Step Functions
Uma HTTP tarefa é um tipo de Estado do fluxo de trabalho da tarefa estado que permite chamar qualquer pessoa pública ou terceirizadaAPI, como Salesforce e Stripe, em seus fluxos de trabalho. Para chamar um terceiroAPI, use o estado Tarefa com o arn:aws:states:::http:invoke
recurso. Em seguida, forneça os detalhes da configuração do API endpoint, como o API URL método que você deseja usar e os detalhes da autenticação.
Se você usa o Workflow Studio para criar sua máquina de estado que contém uma HTTP tarefa, o Workflow Studio gera automaticamente uma função de execução com IAM políticas para a HTTP tarefa. Para obter mais informações, consulte Função para testar HTTP tarefas no Workflow Studio.
Tópicos
- HTTPDefinição de tarefa
- HTTPCampos de tarefas
- Autenticação para uma HTTP tarefa
- Mesclando dados de EventBridge conexão e definição de HTTP tarefas
- Aplicando a URL codificação -no corpo da solicitação
- IAMpermissões para executar uma HTTP tarefa
- HTTPExemplo de tarefa
- Testando uma HTTP tarefa
- Respostas de HTTP tarefas não suportadas
HTTPDefinição de tarefa
A ASLdefinição representa uma HTTP tarefa com http:invoke
recurso. A definição de HTTP tarefa a seguir invoca um Stripe API que retorna uma lista de todos os clientes.
"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
}
HTTPCampos de tarefas
Uma HTTP tarefa inclui os seguintes campos em sua definição.
Resource
(obrigatório)-
Para especificar um tipo de tarefa, forneça-o ARN no
Resource
campo. Para uma HTTP tarefa, você especifica oResource
campo da seguinte forma."Resource": "arn:aws:states:::http:invoke"
Parameters
(obrigatório)-
Contém os
ConnectionArn
camposApiEndpoint
Method
,, e que fornecem informações sobre o terceiro para o qual API você deseja ligar.Parameters
também contém campos opcionais, comoHeaders
QueryParameters
e.Você pode especificar uma combinação de estática JSON e JsonPath
sintaxe como Parameters
noParameters
campo. Para obter mais informações, consulte Passando parâmetros para um serviço API em Step Functions.ApiEndpoint
(Obrigatório)-
Especifica o URL terceiro para o API qual você deseja ligar. Para acrescentar parâmetros de consulta ao, use o URL campo.
QueryParameters
O exemplo a seguir mostra como você pode ligar para um Stripe API para obter a lista de todos os clientes."ApiEndpoint":"https://api.stripe.com/v1/customers"
Você também pode especificar um caminho de referência usando a JsonPath
sintaxe para selecionar o JSON nó que contém o terceiro APIURL. Por exemplo, digamos que você queira ligar para um dos Stripe APIs usando um ID de cliente específico. Imagine que você tenha fornecido a entrada de estado a seguir. { "customer_id": "1234567890", "name": "John Doe" }
Para recuperar os detalhes desse ID de cliente usando um StripeAPI, especifique o
ApiEndpoint
conforme mostrado no exemplo a seguir. Este exemplo usa uma função intrínseca e um caminho de referência."ApiEndpoint.$":"States.Format('https://api.stripe.com/v1/customers/{}', $.customer_id)"
Em runtime, o Step Functions resolve o valor de
ApiEndpoint
da forma a seguir.https://api.stripe.com/v1/customers/
1234567890
Method
(obrigatório)-
Especifica o HTTP método que você deseja usar para chamar um terceiroAPI. Você pode especificar um desses métodos em sua HTTP tarefa:GET,POST,PUT,DELETE,PATCH,OPTIONS, ouHEAD.
Por exemplo, para usar o GET método, especifique o
Method
campo da seguinte forma."Method": "GET"
Também é possível usar um caminho de referência para especificar o método em runtime. Por exemplo,
"Method.$": "$.myHTTPMethod"
. Authentication
(Obrigatório)-
Contém o
ConnectionArn
campo que especifica como autenticar uma chamada de terceirosAPI. Step Functionssuporta autenticação para um especificadoApiEndpoint
usando o recurso de conexão doAmazon EventBridge.ConnectionArn
(Obrigatório)-
Especifica a EventBridge conexãoARN.
Uma HTTP tarefa requer uma EventBridge conexão, que gerencia com segurança as credenciais de autenticação de um provedor. API Uma conexão especifica o tipo de autorização e as credenciais a serem usadas para autorizar um terceiro. API Usar uma conexão ajuda a evitar a codificação de segredos, como API chaves, na definição de sua máquina de estado. Em uma conexão, também é possível especificar os parâmetros
Headers
,QueryParameters
eRequestBody
.Ao criar uma EventBridge conexão, você fornece seus detalhes de autenticação. Para obter mais informações sobre como a autenticação funciona para uma HTTP tarefa, consulteAutenticação para uma HTTP tarefa.
O exemplo a seguir mostra como você pode especificar o
Authentication
campo em sua definição de HTTP tarefa."Authentication": { "ConnectionArn": "arn:aws:events:us-east-2:
123456789012
:connection/Stripe/81210c42-8af1-456b-9c4a-6ff02fc664ac" } Headers
(opcional)-
Fornece contexto e metadados adicionais ao API endpoint. Você pode especificar cabeçalhos como uma string ou JSON matriz.
Você pode especificar cabeçalhos na EventBridge conexão e no
Headers
campo em uma HTTP tarefa. Recomendamos que você não inclua detalhes de autenticação de seus API provedores noHeaders
campo. Recomendamos incluir esses detalhes na conexão com o EventBridge.Step Functionsadiciona os cabeçalhos que você especifica na EventBridge conexão aos cabeçalhos que você especifica na definição da HTTP Tarefa. Se as mesmas chaves de cabeçalho estiverem presentes na definição e na conexão, o Step Functions usará os valores correspondentes especificados na conexão com o EventBridge nesses cabeçalhos. Para obter mais informações sobre como o Step Functions realiza a mesclagem de dados, consulte Mesclando dados de EventBridge conexão e definição de HTTP tarefas.
O exemplo a seguir especifica um cabeçalho que será incluído em uma API chamada de terceiros:
content-type
."Headers": { "content-type": "application/json" }
Também é possível usar um caminho de referência para especificar os cabeçalhos em runtime. Por exemplo,
"Headers.$": "$.myHTTPHeaders"
.Step Functionsdefine os
User-Agent
Host
cabeçalhosRange
, e. Step Functionsdefine o valor doHost
cabeçalho com base no API que você está chamando. Veja a seguir um exemplo de valor desses cabeçalhos.User-Agent: Amazon|StepFunctions|HttpInvoke|
us-east-1
, Range: bytes=0-262144, Host: api.stripe.comVocê não pode usar os cabeçalhos a seguir na definição de HTTP tarefas. Se você usar esses cabeçalhos, a HTTP tarefa falhará com o
States.Runtime
erro.-
A-IM
-
Accept-Charset
-
Accept-Datetime
-
Accept-Encoding
-
Cache-Control
-
Conexão
-
Content-Encoding
-
Conteúdo- MD5
-
Data
-
Expect
-
Encaminhado
-
De
-
Host
-
HTTP2-Configurações
-
If-Match
-
If-Modified-Since
-
If-None-Match
-
If-Range
-
If-Unmodified-Since
-
Max-Forwards
-
Origem
-
Pragma
-
Proxy-Authorization
-
Referer
-
Servidor
-
TE
-
Trailer
-
Transfer-Encoding
-
Upgrade
-
Via
-
Aviso
-
x-forwarded-*
-
x-amz-*
-
x-amzn-*
-
QueryParameters
(opcional)-
Insere pares de valores-chave no final de um. API URL Você pode especificar os parâmetros de consulta como uma string, JSON matriz ou JSON objeto. Step FunctionsURLcodifica automaticamente os parâmetros de consulta quando chama um terceiro. API
Por exemplo, digamos que você queira ligar para o Stripe API para pesquisar clientes que fazem suas transações em dólares americanos (USD). Imagine que você tenha fornecido
QueryParameters
a seguir como a entrada de estado."QueryParameters": { "currency": "usd" }
Em tempo de execução, Step Functions acrescenta o
QueryParameters
ao da API URL seguinte forma.https://api.stripe.com/v1/customers/search?currency=usd
Também é possível usar um caminho de referência para especificar os parâmetros de consulta em runtime. Por exemplo,
"QueryParameters.$": "$.myQueryParameters"
.Se você tiver especificado parâmetros de consulta em sua EventBridge conexão, Step Functions adicione esses parâmetros de consulta aos parâmetros de consulta especificados na definição de HTTP Tarefa. Se as mesmas chaves de parâmetros de consulta estiverem presentes na definição e na conexão, o Step Functions usará os valores correspondentes especificados na conexão com o EventBridge nesses cabeçalhos. Para obter mais informações sobre como o Step Functions realiza a mesclagem de dados, consulte Mesclando dados de EventBridge conexão e definição de HTTP tarefas.
Transform
(opcional)-
Contém os cabeçalhos
RequestBodyEncoding
eRequestEncodingOptions
. Por padrão, Step Functions envia o corpo da solicitação como JSON dados para um API endpoint.Se seu API provedor aceitar corpos de
form-urlencoded
solicitação, use oTransform
campo para especificar URL -encoding para os corpos de solicitação. Você também deve especificar ocontent-type
cabeçalho comoapplication/x-www-form-urlencoded
. Step Functionsem seguida, URL codifica automaticamente o corpo da solicitação.RequestBodyEncoding
-
Especifica a URL codificação -code do corpo da solicitação. É possível especificar um destes valores:
NONE
ouURL_ENCODED
.-
NONE
— O corpo da HTTP solicitação será a serialização JSON doRequestBody
campo. Este é o valor padrão. -
URL_ENCODED
— O corpo da HTTP solicitação serão os dados do formulário URL codificados doRequestBody
campo.
-
RequestEncodingOptions
-
Determina a opção de codificação a ser usada para matrizes no corpo da solicitação, se você definir
RequestBodyEncoding
comoURL_ENCODED
.O Step Functions é compatível com as opções de codificação de matriz a seguir. Para obter mais informações sobre essas opções e exemplos, consulte Aplicando a URL codificação -no corpo da solicitação.
-
INDICES
: codifica matrizes usando o valor do índice dos elementos da matriz. Por padrão, o Step Functions usa essa opção de codificação. -
REPEAT
: repete uma chave para cada item em uma matriz. -
COMMAS
: codifica todos os valores em uma chave como uma lista de valores delimitada por vírgula. -
BRACKETS
: repete uma chave para cada item em uma matriz e acrescenta um colchete, [], à chave para indicar que é uma matriz.
-
O exemplo a seguir define URL -encoding para os dados do corpo da solicitação. Também especifica o uso da opção de codificação
COMMAS
para matrizes no corpo da solicitação."Transform": { "RequestBodyEncoding": "URL_ENCODED", "RequestEncodingOptions": { "ArrayFormat": "COMMAS" } }
RequestBody
(opcional)-
Aceita JSON dados que você fornece na entrada de estado. Em
RequestBody
, você pode especificar uma combinação de estática JSON e JsonPathsintaxe. Por exemplo, vamos supor que você forneça a seguinte entrada de estado: { "CardNumber": "1234567890", "ExpiryDate": "09/25" }
Para usar esses valores de
CardNumber
eExpiryDate
no corpo da solicitação em tempo de execução, você pode especificar os seguintes JSON dados no corpo da solicitação."RequestBody": { "Card": { "Number.$": "$.CardNumber", "Expiry.$": "$.ExpiryDate", "Name": "John Doe", "Address": "123 Any Street, Any Town, USA" } }
Se o terceiro API que você deseja chamar exigir corpos de
form-urlencoded
solicitação, você deverá especificar URL -encoding para os dados do corpo da solicitação. Para obter mais informações, consulte Aplicando a URL codificação -no corpo da solicitação.
Autenticação para uma HTTP tarefa
Uma HTTP tarefa requer uma EventBridge conexão, que gerencia com segurança as credenciais de autenticação de um provedor. API Uma conexão especifica o tipo de autorização e as credenciais a serem usadas para autorizar um terceiro. API Usar uma conexão ajuda a evitar a codificação de segredos, como API chaves, na definição de sua máquina de estado. Uma EventBridge conexão suporta os esquemas de autorização BásicoOAuth,, e API Chave.
Ao criar uma EventBridge conexão, você fornece seus detalhes de autenticação. Você também pode incluir o cabeçalho, o corpo e os parâmetros de consulta necessários para autorização com umAPI. Você deve incluir a conexão ARN em qualquer HTTP tarefa que chame um terceiroAPI.
Quando você cria uma conexão e adiciona parâmetros de autorização, EventBridge cria uma entrada secreta AWS Secrets Manager. Nesse segredo, EventBridge armazena os parâmetros de conexão e autorização em um formato criptografado. Para criar ou atualizar uma conexão com sucesso, você deve usar uma Conta da AWS que tenha permissão para usar o Secrets Manager. Para obter mais informações sobre as IAM permissões que sua máquina de estado precisa para acessar uma EventBridge conexão, consulteIAMpermissões para executar uma HTTP tarefa.
A imagem a seguir mostra como Step Functions manipula a autenticação de API chamadas de terceiros usando uma EventBridge conexão. A EventBridge conexão que gerencia as credenciais de um API provedor terceirizado. EventBridgecria um segredo Secrets Manager para armazenar os parâmetros de conexão e autorização em um formato criptografado.
![Diagrama mostrando como o Step Functions usa EventBridge conexões para chamadas para HTTP endpoints.](images/http-task-how-auth-works.png)
Mesclando dados de EventBridge conexão e definição de HTTP tarefas
Ao invocar uma HTTP Tarefa, você pode especificar dados em sua EventBridge conexão e sua definição de HTTP Tarefa. Esses dados incluem os parâmetros Headers
, QueryParameters
e RequestBody
. Antes de chamar um terceiroAPI, o Step Functions mescla o corpo da solicitação com os parâmetros do corpo da conexão em todos os casos, exceto se o corpo da solicitação for uma string e os parâmetros do corpo da conexão não estiverem vazios. Nesse caso, a HTTP tarefa falha com o States.Runtime
erro.
Se houver alguma chave duplicada especificada na definição da HTTP Tarefa e na EventBridge conexão, Step Functions substituirá os valores na HTTP Tarefa pelos valores na conexão.
A lista a seguir descreve como Step Functions mesclar dados antes de chamar um terceiroAPI:
-
Cabeçalhos — Step Functions adiciona todos os cabeçalhos que você especificou na conexão aos cabeçalhos no
Headers
campo da Tarefa. HTTP Se houver um conflito entre as chaves do cabeçalho, o Step Functions usará os valores especificados na conexão para esses cabeçalhos. Por exemplo, se você especificou ocontent-type
cabeçalho na definição da HTTP tarefa e na EventBridge conexão, Step Functions usa o valor docontent-type
cabeçalho especificado na conexão. -
Parâmetros de consulta — Step Functions adiciona quaisquer parâmetros de consulta que você especificou na conexão aos parâmetros de consulta no
QueryParameters
campo da HTTP Tarefa. Se houver um conflito entre as chaves de parâmetros da consulta, o Step Functions usará os valores especificados na conexão para esses cabeçalhos. Por exemplo, se você especificou o parâmetro demaxItems
consulta na definição da HTTP tarefa e na EventBridge conexão, Step Functions usa o valor do parâmetro demaxItems
consulta especificado na conexão. -
Body parameters (Parâmetros do corpo)
-
Step Functionsadiciona todos os valores do corpo da solicitação especificados na conexão ao corpo da solicitação no
RequestBody
campo da HTTP Tarefa. Se houver um conflito entre as chaves do corpo da solicitação, o Step Functions usará os valores especificados na conexão para o corpo da solicitação. Por exemplo, digamos que você especificou umMode
campo naRequestBody
definição da HTTP tarefa e na EventBridge conexão. Step Functionsusa o valor doMode
campo que você especificou na conexão. -
Se você especificar o corpo da solicitação como uma string em vez de um JSON objeto, e a EventBridge conexão também contiver o corpo da solicitação, não Step Functions será possível mesclar o corpo da solicitação especificado nesses dois locais. Ele falha na HTTP tarefa com o
States.Runtime
erro.
O Step Functions aplica todas as transformações e serializa o corpo da solicitação depois de concluir a mesclagem do corpo da solicitação.
-
O exemplo a seguir define os RequestBody
campos Headers
QueryParameters
, e na HTTP Tarefa e na EventBridge conexão.
HTTPDefinição de tarefa
{ "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"
} } } } }
Conexão com o 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"
} ] } } }
Neste exemplo, chaves duplicadas são especificadas em HTTP Tarefa e EventBridge conexão. Portanto, Step Functions substitui os valores na HTTP Tarefa pelos valores na conexão. O trecho de código a seguir mostra a HTTP solicitação que é Step Functions enviada ao terceiro. 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"}
Aplicando a URL codificação -no corpo da solicitação
Por padrão, Step Functions envia o corpo da solicitação como JSON dados para um API endpoint. Se seu API provedor terceirizado exigir corpos de form-urlencoded
solicitação, você deverá especificar URL -encoding para os corpos de solicitação. Step Functionsem seguida, URL codifica automaticamente o corpo da solicitação com base na opção URL -encoding selecionada.
Você especifica URL -encoding usando o Transform
campo. Esse campo contém o RequestBodyEncoding
campo que especifica se você deseja ou não aplicar URL -encoding aos corpos da solicitação. Quando você especifica o RequestBodyEncoding
campo, Step Functions converte o corpo da JSON solicitação em corpo da form-urlencoded
solicitação antes de chamar o terceiroAPI. Você também deve especificar o content-type
cabeçalho application/x-www-form-urlencoded
porque APIs os dados URL codificados em aceitação esperam o content-type
cabeçalho.
Para codificar matrizes no corpo da solicitação, o Step Functions oferece as opções de codificação de matriz a seguir.
-
INDICES
: repete uma chave para cada item em uma matriz e acrescenta um colchete, [], à chave para indicar que é uma matriz. Esse colchete contém o índice do elemento da matriz. Adicionar o índice ajuda a especificar a ordem dos elementos da matriz. Por padrão, o Step Functions usa essa opção de codificação.Por exemplo, se o corpo da solicitação contiver a matriz a seguir.
{"array": ["a","b","c","d"]}
O Step Functions codifica essa matriz para a string a seguir.
array[0]=a&array[1]=b&array[2]=c&array[3]=d
-
REPEAT
: repete uma chave para cada item em uma matriz.Por exemplo, se o corpo da solicitação contiver a matriz a seguir.
{"array": ["a","b","c","d"]}
O Step Functions codifica essa matriz para a string a seguir.
array=a&array=b&array=c&array=d
-
COMMAS
: codifica todos os valores em uma chave como uma lista de valores delimitada por vírgula.Por exemplo, se o corpo da solicitação contiver a matriz a seguir.
{"array": ["a","b","c","d"]}
O Step Functions codifica essa matriz para a string a seguir.
array=a,b,c,d
-
BRACKETS
: repete uma chave para cada item em uma matriz e acrescenta um colchete, [], à chave para indicar que é uma matriz.Por exemplo, se o corpo da solicitação contiver a matriz a seguir.
{"array": ["a","b","c","d"]}
O Step Functions codifica essa matriz para a string a seguir.
array[]=a&array[]=b&array[]=c&array[]=d
IAMpermissões para executar uma HTTP tarefa
Sua função de execução da máquina de estado deve ter as secretsmanager:DescribeSecret
permissões states:InvokeHTTPEndpoint
events:RetrieveConnectionCredentials
secretsmanager:GetSecretValue
,, e para que uma HTTP tarefa chame um terceiroAPI. O exemplo IAM de política a seguir concede os privilégios mínimos necessários à sua função de máquina de estado para chamar o APIs Stripe. Essa IAM política também concede permissão à função de máquina de estado para acessar uma EventBridge conexão específica, incluindo o segredo dessa conexão que está armazenado no 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/*" } ] }
HTTPExemplo de tarefa
A definição de máquina de estado a seguir mostra uma HTTP tarefa que inclui os RequestBody
parâmetros Headers
QueryParameters
Transform
,, e. A HTTP tarefa chama um StripeAPI, https://api.stripe.com/v1/ faturas, para gerar uma fatura. A HTTP tarefa também especifica a URL codificação -para o corpo da solicitação usando a opção de codificação. INDICES
Verifique se você criou uma conexão com o EventBridge. O exemplo a seguir mostra uma conexão criada usando o tipo BASIC auth.
{
"Type": "BASIC",
"AuthParameters": {
"BasicAuthParameters": {
"Password": "myPassword",
"Username": "myUsername"
},
}
}
Lembre-se de substituir o italicized
texto com as informações específicas do seu recurso.
{ "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 } } }
Para executar essa máquina de estado, forneça o ID do cliente como entrada, conforme mostrado no seguinte exemplo:
{
"customer_id": "1234567890"
}
O exemplo a seguir mostra a HTTP solicitação que é Step Functions enviada para o 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
Testando uma HTTP tarefa
Você pode usar o TestStateAPIpor meio do console ou o AWS CLI para testar uma HTTP tarefa. SDK O procedimento a seguir descreve como usar o TestState API no Step Functions console. Você pode testar iterativamente os detalhes da API solicitação, da resposta e da autenticação até que sua HTTP tarefa esteja funcionando conforme o esperado.
Teste um estado de HTTP tarefa no Step Functions console
-
Abra o console do Step Functions
. -
Escolha Criar máquina de estado para começar a criar uma máquina de estado ou escolha uma máquina de estado existente que contenha uma HTTP tarefa.
Consulte a Etapa 4 se você estiver testando a tarefa em uma máquina de estado existente.
-
No Modo de design Workflow Studio, configure uma HTTP tarefa visualmente. Também é possível selecionar o modo Código para copiar e colar a definição da máquina de estado do ambiente de desenvolvimento local.
-
No Modo de design, selecione Testar estado no painel Painel do Inspector do Workflow Studio.
-
Na caixa de diálogo Testar estado, faça o seguinte:
-
Em Perfil de execução, selecione um perfil de execução para testar o estado. Se você não tiver uma função com permissões suficientes para uma HTTP tarefa, consulte Função para testar HTTP tarefas no Workflow Studio para criar uma função.
-
(Opcional) Forneça qualquer JSON entrada que o estado selecionado precise para o teste.
-
Para o nível de inspeção, mantenha a seleção padrão de INFO. Esse nível mostra o status da API chamada e a saída do estado. Isso é útil para verificar rapidamente a API resposta.
-
Selecione Iniciar teste.
-
Se o teste for bem-sucedido, a saída do estado aparecerá no lado direito da caixa de diálogo Testar estado. Se o teste falhar, um erro será exibido.
Na guia Detalhes do estado da caixa de diálogo, é possível ver a definição do estado e um link para a conexão com o EventBridge.
-
Altere o nível de inspeção para TRACE. Esse nível mostra a HTTP solicitação e a resposta brutas e é útil para verificar cabeçalhos, parâmetros de consulta e outros detalhes API específicos.
-
Marque a caixa de seleção Revelar segredos. Em combinação com TRACE, essa configuração permite que você veja os dados confidenciais que a EventBridge conexão insere, como API chaves. A identidade do usuário do IAM que você usa para acessar o console deve ter permissão para realizar a ação
states:RevealSecrets
. Sem essa permissão, o Step Functions gera um erro de acesso negado ao iniciar o teste. Para ver um exemplo de política do IAM que concede essas permissõesstates:RevealSecrets
, consulte IAMpermissões para usar TestState API.A imagem a seguir mostra um teste para uma HTTP tarefa bem-sucedida. O nível de inspeção para esse estado está definido como TRACE. A guia HTTPSolicitação e Resposta na imagem a seguir mostra o resultado da API chamada de terceiros.
-
Selecione Iniciar teste.
-
Se o teste for bem-sucedido, você poderá ver seus HTTP detalhes na guia HTTPSolicitação e resposta.
-
Respostas de HTTP tarefas não suportadas
Uma HTTP tarefa falhará com o States.Runtime
erro se uma das seguintes condições for verdadeira para a resposta retornada:
-
A resposta contém um cabeçalho do tipo de conteúdo de
application/octet-stream
,image/*
,video/*
ouaudio/*
. -
A resposta não pode ser lida como uma string válida. Por exemplo, dados binários ou de imagem.