LoginSignup
2
2

More than 3 years have passed since last update.

Alexa Lambda関数を「一から作成」する方法

Last updated at Posted at 2019-04-25

Alexa SkillのLambda関数の作成は、「設計図」のテンプレートから作成する方法が、Alexa道場では紹介されています。
でも、この場合、もともとの設計図のサンプルコードが入っており、それを編集していくのは面倒だったり、何より、関数名の一部は変更できず、関数名が長く気持ちが悪いです。
そこで、「一から作成」を使って、ローカル環境で作成したプロジェクトをアップロードする方法を紹介します。
どちらかというと備忘録です。

Node.jsプロジェクトの作成とindex.jsの作成

まず、ローカルドライブで、プロジェクトを作成し、package.jsonを作成します。

$ mkdir SKILL_DIRECTORY
$ cd SKILL_DIRECTORY
$ npm init

npm initでは、package nameなどを聞かれますが、とりあえずそのまま[Enter]します。

続いて、Alexaのモジュールを追加します。

$ npm install ask-sdk

すると、node_modulesというフォルダが作成され、ここにask-sdkのモジュールが以下のように追加されます。

フォルダ
.bin
ask-sdk
ask-sdk-core
ask-sdk-dynamodb-persistence-adapter
ask-sdk-model
ask-sdk-runtime
aws-sdk
base64-js
buffer
...

ここで、不要と思われるモジュールのフォルダは削除します。必要なモジュールのフォルダのみにします。
aws-sdkは、Lamdba上に存在するため削除します。
その他base64-jsなどaskで始まらないモジュールのフォルダを削除します。
askで始まるモジュールは、そのフォルダにpackage.jsonファイルが存在します。
このファイルを開いて_whereを探すとそこには、ローカルフォルダの位置が記載されています。リポジトリで使用するようですが、ローカルフォルダがわかるのが嫌なら削除してしまいましょう。
また、node_modulesと同じフォルダには、package-lock.jsonが作成されます。
ここには、インストールしたパッケージのリストと他のパッケージとの依存関係が記載されています。上記で削除したbase64-jsなどの記載のブロックは、記載を削除します。
記載を変えなくても、ここで説明する「一から作成」ではなんら影響がないのですが、ASK CLIでdeployする(アップロードする)ようになると、このpackage.jsonに記載があるファイルが、ローカルPC上に存在しない場合、自動的にサーバからダウンロードして、それを一緒にdeployするようなので、消しておいたほうが無難です。

続いて、基本となるindex.jsを作成します。このファイルが呼び出しファイルになります。自分でなんらかデフォルトのファイルを用意します。これは、SKILL_DIRECTORYの直下に置きます。

その後、このindex.jsnode_modulesフォルダをzipで圧縮します。

zipファイルのLamdbaへのアップロード

AWSのLambdaの関数から「関数の作成」の「一から作成」を選び、関数名を自由につけて、「関数の作成」ボタンを押下します。
一から作成.jpg

続いて、関数コードのコードエントリタイプを「.zipファイルをアップロード」を選択し、zipファイルをアップロードします。

これであとは、エンドポイントなどを設定すれば、Alexa developer consoleから作成した関数を呼び出すことができます。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2