翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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
、、およびApiEndpoint
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 のいずれかを呼び出すとします。次のようなステートの入力を指定したとします。 { "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キーなどのシークレットがステートマシン定義にハードコーディングされないようになります。接続では、
Headers
、QueryParameters
、RequestBody
パラメータを指定することもできます。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.comHTTP タスク定義で次のヘッダーを使用することはできません。これらのヘッダーを使用すると、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
-
RequestBodyEncoding
をURL_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" }
実行時にリクエスト本文
ExpiryDate
でCardNumber
と のこれらの値を使用するには、リクエスト本文で次の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 は、接続パラメータと承認パラメータを暗号化された形式で保存します。
マージ EventBridge 接続とHTTPタスク定義データ
HTTP タスクを呼び出すときに、EventBridge 接続とHTTPタスク定義。このデータには Headers
、QueryParameters
、および 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:RetrieveConnectionCredentials
、secretsmanager: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
、、QueryParameters
Transform
、および 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 コンソール
-
Step Functions コンソール
を開きます。 -
ステートマシンの作成を選択してステートマシンの作成を開始するか、HTTPタスクを含む既存のステートマシンを選択します。
既存のステートマシンでタスクをテストする場合は、ステップ 4 を参照してください。
-
Workflow Studio デザインモードの で、HTTPタスクを視覚的に設定します。または、コードモードを選択して、ローカル開発環境からステートマシン定義をコピーして貼り付けます。
-
デザインモードで、Workflow Studio の Inspector パネル パネルで [ステートをテスト] を選択します。
-
[ステートをテスト] ダイアログボックスで、次の操作を行います。
-
[実行ロール] では、ステートをテストする実行ロールを選択します。HTTP タスクに十分なアクセス許可を持つロールがない場合は、 Workflow Studio でHTTPタスクをテストするロールを参照してロールを作成します。
-
(オプション) 選択した状態がテストに必要とするJSON入力を指定します。
-
検査レベル の場合、デフォルトの選択は のままにしますINFO。このレベルは、API通話のステータスと状態出力を示します。これは、APIレスポンスをすばやくチェックするのに役立ちます。
-
[テストを開始] を選択します。
-
テストが成功すると、[ステートをテスト] ダイアログボックスの右側にステートの出力が表示されます。テストに失敗すると、エラーが表示されます。
ダイアログボックスの状態の詳細タブには、状態定義と へのリンクが表示されます。 EventBridge 接続。
-
検査レベルを に変更しますTRACE。このレベルは raw HTTPリクエストとレスポンスを示し、ヘッダー、クエリパラメータ、その他の API固有の詳細を検証するのに役立ちます。
-
[シークレットを公開] チェックボックスを選択します。と組み合わせて、この設定ではTRACE、EventBridge API キーなどの接続挿入。- IAM コンソールへのアクセスに使用するユーザー ID には、
states:RevealSecrets
アクションを実行するアクセス許可が必要です。このアクセス許可がないと、Step Functions は、テストの開始時にアクセス拒否エラーをスローします。の例 IAMstates:RevealSecrets
アクセス許可を設定するポリシーについては、「」を参照してくださいIAM を使用するためのアクセス許可 TestState API。次の図は、成功したHTTPタスクのテストを示しています。この状態の検査レベルは に設定されますTRACE。次の図のHTTPリクエストとレスポンスタブは、サードパーティーのAPI呼び出しの結果を示しています。
-
[テストを開始] を選択します。
-
テストが成功すると、HTTPリクエストとレスポンスタブにHTTP詳細が表示されます。
-
サポートされていないHTTPタスクレスポンス
返されたレスポンスに対して次のいずれかの条件が true の場合、HTTPタスクはStates.Runtime
エラーで失敗します。
-
レスポンスには、
application/octet-stream
、image/*
、video/*
、またはaudio/*
というコンテンツタイプヘッダーが含まれています。 -
応答は有効な文字列として読み取ることができません。例えば、バイナリデータや画像データなどです。