

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon States Language를 사용하여 Step Functions 워크플로 정의
<a name="concepts-amazon-states-language"></a>

Amazon States Language는 작업을 수행할 수 있는 상태 머신([상태](workflow-states.md) 모음)을 정의하거나(`Task` 상태) 다음으로 전환할 상태를 결정하거나(`Choice` 상태) 오류를 표시하면서 실행을 중지하는(`Fail` 상태) 데 사용되는 JSON 기반의 구조화된 언어입니다.

자세한 내용은 [Amazon States Language Specification](https://states-language.net/spec.html) 및 [Statelint](https://github.com/awslabs/statelint)(Amazon States Language 코드를 검증하는 도구)를 참조하십시오.

Amazon States Language를 사용하여 [Step Functions 콘솔](https://console.aws.amazon.com/states/home?region=us-east-1#/)에서 상태 머신을 만들려면 [시작하기](getting-started.md)를 참조하세요.

**참고**  
선택한 편집기와 같이 Step Functions 콘솔 외부에서 상태 머신을 정의하는 경우 상태 머신 정의를 *.asl.json* 확장명으로 저장해야 합니다.

## Amazon States Language 사양 예제(JSONata)
<a name="example-amazon-states-language-specification"></a>

```
{
  "Comment": "An example of the Amazon States Language using a choice state.",
  "QueryLanguage": "JSONata",
  "StartAt": "FirstState",
  "States": {
    "FirstState": {
      "Type": "Task",
      "Assign": {
        "foo" : "{% $states.input.foo_input %}" 
        },
      "Resource": "arn:aws:lambda:{{region}}:123456789012:function:{{FUNCTION_NAME}}",
      "Next": "ChoiceState"
    },
    "ChoiceState": {
      "Type": "Choice",
      "Default": "DefaultState",
      "Choices": [
        {
          "Next": "FirstMatchState",
          "Condition": "{% $foo = 1 %}"
        },
        {
          "Next": "SecondMatchState",
          "Condition": "{% $foo = 2 %}"
        }
      ]
    },
    "FirstMatchState": {
      "Type" : "Task",
      "Resource": "arn:aws:lambda:{{region}}:123456789012:function:{{OnFirstMatch}}",
      "Next": "NextState"
    },

    "SecondMatchState": {
      "Type" : "Task",
      "Resource": "arn:aws:lambda:{{region}}:123456789012:function:{{OnSecondMatch}}",
      "Next": "NextState"
    },

    "DefaultState": {
      "Type": "Fail",
      "Error": "DefaultStateError",
      "Cause": "No Matches!"
    },

    "NextState": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:{{region}}:123456789012:function:{{FUNCTION_NAME}}",
      "End": true
    }
  }
}
```