Step Functions ワークフローAPIsでサードパーティーを呼び出す - AWS Step Functions

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Step Functions ワークフローAPIsでサードパーティーを呼び出す

HTTP タスクは、ワークフローで Salesforce や Stripe APIなどのパブリックでサードパーティーの を呼び出すことができるタスクワークフローの状態状態の一種です。サードパーティーの を呼び出すにはAPI、 arn:aws:states:::http:invokeリソースでタスク状態を使用します。次に、 、使用するメソッドAPIURL、認証の詳細など、APIエンドポイント設定の詳細を指定します。

Workflow Studio を使用してHTTPタスクを含むステートマシンを構築する場合、Workflow Studio はHTTPタスクのIAMポリシーを含む実行ロールを自動的に生成します。詳細については、「Workflow Studio でHTTPタスクをテストするためのロール」を参照してください。

HTTP タスク定義

ASL 定義は、 http:invokeリソースを持つHTTPタスクを表します。次のHTTPタスク定義は、すべてのお客様のリストを返APIす Stripe を呼び出します。

"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 }

HTTP タスクフィールド

HTTP タスクの定義には、次のフィールドが含まれます。

Resource (必須)

タスクタイプ を指定するには、 ARNResourceフィールドにその を指定します。HTTP タスクでは、次のように Resource フィールドを指定します。

"Resource": "arn:aws:states:::http:invoke"
Parameters (必須)

API 呼び出したいサードパーティーに関する情報を提供する ApiEndpointMethod、および ConnectionArnフィールドが含まれます。 には、 Headers や などのオプションフィールドParametersも含まれていますQueryParameters

静的構文JSONとJsonPath構文の組み合わせは、 ParametersフィールドParametersで として指定できます。詳細については、「Step Functions APIのサービスへのパラメータの受け渡し」を参照してください。

ApiEndpoint (必須)

呼びAPI出すサードパーティーURLの を指定します。クエリパラメータを に追加するにはURL、 QueryParametersフィールドを使用します。次の例は、Stripe を呼び出しAPIてすべての顧客のリストを取得する方法を示しています。

"ApiEndpoint":"https://api.stripe.com/v1/customers"

JsonPath 構文を使用して参照パスを指定し、サードパーティーの API を含むJSONノードを選択することもできますURL。例えば、特定の顧客 ID APIsを使用して Stripe の 1 つを呼び出すとします。次のようなステートの入力を指定したとします。

{ "customer_id": "1234567890", "name": "John Doe" }

Stripe を使用してこの顧客 ID の詳細を取得するにはAPI、次の例ApiEndpointに示すように を指定します。この例では、組み込み関数と参照パスを使用しています。

"ApiEndpoint.$":"States.Format('https://api.stripe.com/v1/customers/{}', $.customer_id)"

実行時に、Step Functions は以下のように ApiEndpoint の値を解決します。

https://api.stripe.com/v1/customers/1234567890
Method (必須)

サードパーティーの の呼び出しに使用するHTTP方法を指定しますAPI。HTTP タスクでは、、GET、、POST、、PUTDELETE、PATCHOPTIONSまたは のいずれかの方法を指定できますHEAD。

例えば、 GETメソッドを使用するには、次のように Methodフィールドを指定します。

"Method": "GET"

参照パスを使用して実行時にメソッドを指定することもできます。例えば、"Method.$": "$.myHTTPMethod" と指定します。

Authentication (必須)

サードパーティーAPI呼び出しを認証する方法を指定する ConnectionArnフィールドが含まれます。 は、 の接続リソースApiEndpointを使用して指定された の認証Step FunctionsをサポートしますAmazon EventBridge。

ConnectionArn (必須)

EventBridge 接続 を指定しますARN。

HTTP タスクには、プロバイダーの認証情報を安全に管理するEventBridge 接続 が必要ですAPI。接続は、サードパーティーの の認証に使用する認証タイプと認証情報を指定しますAPI。接続を使用すると、APIキーなどのシークレットがステートマシン定義にハードコーディングされるのを防ぐことができます。接続では、HeadersQueryParametersRequestBody パラメータを指定することもできます。

