

지원 종료 공지: 2025년 9월 15 AWS 일에는 Amazon Lex V1에 대한 지원을 중단할 예정입니다. 2025년 9월 15일 이후에는 Amazon Lex V1 콘솔 또는 Amazon Lex V1 리소스에 더 이상 액세스할 수 없습니다. Amazon Lex V2를 사용하는 경우 대신 [Amazon Lex V2 가이드를](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html) 참조하세요.

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

# 1단계: Lambda 함수 생성
<a name="gs2-prepare"></a>

먼저 피자 주문을 이행하는 Lambda 함수를 생성합니다. 다음 섹션에서 생성할 함수를 Amazon Lex 봇에서 지정합니다.

**Lambda 함수 생성하려면**



1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) AWS Lambda 콘솔을 엽니다.

1. **함수 생성**을 선택합니다.

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

   이 연습에서 제공된 사용자 지정 코드를 사용해 Lambda 함수를 생성할 것이므로 처음부터 함수 작성자를 선택합니다.

   다음 내용을 따르세요.

   1. 이름(`PizzaOrderProcessor`)을 입력합니다.

   1. **런타임**에서 최신 버전의 Node.js를 선택합니다.

   1. **역할**의 경우, **템플릿에서 새 역할 생성**을 선택합니다.

   1. 새 역할 이름(`PizzaOrderProcessorRole`)을 입력합니다.

   1. **함수 생성**을 선택합니다.

1. 함수 페이지에서 다음을 수행합니다.

   **함수 코드** 섹션에서 **코드 인라인 편집**을 선택한 후 다음의 Node.js 함수 코드를 복사하여 창에 붙여넣습니다.

   ```
   'use strict';
        
   // Close dialog with the customer, reporting fulfillmentState of Failed or Fulfilled ("Thanks, your pizza will arrive in 20 minutes")
   function close(sessionAttributes, fulfillmentState, message) {
       return {
           sessionAttributes,
           dialogAction: {
               type: 'Close',
               fulfillmentState,
               message,
           },
       };
   }
    
   // --------------- Events -----------------------
    
   function dispatch(intentRequest, callback) {
       console.log(`request received for userId=${intentRequest.userId}, intentName=${intentRequest.currentIntent.name}`);
       const sessionAttributes = intentRequest.sessionAttributes;
       const slots = intentRequest.currentIntent.slots;
       const crust = slots.crust;
       const size = slots.size;
       const pizzaKind = slots.pizzaKind;
       
       callback(close(sessionAttributes, 'Fulfilled',
       {'contentType': 'PlainText', 'content': `Okay, I have ordered your ${size} ${pizzaKind} pizza on ${crust} crust`}));
       
   }
    
   // --------------- Main handler -----------------------
    
   // Route the incoming request based on intent.
   // The JSON body of the request is provided in the event slot.
   export const handler = (event, context, callback) => {
       try {
           dispatch(event,
               (response) => {
                   callback(null, response);
               });
       } catch (err) {
           callback(err);
       }
   };
   ```

1. **저장**을 선택합니다.

## 샘플 이벤트 데이터를 사용하여 Lambda 함수 테스트
<a name="gs2-lambdafunction-test"></a>

콘솔에서 샘플 이벤트 데이터를 사용하여 Lambda 함수를 수동으로 호출해 해당 함수를 테스트합니다.

**Lambda 함수를 테스트하려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) AWS Lambda 콘솔을 엽니다.

1. **Lambda 함수** 페이지에서 Lambda 함수(`PizzaOrderProcessor).`를 선택합니다. 

1. 함수 페이지의 테스트 이벤트 목록에서 **테스트 이벤트 구성**을 선택합니다.

1. **테스트 이벤트 구성** 페이지에서 다음 작업을 수행하십시오.

   1. **새로운 테스트 이벤트 생성**을 선택하세요.

   1. **이벤트 이름** 필드에 이벤트 이름(`PizzaOrderProcessorTest`)을 입력합니다.

   1. 다음 Amazon Lex 이벤트를 창에 복사합니다.

      ```
      {
        "messageVersion": "1.0",
        "invocationSource": "FulfillmentCodeHook",
        "userId": "user-1",
        "sessionAttributes": {},
        "bot": {
          "name": "PizzaOrderingApp",
          "alias": "$LATEST",
          "version": "$LATEST"
        },
        "outputDialogMode": "Text",
        "currentIntent": {
          "name": "OrderPizza",
          "slots": {
            "size": "large",
            "pizzaKind": "meat",
            "crust": "thin"
          },
          "confirmationStatus": "None"
        }
      }
      ```

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

AWS Lambda 에서 테스트를 생성하고 함수 페이지로 돌아갑니다. **테스트**를 선택하면 Lambda가 Lambda 함수를 실행합니다.

결과 상자에서 **세부 정보**를 선택합니다. 콘솔이 **실행 결과** 창에 다음 출력을 표시합니다.

```
{
  "sessionAttributes": {},
  "dialogAction": {
    "type": "Close",
    "fulfillmentState": "Fulfilled",
    "message": {
      "contentType": "PlainText",
      "content": "Okay, I have ordered your large meat pizza on thin crust."
    }
}
```

## 다음 단계
<a name="gs2-next-step-create-bot"></a>

[2단계: 봇 생성](gs2-create-bot.md)