

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

# Lambda를 사용하는 Step Functions 상태 머신 만들기
<a name="tutorial-creating-lambda-state-machine"></a>

이 자습서에서는를 사용하여 AWS Lambda 함수를 호출 AWS Step Functions 하는 단일 단계 워크플로를 생성합니다.

**참고**  
Step Functions는 *상태 머신*과 *작업*에 기반합니다. Step Functions에서는 상태 머신을 *워크플로*라고 하며, 이는 일련의 이벤트 기반 단계입니다. 워크플로의 각 단계를 *상태*라고 합니다. 예를 들어 [작업 상태는](state-task.md) 다른 AWS 서비스 또는 API 호출과 같이 다른 AWS 서비스가 수행하는 작업 단위를 나타냅니다. 작업을 수행하는 워크플로 실행 인스턴스를 Step Functions에서 *실행*이라고 합니다.  
자세한 내용은 다음을 참조하세요.  
[Step Functions란 무엇입니까?](welcome.md)
[Step Functions에서 서비스 통합](integrate-services.md)

Lambda 함수는 *서버리스*이고 작성하기 쉬우므로 Lambda는 `Task` 상태에 매우 적합합니다. AWS Management Console 또는 자주 사용하는 편집기에서 코드를 작성할 수 있습니다.는 함수에 대한 컴퓨팅 환경을 제공하고 실행하는 세부 정보를 AWS 처리합니다.

## 1단계: Lambda 함수 생성
<a name="create-lambda-function"></a>

Lambda 함수는 이벤트 데이터를 수신하고 인사말 메시지를 반환합니다.

**중요**  
Lambda 함수가 상태 시스템과 동일한 AWS 계정 및 AWS 리전 에 있는지 확인합니다.