EventBridge 接続を作成するときは、認証の詳細を指定します。HTTP タスクでの認証の仕組みの詳細については、「」を参照してくださいHTTP タスクの認証

次の例は、HTTPタスク定義で Authenticationフィールドを指定する方法を示しています。

"Authentication": { "ConnectionArn": "arn:aws:events:us-east-2:123456789012:connection/Stripe/81210c42-8af1-456b-9c4a-6ff02fc664ac" }
Headers (オプション)

API エンドポイントに追加のコンテキストとメタデータを提供します。ヘッダーは文字列またはJSON配列として指定できます。

EventBridge 接続でヘッダーを指定し、HTTPタスクで Headersフィールドを指定できます。Headers フィールドにAPIプロバイダーへの認証の詳細を含めないことをお勧めします。これらの情報は、EventBridge 接続に含めることをお勧めします。

Step Functions は、EventBridge接続で指定したヘッダーを、HTTPタスク定義で指定したヘッダーに追加します。定義と接続に同じヘッダーキーが存在する場合、Step Functions はそれらのヘッダーに EventBridge 接続で指定された対応する値を使用します。Step Functions がデータマージを実行する方法の詳細については、「EventBridge 接続とHTTPタスク定義データのマージ」を参照してください。

次の例では、サードパーティーのAPI呼び出しに含まれるヘッダーを指定します: content-type

"Headers": { "content-type": "application/json" }

参照パスを使用して実行時にヘッダーを指定することもできます。例えば、"Headers.$": "$.myHTTPHeaders" と指定します。

Step Functions は、User-Agent、、および Hostヘッダーを設定します。 Step Functions はRange、呼び出している に基づいて Host ヘッダーの値APIを設定します。以下は、ヘッダーの例です。

User-Agent: Amazon|StepFunctions|HttpInvoke|us-east-1, Range: bytes=0-262144, Host: api.stripe.com

HTTP タスク定義で次のヘッダーを使用することはできません。これらのヘッダーを使用すると、HTTPタスクは States.Runtime エラーで失敗します。

  • A-IM

  • Accept-Charset

  • Accept-Datetime

  • Accept-Encoding

  • Cache-Control

  • Connection

  • Content-Encoding

  • コンテンツ-MD5

  • 日付

  • Expect

  • Forwarded

  • From

  • ホスト

  • HTTP2-設定

  • If-Match

  • If-Modified-Since

  • If-None-Match

  • If-Range

  • If-Unmodified-Since

  • Max-Forwards

  • オリジン

  • Pragma

  • Proxy-Authorization

  • リファラー

  • [サーバー]

  • TE

  • Trailer

  • Transfer-Encoding

  • Upgrade

  • Via

  • 警告

  • x-forwarded-*

  • x-amz-*

  • x-amzn-*

QueryParameters (オプション)

の末尾にキーと値のペアを挿入しますAPIURL。クエリパラメータは、文字列、JSON配列、またはJSONオブジェクトとして指定できます。 は、サードパーティーの を呼び出すときにクエリパラメータStep Functionsを自動的にURLエンコードしますAPI。

例えば、Stripe を呼び出しAPIて、取引を米ドル () で行った顧客を検索するとしますUSD。ステート入力として以下の QueryParameters を指定したとします。

"QueryParameters": { "currency": "usd" }

実行時に、Step Functions は次のように QueryParametersを に追加APIURLします。

https://api.stripe.com/v1/customers/search?currency=usd

参照パスを使用して実行時にクエリパラメータを指定することもできます。例えば、"QueryParameters.$": "$.myQueryParameters" と指定します。

