Chame terceiros APIs nos fluxos de trabalho do Step Functions - AWS Step Functions

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.

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 o Resource campo da seguinte forma.

"Resource": "arn:aws:states:::http:invoke"
Parameters (obrigatório)

Contém os ConnectionArn campos ApiEndpointMethod,, e que fornecem informações sobre o terceiro para o qual API você deseja ligar. Parameterstambém contém campos opcionais, como Headers QueryParameters e.

Você pode especificar uma combinação de estática JSON e JsonPathsintaxe como Parameters no Parameters 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 JsonPathsintaxe 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 especificado ApiEndpoint 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 e RequestBody.

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 no Headers 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 do Host 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.com

Você 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 e RequestEncodingOptions. 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 o Transform campo para especificar URL -encoding para os corpos de solicitação. Você também deve especificar o content-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 ou URL_ENCODED.

  • NONE— O corpo da HTTP solicitação será a serialização JSON do RequestBody campo. Este é o valor padrão.

  • URL_ENCODED— O corpo da HTTP solicitação serão os dados do formulário URL codificados do RequestBody campo.

RequestEncodingOptions

Determina a opção de codificação a ser usada para matrizes no corpo da solicitação, se você definir RequestBodyEncoding como URL_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. EmRequestBody, 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 e ExpiryDate 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.

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 o content-type cabeçalho na definição da HTTP tarefa e na EventBridge conexão, Step Functions usa o valor do content-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 de maxItems consulta na definição da HTTP tarefa e na EventBridge conexão, Step Functions usa o valor do parâmetro de maxItems 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 um Mode campo na RequestBody definição da HTTP tarefa e na EventBridge conexão. Step Functionsusa o valor do Mode 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 HeadersQueryParameters, 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:RetrieveConnectionCredentialssecretsmanager: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 QueryParametersTransform,, 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
  1. Abra o console do Step Functions.

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

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

  4. No Modo de design, selecione Testar estado no painel Painel do Inspector do Workflow Studio.

  5. Na caixa de diálogo Testar estado, faça o seguinte:

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

    2. (Opcional) Forneça qualquer JSON entrada que o estado selecionado precise para o teste.

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

    4. Selecione Iniciar teste.

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

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

    7. 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ões states: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.

      Saída de um estado selecionado que sucede ao teste do TRACEnível.
    8. Selecione Iniciar teste.

    9. 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/* ou audio/*.

  • A resposta não pode ser lida como uma string válida. Por exemplo, dados binários ou de imagem.