1. [Lambda 콘솔](https://console.aws.amazon.com/lambda/home)을 열고 **함수 생성**을 선택합니다.

1. **함수 생성** 페이지에서 **처음부터 새로 작성**을 선택합니다.

1. [**함수 이름**]에 `HelloFunction`을 입력합니다.

1. 다른 모든 옵션에는 기본 선택 항목을 그대로 둔 다음 **함수 생성**을 선택합니다.

1. Lambda 함수를 만든 후 페이지 오른쪽 상단 모서리에 표시된 함수의 Amazon 리소스 이름(ARN)을 복사합니다. ARN 예제는 다음과 같습니다.

   ```
   arn:aws:lambda:region:123456789012:function:HelloFunction
   ```

1. Lambda 함수의 다음 코드를 ***HelloFunction*** 페이지의 **코드 소스** 섹션에 복사합니다.

   ```
   export const handler = async(event, context, callback) => {
       callback(null, "Hello from " + event.who + "!");
   };
   ```

   이 코드는 입력 데이터의 `who` 필드를 사용하여 인삿말을 수집합니다. 이때 입력 데이터는 함수로 전달되는 `event` 객체가 전달한 것입니다. 이 함수의 입력 데이터는 나중에 [새로 실행을 시작](#start-lambda-function)할 때 추가합니다. `callback` 메서드는 함수로부터 수집된 인삿말을 반환합니다.

1. **배포(Deploy)**를 선택합니다.

## 2단계: Lambda 함수 테스트
<a name="test-lambda-function"></a>

Lambda 함수를 테스트하여 작동 상태를 확인합니다.

1. **테스트**를 선택합니다.

1. **이벤트 이름**에 `HelloEvent`를 입력합니다.

1. **이벤트 JSON** 데이터를 다음으로 바꿉니다.

   ```
   {
       "who": "AWS Step Functions"
   }
   ```

   `"who"` 항목은 Lambda 함수의 `event.who` 필드에 해당하며 인사말을 완성합니다. 상태 머신을 실행할 때 같은 입력 데이터를 입력합니다.

1. **저장**를 선택한 다음 **테스트**를 선택합니다.

1. 테스트 결과를 확인하려면 **실행 결과(Execution result)**에서 **세부 정보(Details)**를 확장합니다.

## 3단계: 상태 머신 만들기
<a name="create-state-machine-step"></a>

Step Functions 콘솔을 사용하여 [1단계](#create-lambda-function)에서 만든 Lambda 함수를 간접적으로 호출하는 상태 머신을 만듭니다.

1. [AWS Step Functions 콘솔](https://console.aws.amazon.com/states/home)을 열고 메뉴에서 **상태 머신**을 선택한 다음 **상태 머신 생성**을 선택합니다.
**중요**  
상태 시스템이 이전에 생성한 Lambda 함수와 동일한 AWS 계정 및 리전에 있는지 확인합니다.

1. **새로 생성**을 선택합니다.

1. 상태 머신의 이름을 지정한 다음 **계속**을 선택하여 Workflow Studio에서 상태 머신을 편집합니다.

1. 왼쪽의 [상태 브라우저](workflow-studio.md#workflow-studio-components-states)에서 **작업** 탭을 선택했는지 확인합니다. 그런 다음 **AWS Lambda Invoke** API를 끌어 **첫 번째 상태를 여기에 놓기** 레이블이 지정된 빈 상태에 놓습니다.

1. 오른쪽의 [Inspector](workflow-studio.md#workflow-studio-components-formdefinition) 패널에서 Lambda 함수를 구성합니다.

   1. **API 파라미터** 섹션의 **함수 이름** 드롭다운 목록에서 [이전에 만든 Lambda 함수](#create-lambda-function)를 선택합니다.

   1. **페이로드** 드롭다운 목록에 기본 선택 항목을 그대로 둡니다.

1. (선택 사항) **정의**를 선택하여 상태 머신의 [Amazon States Language](concepts-amazon-states-language.md)(ASL) 정의를 봅니다. 이 정의는 **작업** 탭과 **Inspector** 패널에서의 선택 항목에 따라 자동으로 생성됩니다.

1. 상태 머신 이름을 지정합니다. 이렇게 하려면 기본 상태 머신 이름인 **MyStateMachine** 옆에 있는 편집 아이콘을 선택합니다. 그런 다음 **상태 머신 구성**에서 **상태 머신 이름** 상자에 이름을 지정합니다.

   예를 들어 **LambdaStateMachine** 이름을 입력합니다.
**참고**  
상태 머신, 실행 및 활동 태스크의 이름은 80자를 초과하면 안 됩니다. 이러한 이름은 계정 및 AWS 리전에 고유해야 하며 다음 중 하나를 포함하지 않아야 합니다.  
공백
와일드카드 문자 (`? *`)
괄호 문자(`< > { } [ ]`)
특수 문자 (`" # % \ ^ | ~ ` $ & , ; : /`)
제어 문자(`\\u0000` - `\\u001f` 또는 `\\u007f` - `\\u009f`).
Step Functions는 비 ASCII 문자가 포함된 상태 머신, 실행, 활동 및 레이블 이름을 허용합니다. 이러한 문자는 Amazon CloudWatch에서 데이터 로깅을 방지하므로 Step Functions 지표를 추적할 수 있도록 ASCII 문자만 사용하는 것이 좋습니다.

1. (선택 사항) **상태 머신 구성**에서 상태 머신 유형 및 실행 역할과 같은 기타 워크플로 설정을 지정합니다.

   이 자습서의 경우 **상태 머신 설정**의 모든 기본 선택 항목을 그대로 둡니다.

1. **생성(Create)**을 선택합니다.

1. **역할 생성 확인** 대화 상자에서 **확인**을 선택하여 계속합니다.

   **역할 설정 보기**를 선택하여 **상태 머신 구성**으로 돌아갈 수도 있습니다.
**참고**  
Step Functions에서 만드는 IAM 역할을 삭제하면 나중에 Step Functions에서 이 역할을 다시 만들 수 없습니다. 마찬가지로, 역할을 수정하면(예: IAM 정책의 주요에서 Step Functions 제거) 나중에 Step Functions에서 해당 원본 설정을 복원할 수 없습니다.

## 4단계: 상태 머신 실행
<a name="start-lambda-function"></a>

상태 머신을 만든 후에 실행할 수 있습니다.

1. **상태 머신** 페이지에서 **LambdaStateMachine**을 선택합니다.

1. **실행 시작**을 선택합니다.

   **실행 시작** 대화 상자가 표시됩니다.

1. (선택 사항) 생성된 기본값을 재정의하려면 사용자 지정 실행 이름을 입력합니다.
**비 ASCII 이름 및 로깅**  
Step Functions는 비 ASCII 문자가 포함된 상태 머신, 실행, 활동 및 레이블 이름을 허용합니다. 이러한 문자는 Amazon CloudWatch에서 데이터 로깅을 방지하므로 Step Functions 지표를 추적할 수 있도록 ASCII 문자만 사용하는 것이 좋습니다.

1. **입력** 영역에서 예제 실행 데이터를 다음으로 바꿉니다.

   ```
   {
       "who" : "AWS Step Functions"
   }
   ```

    `"who"`는 인사할 사람 이름을 가져오기 위해 Lambda 함수에서 사용하는 키 이름입니다.

1. **실행 시작**을 선택합니다.

   상태 머신 실행이 시작되고 실행 중인 실행을 보여주는 새로운 페이지가 표시됩니다.

1. Step Functions 콘솔은 실행 ID가 제목인 페이지로 이동합니다. 이 페이지를 *실행 세부 정보* 페이지라고 합니다. 실행이 진행되는 동안 또는 완료된 후에 이 페이지에서 실행 결과를 검토할 수 있습니다.

   실행 결과를 검토하려면 **그래프 보기**에서 개별 상태를 선택한 다음 [단계 세부 정보](concepts-view-execution-details.md#exec-details-intf-step-details) 창에서 개별 탭을 선택하여 입력, 출력 및 정의가 포함된 각 상태의 세부 정보를 각각 봅니다. *실행 세부 정보* 페이지에서 볼 수 있는 실행 정보에 대한 자세한 내용은 [실행 세부 정보 개요](concepts-view-execution-details.md#exec-details-interface-overview) 섹션을 참조하세요.

**참고**  
상태 머신에서 Lambda를 간접적으로 호출하는 동안 페이로드를 전달할 수도 있습니다. `Parameters` 필드에 페이로드를 전달하여 Lambda를 간접적으로 호출하는 방법에 대한 자세한 내용과 예제는 [Step Functions를 사용하여 AWS Lambda함수 호출](connect-lambda.md) 섹션을 참조하세요.