EventBridge 接続でクエリパラメータを指定した場合、 はこれらのクエリパラメータをHTTPタスク定義で指定したクエリパラメータStep Functionsに追加します。定義と接続に同じクエリパラメータキーが存在する場合、Step Functions はそれらのヘッダーに EventBridge 接続で指定されている対応する値を使用します。Step Functions がデータマージを実行する方法の詳細については、「EventBridge 接続とHTTPタスク定義データのマージ」を参照してください。

Transform (オプション)

RequestBodyEncoding および RequestEncodingOptions フィールドが含まれます。デフォルトでは、 はリクエスト本文をJSONデータとしてAPIエンドポイントStep Functionsに送信します。

API プロバイダーがform-urlencodedリクエスト本文を受け入れる場合は、 Transformフィールドを使用してリクエスト本文の URLエンコードを指定します。また、ヘッダーを content-typeとして指定する必要がありますapplication/x-www-form-urlencoded。 Step Functions はリクエストボディを自動的にURLエンコードします。

RequestBodyEncoding

リクエストボディのURLエンコードを指定します。値は NONE または URL_ENCODED のいずれかを指定できます。

  • NONE – HTTPリクエスト本文は、 RequestBodyフィールドJSONのシリアル化されます。これは、デフォルト値です。

  • URL_ENCODED – HTTPリクエスト本文は、 RequestBodyフィールドの URLエンコードされたフォームデータになります。

RequestEncodingOptions

RequestBodyEncodingURL_ENCODED に設定した場合、リクエスト本文の配列に使用するエンコーディングオプションを決定します。

Step Functions では、次の配列エンコーディングオプションをサポートします。これらのオプションと例の詳細については、「リクエストボディに URLエンコードを適用する」を参照してください。

  • INDICES — 配列要素のインデックス値を使用して配列をエンコードします。デフォルトでは、Step Functions はこのエンコーディングオプションを使用します。

  • REPEAT — 配列内の各項目に対してキーを繰り返します。

  • COMMAS — キー内のすべての値を、カンマで区切られた値のリストとしてエンコードします。

  • BRACKETS — 配列内の各項目についてキーを繰り返し、そのキーに括弧 [] を追加して配列であることを示します。

次の例では、リクエスト本文データの URLエンコードを設定します。また、リクエスト本文の配列に COMMAS エンコーディングオプションを使用するように指定します。

"Transform": { "RequestBodyEncoding": "URL_ENCODED", "RequestEncodingOptions": { "ArrayFormat": "COMMAS" } }
RequestBody (オプション)

状態入力で指定したJSONデータを受け入れます。ではRequestBody、静的JsonPath構文JSONと構文の組み合わせを指定できます。例えば、以下の入力を使用するとします。

{ "CardNumber": "1234567890", "ExpiryDate": "09/25" }

実行時にリクエストボディExpiryDateCardNumberおよび のこれらの値を使用するには、リクエストボディで次のJSONデータを指定します。

"RequestBody": { "Card": { "Number.$": "$.CardNumber", "Expiry.$": "$.ExpiryDate", "Name": "John Doe", "Address": "123 Any Street, Any Town, USA" } }

呼び出しAPIたいサードパーティーがform-urlencodedリクエスト本文を必要とする場合は、リクエスト本文データに URLエンコードを指定する必要があります。詳細については、「リクエストボディに URLエンコードを適用する」を参照してください。

HTTP タスクの認証

HTTP タスクには、プロバイダーの認証情報を安全に管理するEventBridge 接続 が必要ですAPI。接続は、サードパーティーの の認証に使用する認証タイプと認証情報を指定しますAPI。接続を使用すると、APIキーなどのシークレットがステートマシン定義にハードコーディングされるのを防ぐことができます。 EventBridge 接続は、ベーシック、OAuth、およびAPIキー認証スキームをサポートします。

EventBridge 接続を作成するときは、認証の詳細を指定します。での承認に必要なヘッダー、本文、クエリパラメータを含めることもできますAPI。サードパーティーの ARNを呼び出すHTTPタスクには、接続を含める必要がありますAPI。

