기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
를 사용하여 TestState API Step Functions에서 상태 테스트
는 단일 상태의 정의를 TestState API 수락하고 실행합니다. 상태 머신을 생성하거나 기존 상태 머신을 업데이트하지 않고도 상태를 테스트할 수 있습니다.
를 사용하여 다음을 테스트 TestState API할 수 있습니다.
-
상태의 입력 및 출력 처리 데이터 흐름.
-
다른 AWS 서비스 요청 및 응답과의 AWS 서비스 통합
-
HTTP 작업 요청 및 응답
상태를 테스트하려면 Step Functions 콘솔 , AWS Command Line Interface (AWS CLI)또는 SDK.
는 필수 를 포함해야 하는 IAM 역할을 TestState
API 수임합니다.IAM 상태가 액세스하는 리소스에 대한 권한입니다. 필요할 수 있는 상태 권한을 알아보려면 IAM 사용 권한 TestState API 섹션을 참조하세요.
주제
사용에 대한 고려 사항 TestState API
를 사용하면 한 번에 하나의 상태만 테스트TestStateAPI할 수 있습니다. 테스트할 수 있는 상태는 다음과 같습니다.
를 사용하는 동안 다음 고려 사항에 유의TestState
API하세요.
-
에는 TestState API 다음에 대한 지원이 포함되지 않습니다.
-
다음 리소스 유형을 사용하는 작업 워크플로 상태 상태:
-
병렬 워크플로 상태 상태
-
워크플로 상태 매핑 상태
-
-
테스트는 최대 5분 동안 실행할 수 있습니다. 테스트가 이 시간을 초과하면
States.Timeout
오류가 발생하여 테스트가 실패합니다.
에서 검사 수준 사용 TestState API
를 사용하여 상태를 테스트하려면 해당 상태의 정의를 TestState API제공합니다. 그러면 테스트에서 출력이 반환됩니다. 각 상태에서는 테스트 결과에서 보려는 세부 정보의 양을 지정할 수 있습니다. 이 세부 정보를 통해 테스트 중인 상태에 대한 추가 정보를 얻을 수 있습니다. 예를 들어 상태에서 InputPath, ResultPath 등 입력 및 출력 데이터 처리 필터를 사용한 경우 중간 및 최종 데이터 처리 결과를 볼 수 있습니다.
Step Functions 는 보려는 세부 정보를 지정하는 다음 수준을 제공합니다.
이러한 모든 레벨은 status
및 nextState
필드도 반환합니다. status
는 상태 실행 상태를 나타냅니다. 예로 SUCCEEDED
, FAILED
, RETRIABLE
, CAUGHT_ERROR
, nextState
는 전환할 다음 상태의 이름을 나타냅니다. 정의에서 다음 상태를 정의하지 않은 경우 이 필드에는 빈 값이 반환됩니다.
에서 이러한 검사 수준을 사용하여 상태를 테스트하는 방법에 대한 자세한 내용은 Step Functions 콘솔 및 AWS CLI, 상태 테스트(콘솔) 및 참조를 사용하여 상태 테스트 AWS CLI.
INFO inspectionLevel
테스트가 성공하면 이 레벨에 상태 출력이 표시됩니다. 테스트에 실패한 경우 이 레벨에 오류 출력이 표시됩니다. 기본적으로 Step Functions 수준을 지정하지 INFO 않으면 는 검사 수준을 로 설정합니다.
다음 이미지는 성공한 통과 상태 테스트를 보여 줍니다. 이 상태에 대한 검사 수준이 로 설정INFO되고 상태에 대한 출력이 출력 탭에 나타납니다.
다음 이미지는 검사 수준이 로 설정된 경우 작업 상태에 실패한 테스트를 보여줍니다INFO. 출력 탭에는 오류 이름과 해당 오류의 원인에 대한 자세한 설명이 포함된 오류 출력이 표시됩니다.
DEBUG inspectionLevel
테스트가 성공하면 이 레벨에는 상태 출력과 입력 및 출력 데이터 처리 결과가 표시됩니다.
테스트에 실패한 경우 이 레벨에 오류 출력이 표시됩니다. 이 레벨은 실패 지점까지의 중간 데이터 처리 결과를 보여 줍니다. 예를 들어 를 호출하는 작업 상태를 테스트했다고 가정해 보겠습니다.Lambda 함수. InputPath, 파라미터, Step Functions 워크플로 ResultPath 에서 를 사용하여 상태 출력 지정, Step Functions 워크플로를 사용하여 OutputPath 상태 출력 필터링하기 필터를 태스크 상태에 적용했다고 생각해 봅니다. 간접 호출이 실패했다고 가정해 보겠습니다. 이 경우 DEBUG
레벨에는 필터 적용에 따른 데이터 처리 결과가 다음과 같은 순서로 표시됩니다.
-
input
- 원시 상태 입력 -
afterInputPath
- 이후 입력 Step Functions 는InputPath
필터를 적용합니다. -
afterParameters
- 다음 이후의 유효 입력 Step Functions 는Parameters
필터를 적용합니다.
이 레벨에서 사용할 수 있는 진단 정보는 정의했을 수 있는 서비스 통합 또는 입/출력 데이터 처리 흐름과 관련된 문제를 해결하는 데 도움이 될 수 있습니다.
다음 이미지는 성공한 통과 상태 테스트를 보여 줍니다. 이 상태에 대한 검사 수준은 로 설정됩니다DEBUG. 다음 이미지의 입력/출력 처리 탭은 이 상태에 제공된 입력에 대한 Parameters의 애플리케이션 결과를 보여 줍니다.
다음 이미지는 검사 수준이 로 설정된 경우 작업 상태에 실패한 테스트를 보여줍니다DEBUG. 다음 이미지의 입력/출력 처리 탭은 실패 시점까지의 상태에 대한 입력 및 출력 데이터 처리 결과를 보여 줍니다.
TRACE inspectionLevel
Step Functions 는 HTTP 태스크를 테스트하는 TRACE 수준을 제공합니다. 이 수준은 다음과 같은 HTTP 요청에 대한 정보를 반환합니다.Step Functions 는 서드 파티가 API 반환하는 및 응답을 생성합니다. 응답에는 헤더 및 요청 본문과 같은 정보가 포함될 수 있습니다. 또한 이 레벨에서 입력 및 출력 데이터 처리의 상태 출력과 결과를 볼 수 있습니다.
테스트에 실패한 경우 이 레벨에 오류 출력이 표시됩니다.
이 수준은 HTTP 태스크에만 적용됩니다.Step Functions 는 다른 상태 유형에 이 수준을 사용하는 경우 오류를 발생시킵니다.
검사 수준을 로 설정하면 EventBridge 연결 에 포함된 보안 암호를 볼 수도 TRACE있습니다. 이렇게 하려면 true
에서 revealSecrets
파라미터를 TestState 로 설정해야 합니다API. 또한 가 IAM 를 TestState API 호출하는 사용자는 states:RevealSecrets
작업에 대한 권한이 있습니다. 의 예 IAM states:RevealSecrets
권한을 설정하는 정책은 섹션을 참조하세요IAM 사용 권한 TestState API. 이 권한이 없으면 Step Functions 는 액세스 거부 오류를 발생시킵니다.
revealSecrets
파라미터를 로 설정하면 false
Step Functions HTTP 요청 및 응답 데이터의 모든 보안 암호를 생략합니다.
다음 이미지는 성공하는 HTTP 작업에 대한 테스트를 보여줍니다. 이 상태에 대한 검사 수준은 로 설정됩니다TRACE. 다음 이미지의 HTTP 요청 및 응답 탭은 서드 파티 API 호출의 결과를 보여줍니다.
IAM 사용 권한 TestState API
는 IAM 를 호출하는 사용자는 states:TestState
및 iam:PassRole
작업을 수행할 권한이 TestState
API 있어야 합니다. 또한 revealSecrets 파라미터를 로 설정하는 경우 true
IAM 사용자는 states:RevealSecrets
작업을 수행할 권한이 있습니다. 이 권한이 없으면 Step Functions 는 액세스 거부 오류를 발생시킵니다.
또한 실행 역할에 필요한 가 포함되어 있는지 확인해야 합니다.IAM 상태가 액세스하는 리소스에 대한 권한입니다. 상태에 필요할 수 있는 권한을 알아보려면 실행 역할 관리 섹션을 참조하세요.
다음은 IAM 정책 예제는 states:TestState
, iam:PassRole
및 states:RevealSecrets
권한을 설정합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:TestState", "states:RevealSecrets", "iam:PassRole" ], "Resource": "*" } ] }
상태 테스트(콘솔)
콘솔에서 상태를 테스트하고 상태 출력 또는 입출력 데이터 처리 흐름을 확인할 수 있습니다. HTTP 작업 의 경우 원시 HTTP 요청 및 응답을 테스트할 수 있습니다.
상태를 테스트하려면
-
Step Functions 콘솔
을 엽니다. -
상태 머신 생성을 선택하여 상태 머신 생성을 시작하거나 기존 상태 머신을 선택합니다.
-
Workflow Studio의 디자인 모드에서 테스트하려는 상태를 선택합니다.
-
Workflow Studio의 검사기 패널 패널에서 테스트 상태를 선택합니다.
-
테스트 상태 대화 상자에서 다음을 수행합니다.
-
실행 역할에서 상태를 테스트할 실행 역할을 선택합니다. 필요한 가 있는지 확인합니다. IAM 테스트하려는 상태에 대한 권한입니다.
-
(선택 사항) 선택한 상태에 테스트에 필요한 JSON 입력을 제공합니다.
-
검사 레벨에서 보려는 값을 기준으로 다음 옵션 중 하나를 선택합니다.
-
INFO - 테스트가 성공하면 출력 탭에 상태 출력을 표시합니다. 테스트가 실패하면 에 오류 이름과 해당 오류의 원인에 대한 자세한 설명이 포함된 오류 출력이 INFO 표시됩니다. 기본적으로 Step Functions INFO 는 수준을 선택하지 않으면 검사 수준을 로 설정합니다.
-
DEBUG - 테스트가 성공하면 상태 출력과 입력 및 출력 데이터 처리 결과를 표시합니다. 테스트가 실패하면 에 오류 이름과 해당 오류의 원인에 대한 자세한 설명이 포함된 오류 출력이 DEBUG 표시됩니다.
-
TRACE - 원시 HTTP 요청 및 응답을 표시하고 헤더, 쿼리 파라미터 및 기타 API특정 세부 정보를 확인하는 데 유용합니다. 이 옵션은 HTTP 태스크 에만 사용할 수 있습니다.
필요에 따라 비밀 공개를 선택할 수 있습니다. 와 함께 TRACE이 설정을 사용하면 EventBridge API 키와 같은 연결 삽입. 는 IAM 콘솔에 액세스하는 데 사용하는 사용자 자격 증명에는
states:RevealSecrets
작업을 수행할 수 있는 권한이 있어야 합니다. 이 권한이 없으면 Step Functions 는 테스트를 시작할 때 액세스 거부 오류를 발생시킵니다. 의 예 IAMstates:RevealSecrets
권한을 설정하는 정책은 섹션을 참조하세요IAM 사용 권한 TestState API.
-
-
테스트 시작을 선택합니다.
-
를 사용하여 상태 테스트 AWS CLI
TestState API 에서 를 사용하여 지원되는 상태를 테스트할 수 있습니다.AWS CLI. 이렇게 하면 상태의 정의를 API 수락하고 실행합니다.
각 상태에서는 테스트 결과에서 보려는 세부 정보의 양을 지정할 수 있습니다. 이러한 세부 정보는 입력 및 출력 데이터 처리 결과와 HTTP 요청 및 응답 정보를 포함하여 상태 실행에 대한 추가 정보를 제공합니다. 다음 예제에서는 에 지정할 수 있는 다양한 검사 수준을 보여줍니다 TestState API. 를 교체해야 합니다.italicized
리소스별 정보가 포함된 텍스트입니다.
이 섹션에는 다음과 같은 다양한 검사 수준을 사용하는 방법을 설명하는 다음 예제가 포함되어 있습니다.Step Functions 에서 는 를 제공합니다.AWS CLI:
예제 1: Choice 상태를 테스트INFO inspectionLevel 하는 데 사용
INFO
inspectionLevel 에서 를 사용하여 상태를 테스트하려면 다음 예제와 같이 test-state
명령을 AWS CLI실행합니다.
aws stepfunctions test-state \ --definition '{"Type": "Choice", "Choices": [{"Variable": "$.number", "NumericEquals": 1, "Next": "Equals 1"}, {"Variable": "$.number", "NumericEquals": 2, "Next": "Equals 2"}], "Default": "No Match"}' \ --role-arn arn:aws:iam::
123456789012
:role/myRole
\ --input '{"number": 2}'
이 예제에서는 선택 상태를 사용하여 사용자가 제공한 숫자 입력을 기반으로 상태의 실행 경로를 결정합니다. 기본적으로 Step Functions 수준을 설정INFO
하지 않으면 가 inspectionLevel
를 로 설정합니다.
Step Functions 는 다음 출력을 반환합니다.
{
"output": "{\"number\": 2}",
"nextState": "Equals 2",
"status": "SUCCEEDED"
}
예제 2: DEBUG inspectionLevel 를 사용하여 통과 상태에서 입력 및 출력 데이터 처리 디버깅
DEBUG
inspectionLevel 에서 를 사용하여 상태를 테스트하려면 다음 예제와 같이 test-state
명령을 AWS CLI실행합니다.
aws stepfunctions test-state \ --definition '{"Type": "Pass", "InputPath": "$.payload", "Parameters": {"data": 1}, "ResultPath": "$.result", "OutputPath": "$.result.data", "Next": "Another State"}' \ --role-arn arn:aws:iam::
123456789012
:role/myRole
\ --input '{"payload": {"foo": "bar"}}' \ --inspection-level DEBUG
이 예제에서는 워크플로 상태 전달 상태를 사용하여 방법을 보여줍니다.Step Functions 입력 및 출력 JSON 데이터 처리 필터를 사용하여 입력 데이터를 필터링하고 조작합니다. 이 예제에서는 InputPath
, 파라미터
, Step Functions 워크플로 ResultPath 에서 를 사용하여 상태 출력 지정
, Step Functions 워크플로를 사용하여 OutputPath 상태 출력 필터링하기
필터를 사용합니다.
Step Functions 는 다음 출력을 반환합니다.
{
"output": "1",
"inspectionData": {
"input": "{\"payload\": {\"foo\": \"bar\"}}",
"afterInputPath": "{\"foo\":\"bar\"}",
"afterParameters": "{\"data\":1}",
"afterResultSelector": "{\"data\":1}",
"afterResultPath": "{\"payload\":{\"foo\":\"bar\"},\"result\":{\"data\":1}}"
},
"nextState": "Another State",
"status": "SUCCEEDED"
}
예제 3: TRACE inspectionLevel 및 revealSecrets 를 사용하여 타사에 전송된 HTTP 요청 검사 API
의 revealSecrets 파라미터와 TRACE
inspectionLevel 함께 를 사용하여 HTTP 태스크를 테스트하려면 다음 예제와 같이 test-state
명령을 AWS CLI실행합니다.
aws stepfunctions test-state \
--definition '{"Type": "Task", "Resource": "arn:aws:states:::http:invoke", "Parameters": {"Method": "GET", "Authentication": {"ConnectionArn": "arn:aws:events:us-east-1:123456789012
:connection/MyConnection/0000000-0000-0000-0000-000000000000"
}, "ApiEndpoint": "https://httpbin.org/get", "Headers": {"definitionHeader": "h1"}, "RequestBody": {"message": "Hello from Step Functions!"}, "QueryParameters": {"queryParam": "q1"}}, "End": true}' \
--role-arn arn:aws:iam::123456789012
:role/myRole
\
--inspection-level TRACE \
--reveal-secrets
이 예제에서는 HTTP 태스크가 지정된 타사 API, 를 호출하는지 테스트합니다https://httpbin.org/
. 또한 API 호출에 대한 HTTP 요청 및 응답 데이터도 보여줍니다.
{
"output": "{\"Headers\":{\"date\":[\"Tue, 21 Nov 2023 00:06:17 GMT\"],\"access-control-allow-origin\":[\"*\"],\"content-length\":[\"620\"],\"server\":[\"gunicorn/19.9.0\"],\"access-control-allow-credentials\":[\"true\"],\"content-type\":[\"application/json\"]},\"ResponseBody\":{\"args\":{\"QueryParam1\":\"QueryParamValue1\",\"queryParam\":\"q1\"},\"headers\":{\"Authorization\":\"Basic XXXXXXXX\",\"Content-Type\":\"application/json; charset=UTF-8\",\"Customheader1\":\"CustomHeaderValue1\",\"Definitionheader\":\"h1\",\"Host\":\"httpbin.org\",\"Range\":\"bytes=0-262144\",\"Transfer-Encoding\":\"chunked\",\"User-Agent\":\"Amazon|StepFunctions|HttpInvoke|us-east-1\",\"X-Amzn-Trace-Id\":\"Root=1-0000000-0000-0000-0000-000000000000\"},\"origin\":\"12.34.567.891\",\"url\":\"https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1\"},\"StatusCode\":200,\"StatusText\":\"OK\"}",
"inspectionData": {
"input": "{}",
"afterInputPath": "{}",
"afterParameters": "{\"Method\":\"GET\",\"Authentication\":{\"ConnectionArn\":\"arn:aws:events:us-east-1:123456789012
:connection/foo/a59c10f0-a315-4c1f-be6a-559b9a0c6250\"},\"ApiEndpoint\":\"https://httpbin.org/get\",\"Headers\":{\"definitionHeader\":\"h1\"},\"RequestBody\":{\"message\":\"Hello from Step Functions!\"},\"QueryParameters\":{\"queryParam\":\"q1\"}}",
"result": "{\"Headers\":{\"date\":[\"Tue, 21 Nov 2023 00:06:17 GMT\"],\"access-control-allow-origin\":[\"*\"],\"content-length\":[\"620\"],\"server\":[\"gunicorn/19.9.0\"],\"access-control-allow-credentials\":[\"true\"],\"content-type\":[\"application/json\"]},\"ResponseBody\":{\"args\":{\"QueryParam1\":\"QueryParamValue1\",\"queryParam\":\"q1\"},\"headers\":{\"Authorization\":\"Basic XXXXXXXX\",\"Content-Type\":\"application/json; charset=UTF-8\",\"Customheader1\":\"CustomHeaderValue1\",\"Definitionheader\":\"h1\",\"Host\":\"httpbin.org\",\"Range\":\"bytes=0-262144\",\"Transfer-Encoding\":\"chunked\",\"User-Agent\":\"Amazon|StepFunctions|HttpInvoke|us-east-1\",\"X-Amzn-Trace-Id\":\"Root=1-0000000-0000-0000-0000-000000000000\"},\"origin\":\"12.34.567.891\",\"url\":\"https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1\"},\"StatusCode\":200,\"StatusText\":\"OK\"}",
"afterResultSelector": "{\"Headers\":{\"date\":[\"Tue, 21 Nov 2023 00:06:17 GMT\"],\"access-control-allow-origin\":[\"*\"],\"content-length\":[\"620\"],\"server\":[\"gunicorn/19.9.0\"],\"access-control-allow-credentials\":[\"true\"],\"content-type\":[\"application/json\"]},\"ResponseBody\":{\"args\":{\"QueryParam1\":\"QueryParamValue1\",\"queryParam\":\"q1\"},\"headers\":{\"Authorization\":\"Basic XXXXXXXX\",\"Content-Type\":\"application/json; charset=UTF-8\",\"Customheader1\":\"CustomHeaderValue1\",\"Definitionheader\":\"h1\",\"Host\":\"httpbin.org\",\"Range\":\"bytes=0-262144\",\"Transfer-Encoding\":\"chunked\",\"User-Agent\":\"Amazon|StepFunctions|HttpInvoke|us-east-1\",\"X-Amzn-Trace-Id\":\"Root=1-0000000-0000-0000-0000-000000000000\"},\"origin\":\"12.34.567.891\",\"url\":\"https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1\"},\"StatusCode\":200,\"StatusText\":\"OK\"}",
"afterResultPath": "{\"Headers\":{\"date\":[\"Tue, 21 Nov 2023 00:06:17 GMT\"],\"access-control-allow-origin\":[\"*\"],\"content-length\":[\"620\"],\"server\":[\"gunicorn/19.9.0\"],\"access-control-allow-credentials\":[\"true\"],\"content-type\":[\"application/json\"]},\"ResponseBody\":{\"args\":{\"QueryParam1\":\"QueryParamValue1\",\"queryParam\":\"q1\"},\"headers\":{\"Authorization\":\"Basic XXXXXXXX\",\"Content-Type\":\"application/json; charset=UTF-8\",\"Customheader1\":\"CustomHeaderValue1\",\"Definitionheader\":\"h1\",\"Host\":\"httpbin.org\",\"Range\":\"bytes=0-262144\",\"Transfer-Encoding\":\"chunked\",\"User-Agent\":\"Amazon|StepFunctions|HttpInvoke|us-east-1\",\"X-Amzn-Trace-Id\":\"Root=1-0000000-0000-0000-0000-000000000000\"},\"origin\":\"12.34.567.891\",\"url\":\"https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1\"},\"StatusCode\":200,\"StatusText\":\"OK\"}",
"request": {
"protocol": "https",
"method": "GET",
"url": "https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1",
"headers": "[definitionHeader: h1, Authorization: Basic XXXXXXXX, CustomHeader1: CustomHeaderValue1, User-Agent: Amazon|StepFunctions|HttpInvoke|us-east-1, Range: bytes=0-262144]",
"body": "{\"message\":\"Hello from Step Functions!\",\"BodyKey1\":\"BodyValue1\"}"
},
"response": {
"protocol": "https",
"statusCode": "200",
"statusMessage": "OK",
"headers": "[date: Tue, 21 Nov 2023 00:06:17 GMT, content-type: application/json, content-length: 620, server: gunicorn/19.9.0, access-control-allow-origin: *, access-control-allow-credentials: true]",
"body": "{\n \"args\": {\n \"QueryParam1\": \"QueryParamValue1\", \n \"queryParam\": \"q1\"\n }, \n \"headers\": {\n \"Authorization\": \"Basic XXXXXXXX\", \n \"Content-Type\": \"application/json; charset=UTF-8\", \n \"Customheader1\": \"CustomHeaderValue1\", \n \"Definitionheader\": \"h1\", \n \"Host\": \"httpbin.org\", \n \"Range\": \"bytes=0-262144\", \n \"Transfer-Encoding\": \"chunked\", \n \"User-Agent\": \"Amazon|StepFunctions|HttpInvoke|us-east-1\", \n \"X-Amzn-Trace-Id\": \"Root=1-0000000-0000-0000-0000-000000000000\"\n }, \n \"origin\": \"12.34.567.891\", \n \"url\": \"https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1\"\n}\n"
}
},
"status": "SUCCEEDED"
}
예제 4: jq 유틸리티를 사용하여 반환되는 TestState API 응답을 필터링하고 인쇄합니다.
는 TestState API 데이터를 응답에서 이스케이프된 문자열JSON로 반환합니다. 다음은 AWS CLI 예제는 예제 3을 확장하고 jq
유틸리티를 사용하여 TestState API가 사람이 읽을 수 있는 형식으로 반환하는 HTTP 응답을 필터링하고 인쇄합니다. jq
및 설치 지침에 대한 자세한 내용은 의 jq
aws stepfunctions test-state \
--definition '{"Type": "Task", "Resource": "arn:aws:states:::http:invoke", "Parameters": {"Method": "GET", "Authentication": {"ConnectionArn": "arn:aws:events:us-east-1:123456789012
:connection/MyConnection/0000000-0000-0000-0000-000000000000"
}, "ApiEndpoint": "https://httpbin.org/get", "Headers": {"definitionHeader": "h1"}, "RequestBody": {"message": "Hello from Step Functions!"}, "QueryParameters": {"queryParam": "q1"}}, "End": true}' \
--role-arn arn:aws:iam::123456789012
:role/myRole
\
--inspection-level TRACE \
--reveal-secrets \
| jq '.inspectionData.response.body | fromjson'
다음 예제에서는 사람이 읽을 수 있는 형식으로 반환된 출력을 보여 줍니다.
{
"args": {
"QueryParam1": "QueryParamValue1",
"queryParam": "q1"
},
"headers": {
"Authorization": "Basic XXXXXXXX",
"Content-Type": "application/json; charset=UTF-8",
"Customheader1": "CustomHeaderValue1",
"Definitionheader": "h1",
"Host": "httpbin.org",
"Range": "bytes=0-262144",
"Transfer-Encoding": "chunked",
"User-Agent": "Amazon|StepFunctions|HttpInvoke|us-east-1",
"X-Amzn-Trace-Id": "Root=1-0000000-0000-0000-0000-000000000000"
},
"origin": "12.34.567.891
",
"url": "https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1
"
}
입력 및 출력 데이터 흐름 테스트 및 디버깅
TestState
API 는 워크플로를 통해 흐르는 데이터를 테스트하고 디버깅하는 데 유용합니다. 이 섹션에서는 몇 가지 주요 개념을 제공하고 이를 TestState 위해 를 사용하는 방법을 설명합니다.
주요 개념
In Step Functions상태 시스템의 상태를 통과할 때 JSON 데이터를 필터링하고 조작하는 프로세스를 입력 및 출력 처리라고 합니다. 이 기능의 작동 방식에 대한 자세한 내용은 Step Functions에서 입력 및 출력 처리하기 단원을 참조하십시오.
Amazon States Language (ASL)(작업, 병렬, 맵, 통과, 대기, 선택, 성공 및 실패)의 모든 상태 유형은 통과하는 JSON 데이터를 필터링하고 조작하기 위한 공통 필드 세트를 공유합니다. 이러한 필드로는 InputPath, 파라미터, ResultSelector, Step Functions 워크플로 ResultPath 에서 를 사용하여 상태 출력 지정, Step Functions 워크플로를 사용하여 OutputPath 상태 출력 필터링하기 등이 있습니다. 각 필드에 대한 지원은 상태마다 다릅니다
다음 목록은 다이어그램에 표시된 입력 및 출력 처리 필드의 적용 순서를 설명합니다.
-
상태 입력은 이전 상태에서 현재 상태로 전달되는 JSON 데이터입니다.
-
InputPath에서는 원시 상태 입력의 일부를 필터링합니다.
-
태스크는 작업을 수행하고 결과를 반환합니다.
-
ResultSelector에서는 태스크 결과에서 유지할 값 집합을 선택합니다.
-
Step Functions 워크플로 ResultPath 에서 를 사용하여 상태 출력 지정에서는 결과를 원시 상태 입력과 결합하거나 결과를 원시 상태 입력으로 대체합니다.
-
Step Functions 워크플로를 사용하여 OutputPath 상태 출력 필터링하기에서는 출력의 일부를 필터링하여 다음 상태로 전달합니다.
-
상태 출력은 현재 상태에서 다음 상태로 전달되는 JSON 데이터입니다.
이러한 입력 및 출력 처리 필드는 선택 사항입니다. 상태 정의에서 이러한 필드를 사용하지 않는 경우 태스크는 원시 상태 입력을 사용하고 태스크 결과를 상태 출력으로 반환합니다.
TestState 를 사용하여 입력 및 출력 처리 검사
를 호출TestState
API하고 inspectionLevel
파라미터를 로 설정하면 API 응답DEBUG
에 라는 객체가 포함됩니다inspectionData
. 이 객체에는 데이터가 실행되었을 때 상태 내에서 데이터가 필터링 또는 조작된 방식을 검사하는 데 도움이 되는 필드가 포함되어 있습니다. 다음 예제는 태스크 상태용 inspectionData
객체를 보여 줍니다.
"inspectionData": {
"input": string,
"afterInputPath": string,
"afterParameters": string,
"result": string,
"afterResultSelector": string,
"afterResultPath": string,
"output": string
}
이 예제에서 after
접두사가 포함된 각 필드는 특정 필드가 적용된 이후의 데이터를 보여 줍니다. 예를 들어 afterInputPath
는 InputPath
필드를 적용하여 원시 상태 입력을 필터링했을 때의 효과를 보여 줍니다. 다음 다이어그램은 각 ASL 정의 필드를 inspectionData
객체의 해당 필드에 매핑합니다.
를 TestState API 사용하여 입력 및 출력 처리를 디버깅하는 예제는 다음을 참조하세요.