Amazon AlexaAWS

Serverless FrameworkなどでデプロイしたLambdaをask-cliから利用する

この記事は一人Alexa Skills Kit for Node.js Advent Calendar 2017の24日目の記事です。 ask-cliでalexa-sdkのスキルをデプロイ・シュミレートするの最後で少し触 […]

広告ここから
広告ここまで

この記事は一人Alexa Skills Kit for Node.js Advent Calendar 2017の24日目の記事です。

ask-cliでalexa-sdkのスキルをデプロイ・シュミレートするの最後で少し触れたのですが、ask-cliではデプロイ済みのLambdaをターゲットにすることができます。

LambdaのARNを取得

まずはaws lambda list-functionsで指定したいLambdaのarnを調べましょう。

$ aws lambda list-functions | jq ".Functions[] | .FunctionArn"
"arn:aws:lambda:us-east-1:999999:function:alexa-kyoto-city-guid-v0-0-1-alexaCityGuide"
"arn:aws:lambda:us-east-1:999999:function:ask-custom-example-skill-test-hide-dev"
"arn:aws:lambda:us-east-1:999999:function:ask-custom-example-sample"

skill.jsonの変更

skillManifest.apis.customのデータを以下のように変更します。

変更前

"apis": {
      "custom": {
        "endpoint": {
          "sourceDir": "lambda/custom"
        }
      }
    }

変更後

"apis": {
      "custom": {
        "endpoint": {
          "uri": "arn:aws:lambda:us-east-1:999999:function:ask-custom-example-sample"
        },
        "regions": {
          "NA": {
            "endpoint": {
              "uri": "arn:aws:lambda:us-east-1:99999:function:ask-custom-example-sample"
            }
          }
        }
      }
    }

デプロイ

あとはデプロイするだけです。

$ ask deploy -p test
-------------------- Create Skill Project --------------------
Profile for the deployment: [test]
Skill Id: amzn1.ask.skill.XXXX-XXXX-XXXX-XXX
Skill deployment finished.
Model deployment finished.
[Warning]: Lambda deployment skipped, since AWS credentialsfor profile: [test] hasn't been set up yet.

もしCannot find valid lambda function with the given name, nor find sourceDir as codebase path to create lambda function.が出てエラーになる場合は、ask initでAWS-CLIのプロファイルを指定していないプロファイルを新しく作成してみてください。

ask-cliかServerless Frameworkかそれとも

ask-cliだけにすることで手軽にLambdaのデプロイができます。
ただしServerless FrameworkでLambdaを管理することで、LambdaのIAMの設定や各種プラグインでよしなにすることができるなどのメリットを享受することができます。

そしてCloudFormationもといSAMを使った場合は、AWS Serverless Application Repositoryに公開されたスキルバックエンドなどが今後出た場合に簡単に利用することができるようになるかなと思います。

どれも一長一短だとは思いますので、用法用途にあった組み合わせ方で楽しんでください。

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts