Alexa Skill에서 사용하는 Lambda 함수 (Node.js)를 빠지지 않고 "하나부터 작성"하는 방법

Alexa Skill에서 사용하는 Lambda 함수를 만들 때 '설계도' 템플릿을 편집하는 방법이 널리 소개됩니다. 다만, 템플릿의 Alexa SDK가 낡거나 다른 라이브러리를 사용할 필요가 있는 등으로, 「처음부터 작성」하고 싶은 경우가 있습니다. 이 섹션에서는 처음부터 작성하는 방법을 설명합니다. 이 방법을 적용하면 Alexa Skill뿐만 아니라 외부 라이브러리가 포함 된 Node.js의 Lambda 함수를 인라인 편집기에서 편집 할 수있는 상태로 만들 수 있습니다.

Node.js가 개발 환경에 설치되어 있다고 가정합니다.

Node.js 프로젝트 만들기



개발 환경에 적합한 디렉토리를 만듭니다.
$ mkdir SKILLDIR
$ cd SKILLDIR

다음 명령을 사용하여 package.json를 만듭니다.
$ npm init
(案内に従って各種プロパティを設定)
index.js 를 작성해, Alexa SDK의 README에서 소개되었습니다. 최소한의 코드와, 필수 요청 유형 를 받는 핸들러의 빈 구현을 넣습니다.

index.js
'use strict';

const Alexa = require('alexa-sdk');

exports.handler = function(event, context, callback) {
    const alexa = Alexa.handler(event, context, callback);
    alexa.appId = APP_ID // EDIT HERE
    alexa.registerHandlers(handlers);
    alexa.execute();
};

const handlers = {
    'LaunchRequest': function () {
        // EDIT HERE
    },
    'XXIntent' : function() {
        // EDIT HERE
    },
    'SessionEndedRequest': function () {
        // EDIT HERE
    },
};

다음 명령을 사용하여 최신 Alexa SDKnode_modules/로 다운로드하고 package.json에 참조를 추가합니다.
$ npm install --save alexa-sdk

(선택 사항) 앞으로 사용할 계획 라이브러리를 마찬가지로 추가합니다. (이하 axios의 예)
$ npm install --save axios

AWS SDK 삭제



이 시점에서 ZIP화하여 Lambda 콘솔에 업로드하면 Lambda 関数 「xxxx」 のデプロイパッケージが大きすぎて、インラインコード編集を有効にできません。라는 메시지가 표시되어 인라인 편집을 할 수 없게 됩니다.



이것은, Alexa SDK를 다운로드할 때에, 의존 라이브러리로서 AWS SDK 까지 node_modules/ 에 다운로드되어 ZIP의 사이즈가 커져 버리기 (위해)때문입니다.



이를 방지하려면 AWS SDK를 삭제합니다. Lambda 서버에는 이미 AWS SDK가 포함되어 있으므로 인라인 편집하는 경우 AWS SDK를 ZIP에 포함하지 않아도 됩니다.
$ npm uninstall aws-sdk

ZIP 만들기 및 Lambda에 업로드



ZIP로 압축합니다. 다음은 예입니다.
$ zip -r ../alexa-test.zip *

AWS의 Lambda 콘솔에서 함수를 "하나부터 생성"합니다.

함수 코드에서 コードエントリタイプ.ZIPファイルをアップロード로 변경하여 만든 ZIP 파일을 업로드합니다.



화면 오른쪽 상단의 保存 버튼을 누릅니다. 잘하면 인라인 편집기가 열립니다.



이 에디터로 APP_ID 의 부분을 편집하거나 각 핸들러를 정식으로 구현해 갑시다.

도서관 교체가 필요한 경우


  • 화면 상단의 アクション -> 関数のエクスポート 로 내보냅니다.
  • 내보낸 ZIP을 확장합니다.
  • 확장된 디렉토리에서 npm 명령을 사용하여 라이브러리를 교체합니다.
  • npm uninstall 에서 AWS SDK를 삭제합니다.
  • 다시 ZIP화하여 업로드합니다.

  • npm 명령을 실행하면 삭제한 AWS SDK가 다시 활성화되므로 반드시 ZIP화 직전에 AWS SDK를 삭제해야 합니다.

    좋은 웹페이지 즐겨찾기