接続を作成して承認パラメータを追加すると、 は にシークレット EventBridge を作成します AWS Secrets Manager。このシークレットでは、 は接続パラメータと認可パラメータを暗号化された形式で EventBridge 保存します。接続を正常に作成または更新するには、Secrets Manager を使用するアクセス許可 AWS アカウント を持つ を使用する必要があります。ステートマシンが EventBridge 接続にアクセスするために必要なアクセスIAM許可の詳細については、「」を参照してくださいIAM HTTPタスクを実行するための アクセス許可

次の図は、 が EventBridge接続を使用してサードパーティーAPI呼び出しの認証Step Functionsを処理する方法を示しています。サードパーティーAPIプロバイダーの認証情報を管理するEventBridge接続。 EventBridgeは にシークレットを作成してSecrets Manager、接続パラメータと承認パラメータを暗号化された形式で保存します。

Step Functions がHTTPエンドポイントへの呼び出しで EventBridge 接続を使用する方法を示す図。

EventBridge 接続とHTTPタスク定義データのマージ

HTTP タスクを呼び出すときに、EventBridge接続とHTTPタスク定義でデータを指定できます。このデータには HeadersQueryParameters、および RequestBody パラメータが含まれます。サードパーティーの を呼び出す前にAPI、Step Functions はリクエストボディが文字列で、接続ボディパラメータが空でない場合を除き、すべてのケースでリクエストボディを接続ボディパラメータとマージします。この場合、HTTPタスクは States.Runtime エラーで失敗します。

HTTP タスク定義とEventBridge接続で重複するキーが指定されている場合、 はHTTPタスクの値を接続の値でStep Functions上書きします。

次のリストでは、サードパーティーの を呼び出す前に がデータをStep Functionsマージする方法について説明しますAPI。

  • ヘッダー — 接続で指定したヘッダーをHTTPタスクの HeadersフィールドのヘッダーStep Functionsに追加します。ヘッダーキーが競合する場合、Step Functions はそのヘッダーに接続で指定された値を使用します。例えば、HTTPタスク定義とEventBridge接続の両方で content-typeヘッダーを指定した場合、 は接続で指定された content-type ヘッダー値Step Functionsを使用します。

  • クエリパラメータ — 接続で指定したクエリパラメータをHTTPタスクの QueryParametersフィールドのクエリパラメータStep Functionsに追加します。クエリパラメータキーが競合する場合は、Step Functions は接続で指定された値をクエリパラメータに使用します。例えば、HTTPタスク定義とEventBridge接続の両方でmaxItemsクエリパラメータを指定した場合、 は接続で指定されたmaxItemsクエリパラメータ値Step Functionsを使用します。

  • Body パラメータ

    • Step Functions は、 接続で指定されたリクエスト本文の値をHTTPタスクの RequestBodyフィールドのリクエスト本文に追加します。リクエスト本文のキーが競合する場合は、Step Functions は接続で指定された値をリクエスト本文として使用します。例えば、HTTPタスク定義とEventBridge接続の両方RequestBodyの でModeフィールドを指定したとします。 は、接続で指定したModeフィールド値Step Functionsを使用します。

    • オブジェクトの代わりにリクエスト本文を文字列として指定しJSON、EventBridge接続にリクエスト本文も含まれている場合、 Step Functionsはこれらの両方の場所で指定されたリクエスト本文をマージできません。エラーでHTTPタスクが失敗しますStates.Runtime

    リクエスト本文のマージが完了したら、Step Functions はすべての変換を適用してリクエスト本文をシリアル化します。

次の例ではHeaders、HTTPタスクとEventBridge接続の両方に QueryParameters、、および RequestBodyフィールドを設定します。

HTTP タスク定義

{ "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" } } } } }

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" } ] } } }

この例では、HTTPタスクとEventBridge接続で重複するキーが指定されています。したがって、 は HTTP タスクの値を接続の値でStep Functions上書きします。次のコードスニペットは、 がサードパーティーの Step Functionsに送信するHTTPリクエストを示しています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"}

