CLI 기반 Alexa 스킬 개발에서 ap-northeast-1 리전에서 스킬을 실행하는 단계

동기 부여



ask-cli 사용하면 Lambda의 배포 대상이 us-east-1 리전 고정이므로 ap-northeast-1 리전에 배포하고 싶습니다.

그 때문에 CLI 베이스로 스킬을 개발하는 경우, 배포하는 컴퍼넌트에 의해 이하와 같이 ,이 기사에서 그 절차를 설명합니다.



환경


  • ask-cli 1.5.1
  • Serverless Framework 1.32.0

  • 절차



    스킬 배포



    먼저 ask 에서 프로젝트를 만듭니다.
    $ ask new
    ? Please select the runtime Node.js V8
    ? List of templates you can choose Hello World
    ? Please type in your skill name:  hello-world
    Skill "hello-world" has been created based on the chosen template
    

    위의 예에서는 sls 라는 스킬명으로 디렉토리가 만들어져 거기에 스킬의 병아리가 작성된다.

    우선 먼저 스킬만을 배포한다.
    $ cd hello-world
    $ ask deploy -t skill
    

    배포가 성공하면 Skill ID가 표시되지만 이후 단계에서 필요하므로 메모해 둡니다(일단 ask new

    대화 모델 배포



    계속해서 대화 모델만 배포
    $ ask deploy -t model
    

    이 시점에서 Amazon Developer Console을 열면 hello-world라는 기술이 있는지 확인할 수 있다고 생각합니다.

    Lambda Function 배포



    그런 다음 Serverless Framework를 사용하여 Lambda Function을 배포합니다.
    .ask/config 디렉토리에 다음과 같은 내용으로 hello-world를 작성.custom/lambda 의 개소는 스킬의 배치시에 표시된 Skill ID 로 옮겨놓을 것.

    lambda/custom/serverless.yml
    service: hello-world
    
    provider:
      name: aws
      region: ap-northeast-1
      runtime: nodejs8.10
      memorySize: 128
    
    package:
      include:
        - node_modules/
    
    functions:
      main:
        handler: index.handler
        events:
          - alexaSkill: amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
            enabled: true
    
    serverless.yml 명령으로 Lambda Function을 배포합니다.
    $ sls deploy
    
     :
    
    Service Information
    service: hello-world
    stage: dev
    region: ap-northeast-1
     :
    

    결과 출력에서 ​​alexaSkill로 배포되었는지 확인

    기술 엔드포인트에 Lambda 엔드포인트 등록



    AWS 콘솔을 열어 배포된 Function의 ARN을 가져옵니다.


    sls를 편집기에서 편집하고 ap-northeast-1의 값을 Lambda의 ARN으로 다시 씁니다.

    skill.json
    {
      "manifest": {
        "publishingInformation": {
          "locales": {
            "en-US": {
              "summary": "Sample Short Description",
              "examplePhrases": [
                "Alexa open hello world",
                "hello",
                "help"
              ],
              "name": "hello-world",
              "description": "Sample Full Description"
            }
          },
          "isAvailableWorldwide": true,
          "testingInstructions": "Sample Testing Instructions.",
          "category": "KNOWLEDGE_AND_TRIVIA",
          "distributionCountries": []
        },
        "apis": {
          "custom": {
            "endpoint": {
              "uri": "arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxx:function:hello-world-dev-main"
            }
          }
        },
        "manifestVersion": "1.0"
      }
    }
    

    스킬에 엔드포인트를 반영하기 위해 스킬 배포
    $ ask deploy -t skill
    

    이를 위해 개발자 콘솔에서 기술 엔드포인트가 반영되는지 확인



    시뮬레이터로 동작 확인
    $ ask simulate -l 'en-US' -t 'hello world'
    

    성공적인 응답 JSON이 반환되는지 확인

    이제 기술 개발 작업을 CLI 기반으로 진행할 수 있습니다.

    사이고에게



    마지막으로 조금 자작 npm 패키지를 홍보.
    팟캐스트 지원 스킬을 최소 코딩으로 구현하기 위한 npm 패키지를 최근 출시했습니다.

    아직 개발중에 부족한 기능이라든지 많습니다만 사용해 봐 감상·요망 등 받을 수 있으면 기쁩니다.

    좋은 웹페이지 즐겨찾기