はじめに
ローカルPC上でNode.jsでAlexaスキルを開発する際に、必要に応じてパッケージを追加することがあります。
今回は、そのやり方を説明します。
例として、AlexaスキルからDynamoDBにデータ保存するために必要なパッケージであるask-sdk-dynamodb-persistence-adapter
パッケージをインストールします。
前提
- npmがインストール済み
- ローカルPC上にAlexaスキルのLambda部分がある
npmでのパッケージのインストール
DOSプロンプトやPowerShellなどのコマンドラインで、index.js
があるフォルダへ移動します。
そこには以下のように、node_modules
フォルダやpackage.json
ファイルがあり、もしかしたらpackage-lock.json
ファイルもあるかもしれません(画像はExploreのもの)。
それらのファイルやフォルダが存在するフォルダにコマンドライン上で移動してください。cd
コマンドで。
そこで、npm install
コマンドを使って、目的のパッケージをインストールします。
> npm install --save パッケージ名
今回のパッケージはask-sdk-dynamodb-persistence-adapter
というパッケージなので、以下のようになります。
> npm install --save ask-sdk-dynamodb-persistence-adapter
確認
インストールが完了するとnode_modules
フォルダ内にインストールしたパッケージのフォルダが作成されているのが確認できます。
また、package.json
を開いてみると、以下のように該当のパッケージの情報が追加されています。
{
"name": "hello-world",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"ask-sdk-core": "^2.0.0",
"ask-sdk-dynamodb-persistence-adapter": "^2.2.0",
"ask-sdk-model": "^1.0.0"
}
}
これでパッケージのインストールが完了し、スキルの実装の中で追加したパッケージ内のAPIを使用できるようになりました。
おわりに
ちなみに、ask-sdk-dynamodb-persistence-adapter
を追加しておくと、公式のトレーニング第4回のチュートリアルのように、DynamoDBにデータを保存することでセッションをまたいだやりとりを実現できます。
楽しくなってきましたね。
ここから追記
さて、ここまででAWS Lambdaに配置した関数からDynamoDB使えるぜ、と思ったらそうではありませんでした。
この関数のテストを行うと以下のようなエラーメッセージがでるのではないでしょうか。
でないのならば問題はありません。
これは、この関数に割り当てたロールにDynamoDBにテーブルを作る権限が無い、と怒られています。
ということで、DynamoDBへのアクセス権を持ったロールを作成して、この関数に割り当てます。
ロールの作成
lambda_basic_execution
の他に``を持るロールを作成します。
IAMで「ロールの作成」ボタンを押します。
次に、「このロールを使用するサービスを選択」と表示されるので、「Lambda」を選択して「次のステップ…」ボタンを押します。
まずは、「AWSLambdaBasicExecutionRole」選択します。チェックマークをつけます。
次に「AmazonDynamoDBFullAccess」を選択します。
(本当はもっとしっかり限定したほうがいいと思います)
以上2つのポリシーを選択したら、ページ右下の「次のステップ」ボタンを押します。
最後にこの新しいロールの名前を決めて(ここでは「lamda_and_dynamoDB_execution」とします)、ページ右下の「ロールの作成」ボタンを押します。
これでロールが作成されました。
それではAWS Lambdaに戻って、「実行ロール」の項目で先程の作成したロールを選択し、ページ右上の「保存」ボタンを押します。