リクエストボディに URLエンコードを適用する

デフォルトでは、 はリクエスト本文をJSONデータとしてAPIエンドポイントStep Functionsに送信します。サードパーティーAPIプロバイダーがform-urlencodedリクエスト本文を必要とする場合は、リクエスト本文に URLエンコードを指定する必要があります。 Step Functions は、選択した URLエンコードオプションに基づいてリクエスト本文を自動的にURLエンコードします。

Transform フィールドを使用して URLエンコードを指定します。このフィールドには、リクエストボディに URLエンコードを適用するかどうかを指定する RequestBodyEncodingフィールドが含まれます。RequestBodyEncoding フィールドを指定すると、 はサードパーティーの を呼び出す前にJSONリクエストボディをform-urlencodedリクエストボディStep Functionsに変換しますAPI。また、 エンコードされたデータを受け入れる APIs は content-typeヘッダーを想定application/x-www-form-urlencodedしているため、 URLcontent-typeヘッダーを として指定する必要があります。

リクエスト本文の配列をエンコードするために、Step Functions では以下の配列エンコードオプションが用意されています。

  • INDICES — 配列内の各項目についてキーを繰り返し、そのキーに括弧 [] を追加して配列であることを示します。この括弧には配列要素のインデックスが含まれます。インデックスを追加すると、配列要素の順序を指定しやすくなります。デフォルトでは、Step Functions はこのエンコーディングオプションを使用します。

    例えば、リクエスト本文に次の配列が含まれているとします。

    {"array": ["a","b","c","d"]}

    Step Functions はこの配列を次の文字列にエンコードします。

    array[0]=a&array[1]=b&array[2]=c&array[3]=d
  • REPEAT — 配列内の各項目に対してキーを繰り返します。

    例えば、リクエスト本文に次の配列が含まれているとします。

    {"array": ["a","b","c","d"]}

    Step Functions はこの配列を次の文字列にエンコードします。

    array=a&array=b&array=c&array=d
  • COMMAS — キー内のすべての値を、カンマで区切られた値のリストとしてエンコードします。

    例えば、リクエスト本文に次の配列が含まれているとします。

    {"array": ["a","b","c","d"]}

    Step Functions はこの配列を次の文字列にエンコードします。

    array=a,b,c,d
  • BRACKETS — 配列内の各項目についてキーを繰り返し、そのキーに括弧 [] を追加して配列であることを示します。

    例えば、リクエスト本文に次の配列が含まれているとします。

    {"array": ["a","b","c","d"]}

    Step Functions はこの配列を次の文字列にエンコードします。

    array[]=a&array[]=b&array[]=c&array[]=d

IAM HTTPタスクを実行するための アクセス許可

ステートマシンの実行ロールにはstates:InvokeHTTPEndpoint、 HTTP タスクがサードパーティーの を呼び出すための events:RetrieveConnectionCredentialssecretsmanager:GetSecretValue、、、および アクセスsecretsmanager:DescribeSecret許可が必要ですAPI。次のIAMポリシー例では、Stripe を呼び出すために必要な最小限の権限をステートマシンロールに付与しますAPIs。このIAMポリシーは、Secrets Manager に保存されているこの EventBridge 接続のシークレットを含む、特定の接続にアクセスするアクセス許可をステートマシンロールに付与します。

{ "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/*" } ] }

HTTP タスクの例

次のステートマシン定義は、Headers、、QueryParametersTransformおよび RequestBodyパラメータを含む HTTPタスクを示しています。HTTP タスクはストライプのAPI https://api.stripe.com/v1/請求書を呼び出して請求書を生成します。HTTP タスクでは、エンコードオプションを使用してリクエスト本文の URLINDICESエンコードも指定します。

EventBridge 接続が作成されていることを確認します。次の例は、BASIC認証タイプを使用して作成された接続を示しています。

