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 は で実行ロールを自動的に生成します。IAM HTTP タスクの ポリシー。詳細については、「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 (必須)

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

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

呼び出しAPIたいサードパーティーに関する情報を提供する Method、、および ApiEndpointConnectionArnフィールドが含まれます。 には、 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 のいずれかを呼び出すとします。次のようなステートの入力を指定したとします。

{ "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、PUT、DELETEPATCHOPTIONS、または のいずれかの方法を指定できますHEAD。

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

"Method": "GET"

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

Authentication (必須)

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

ConnectionArn (必須)

を指定します。EventBridge 接続ARN。

HTTP タスクには、APIプロバイダーの認証情報を安全に管理するEventBridge 接続 が必要です。接続は、サードパーティーの の承認に使用する認証タイプと認証情報を指定します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、、Range、および Hostヘッダーを設定します。Step Functions は、呼び出しAPIている に基づいてHostヘッダーの値を設定します。以下は、ヘッダーの例です。

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 (オプション)

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

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

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

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

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

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

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

Transform (オプション)

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

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、静的JSONとJsonPath構文の組み合わせを指定できます。例えば、以下の入力を使用するとします。

{ "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-encoding を指定する必要があります。詳細については、「リクエスト本文への URL-エンコードの適用」を参照してください。

HTTP タスクの認証

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

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

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

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

Step Functions がHTTPエンドポイントへの呼び出し EventBridge の接続をどのように使用するかを示す図。

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

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

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

次のリストでは、Step Functions は、サードパーティー を呼び出す前にデータをマージしますAPI。

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

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

  • Body パラメータ

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

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

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

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

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 接続。したがって、Step Functions は、 HTTP タスクの値を接続の値で上書きします。次のコードスニペットは、 HTTPStep Functions はサードパーティーの に送信します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-エンコードの適用

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

Transform フィールドを使用して URL-encoding を指定します。このフィールドには、リクエスト本文に URL-エンコードを適用するかどうかを指定する RequestBodyEncoding フィールドが含まれます。RequestBodyEncoding フィールドを指定すると、Step Functions は、サードパーティーの を呼び出す前にJSON、リクエスト本文をform-urlencodedリクエスト本文に変換しますAPI。また、 URLがエンコードされたデータを受け入れるAPIsと content-typeヘッダーが予期application/x-www-form-urlencodedされるため、 content-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 タスクでは、エンコードオプションを使用してリクエスト本文のURLエンINDICESコードも指定します。

が作成済みであることを確認します。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" }

次の例は、 HTTPStep Functions はストライプ に送信します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 テストできます。次の手順では、 で TestState APIを使用する方法について説明します。Step Functions console。HTTP タスクが期待どおりに動作するまで、APIリクエスト、レスポンス、認証の詳細を繰り返しテストできます。

でHTTPタスク状態をテストする Step Functions コンソール
  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。このレベルは raw HTTPリクエストとレスポンスを示し、ヘッダー、クエリパラメータ、その他の API固有の詳細を検証するのに役立ちます。

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

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

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

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

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

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

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

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