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