{ "Type": "BASIC", "AuthParameters": { "BasicAuthParameters": { "Password": "myPassword", "Username": "myUsername" }, } }

必ず を置き換えてください。italicized リソース固有の情報を含む テキスト。

{ "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 } } }

このステートマシンを実行するには、次の例のように顧客 ID を入力として指定します。

{ "customer_id": "1234567890" }

次の例は、 が Stripe Step Functionsに送信するHTTPリクエストを示していますAPI。

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

HTTP タスクのテスト

コンソール、、SDKまたは TestStateAPIを使用してHTTPタスクを AWS CLI テストできます。次の手順では、 Step Functionsコンソールで TestState APIを使用する方法について説明します。HTTP タスクが期待どおりに動作するまで、APIリクエスト、レスポンス、認証の詳細を繰り返しテストできます。

Step Functions コンソールでHTTPタスクの状態をテストする
  1. Step Functions コンソールを開きます。

  2. ステートマシンの作成を選択してステートマシンの作成を開始するか、HTTPタスクを含む既存のステートマシンを選択します。

    既存のステートマシンでタスクをテストする場合は、ステップ 4 を参照してください。

  3. Workflow Studio デザインモードの で、 HTTP タスクを視覚的に設定します。または、コードモードを選択して、ローカル開発環境からステートマシン定義をコピーして貼り付けます。

  4. デザインモードで、Workflow Studio の Inspector パネル パネルで [ステートをテスト] を選択します。

  5. [ステートをテスト] ダイアログボックスで、次の操作を行います。

    1. [実行ロール] では、ステートをテストする実行ロールを選択します。HTTP タスクに十分なアクセス許可を持つロールがない場合は、「」を参照してロールWorkflow Studio でHTTPタスクをテストするためのロールを作成します。

    2. (オプション) 選択した状態がテストに必要なJSON入力を入力します。

    3. 検査レベル の場合、 のデフォルト選択のままにしますINFO。このレベルは、API通話のステータスと状態出力を示します。これは、APIレスポンスをすばやく確認する場合に便利です。

    4. [テストを開始] を選択します。

    5. テストが成功すると、[ステートをテスト] ダイアログボックスの右側にステートの出力が表示されます。テストに失敗すると、エラーが表示されます。

      ダイアログボックスの [ステートの詳細] タブには、ステート定義と EventBridge 接続へのリンクが表示されます。

    6. 検査レベルを に変更しますTRACE。このレベルは未加工のHTTPリクエストとレスポンスを示し、ヘッダー、クエリパラメータ、およびその他の API固有の詳細を検証するのに役立ちます。

    7. [シークレットを公開] チェックボックスを選択します。この設定ではTRACE、 と組み合わせて、 APIキーなど、EventBridge接続が挿入する機密データを確認できます。コンソールへのアクセスに使用する IAM ユーザー ID には、states:RevealSecrets アクションを実行するアクセス許可が必要です。このアクセス許可がない場合、Step Functions はテストの開始時にアクセス拒否エラーをスローします。これらの states:RevealSecrets アクセス許可を付与する IAM ポリシーの例については、「IAM を使用するための アクセス許可 TestState API」を参照してください。

      次の図は、成功したHTTPタスクのテストを示しています。この状態の検査レベルは に設定されますTRACE。次の図のHTTPリクエストとレスポンスタブは、サードパーティーのAPI呼び出しの結果を示しています。

      TRACE レベルのテストに成功した選択した状態の出力。
    8. [テストを開始] を選択します。

    9. テストが成功すると、HTTPリクエストとレスポンスタブにHTTP詳細が表示されます。

サポートされていないHTTPタスクレスポンス

返されたレスポンスに対して次のいずれかの条件が true の場合、HTTPタスクは States.Runtime エラーで失敗します。

  • レスポンスには、application/octet-streamimage/*video/*、または audio/* というコンテンツタイプヘッダーが含まれています。

  • 応答は有効な文字列として読み取ることができません。例えば、バイナリデータや画像データなどです。