기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Step Functions에서의 모의 서비스 통합을 위한 구성 파일
모의 서비스 통합을 사용하려면 먼저 모의 구성이 포함된 MockConfigFile.json
이라는 모의 구성 파일을 만들어야 합니다. 그런 다음 모의 구성 파일과 함께 Step Functions Local을 제공합니다. 이 구성 파일은 테스트 사례를 정의하며 이 사례에는 모의 서비스 통합 응답을 사용하는 모의 상태가 포함됩니다. 다음 섹션에는 모의 상태와 모의 응답이 포함된 모의 구성 구조에 대한 정보가 포함되어 있습니다.
모의 구성 파일 구조
모의 구성은 다음과 같은 최상위 필드를 포함하는 JSON 객체입니다.
-
StateMachines
- 이 객체의 필드는 모의 서비스 통합을 사용하도록 구성된 상태 시스템을 나타냅니다. -
MockedResponse
- 이 객체의 필드는 서비스 통합 직접 호출에 대한 모의 응답을 나타냅니다.
다음은 StateMachine
정의와 MockedResponse
가 포함된 모의 구성 파일의 예제입니다.
{
"StateMachines":{
"LambdaSQSIntegration":{
"TestCases":{
"HappyPath":{
"LambdaState":"MockedLambdaSuccess",
"SQSState":"MockedSQSSuccess"
},
"RetryPath":{
"LambdaState":"MockedLambdaRetry",
"SQSState":"MockedSQSSuccess"
},
"HybridPath":{
"LambdaState":"MockedLambdaSuccess"
}
}
}
},
"MockedResponses":{
"MockedLambdaSuccess":{
"0":{
"Return":{
"StatusCode":200,
"Payload":{
"StatusCode":200,
"body":"Hello from Lambda!"
}
}
}
},
"LambdaMockedResourceNotReady":{
"0":{
"Throw":{
"Error":"Lambda.ResourceNotReadyException",
"Cause":"Lambda resource is not ready."
}
}
},
"MockedSQSSuccess":{
"0":{
"Return":{
"MD5OfMessageBody":"3bcb6e8e-7h85-4375-b0bc-1a59812c6e51",
"MessageId":"3bcb6e8e-8b51-4375-b0bc-1a59812c6e51"
}
}
},
"MockedLambdaRetry":{
"0":{
"Throw":{
"Error":"Lambda.ResourceNotReadyException",
"Cause":"Lambda resource is not ready."
}
},
"1-2":{
"Throw":{
"Error":"Lambda.TimeoutException",
"Cause":"Lambda timed out."
}
},
"3":{
"Return":{
"StatusCode":200,
"Payload":{
"StatusCode":200,
"body":"Hello from Lambda!"
}
}
}
}
}
}
모의 구성 필드 참조
다음 섹션에서는 모의 구성에서 정의해야 하는 최상위 객체 필드를 설명합니다.
StateMachines
StateMachines
객체는 모의 서비스 통합을 사용할 상태 시스템을 정의합니다. 각 상태 시스템의 구성은 StateMachines
의 최상위 필드로 표시됩니다. 필드 이름은 상태 시스템 이름이고 값은 TestCases
라는 단일 필드가 포함된 객체입니다. 이 필드는 해당 상태 시스템의 테스트 사례를 나타냅니다.
다음 구문에서는 테스트 사례가 2개 있는 상태 시스템을 보여줍니다.
"MyStateMachine": {
"TestCases": {
"HappyPath": {
...
},
"SadPath": {
...
}
}
TestCases
TestCases
의 필드는 상태 시스템의 개별 테스트 사례를 나타냅니다. 각 테스트 사례 이름은 상태 시스템마다 고유해야 하며 각 테스트 사례 값은 상태 시스템의 Task 상태에 사용할 모의 응답을 지정하는 객체입니다.
다음 TestCase
예제에서는 두 Task
상태를 MockedResponses
2개에 연결합니다.
"HappyPath": {
"SomeTaskState": "SomeMockedResponse",
"AnotherTaskState": "AnotherMockedResponse"
}
MockedResponses
MockedResponses
는 고유한 필드 이름을 가진 모의 응답 객체가 여러 개 포함된 객체입니다. 모의 응답 객체는 모의 Task 상태를 간접적으로 호출할 때마다 성공한 결과나 오류 출력을 정의합니다. “0”, “1”, “2” 및 “3”과 같은 개별 정수 문자열이나 “0-1”, “2-3"과 같은 포괄적인 정수 범위를 사용하여 간접 호출 번호를 지정합니다.
Task를 모의할 때 모든 간접 호출에 모의 응답을 지정해야 합니다. 응답에는 값이 모의 Task 간접 호출에 대한 결과나 오류 출력인 Return
또는 Throw
라는 단일 필드가 포함되어야 합니다. 모의 응답을 지정하지 않으면 상태 시스템 실행이 실패합니다.
다음은 Throw
및 Return
객체가 있는 MockedResponse
의 예제입니다. 이 예제에서는 상태 시스템이 처음 3번 실행되면 "0-2"
에 지정된 응답이 반환되고 상태 시스템이 4번 실행되면 "3"
에 지정된 응답이 반환됩니다.
"SomeMockedResponse": {
"0-2": {
"Throw": {
...
}
},
"3": {
"Return": {
...
}
}
}
참고
Map
상태를 사용 중이고 Map
상태에 대해 예측 가능한 응답을 보장하려면 maxConcurrency
값을 1로 설정하세요. 값을 1보다 크게 설정하면 Step Functions Local이 여러 반복을 동시에 실행하므로 반복 전반에 걸친 상태의 전체 실행 순서를 예측할 수 없게 됩니다. 이로 인해 Step Functions Local이 한 실행에서 다음 실행까지의 반복 상태에 서로 다른 모의 응답을 사용할 수도 있습니다.
반환
Return
은 MockedResponse
객체 필드로 표시됩니다. 모의 Task 상태의 성공 결과를 지정합니다.
다음은 Lambda 함수에서 Invoke
직접 호출에 대한 모의 응답이 포함된 Return
객체의 예입니다.
"Return": {
"StatusCode": 200,
"Payload": {
"StatusCode": 200,
"body": "Hello from Lambda!"
}
}
Throw
Throw
는 MockedResponse
객체 필드로 표시됩니다. 실패한 Task의 오류 출력을 지정합니다. Throw
값은 문자열 값이 있는 Error
및 Cause
필드가 포함된 객체여야 합니다. 또한 MockConfigFile.json
의 Error
필드에 지정하는 문자열 값은 상태 시스템의 Retry
및 Catch
섹션에서 처리된 오류와 일치해야 합니다.
다음은 Lambda 함수에서 Invoke
직접 호출에 대한 모의 응답이 포함된 Throw
객체의 예입니다.
"Throw": {
"Error": "Lambda.TimeoutException",
"Cause": "Lambda timed out."
}