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に公開されたスキルバックエンドなどが今後出た場合に簡単に利用することができるようになるかなと思います。
どれも一長一短だとは思いますので、用法用途にあった組み合わせ方で楽しんでください。