LoginSignup
1
0

More than 5 years have passed since last update.

Alexaスキルの開発でパッケージを追加する

Last updated at Posted at 2018-11-05

はじめに

ローカル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コマンドで。

image.png

そこで、npm installコマンドを使って、目的のパッケージをインストールします。

> npm install --save パッケージ名

今回のパッケージはask-sdk-dynamodb-persistence-adapterというパッケージなので、以下のようになります。

> npm install --save ask-sdk-dynamodb-persistence-adapter

すると、こんな感じでパッケージのインストールが始まります。
lakdjflkasjflkas.png

確認

インストールが完了するとnode_modulesフォルダ内にインストールしたパッケージのフォルダが作成されているのが確認できます。
また、package.jsonを開いてみると、以下のように該当のパッケージの情報が追加されています。

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使えるぜ、と思ったらそうではありませんでした。
この関数のテストを行うと以下のようなエラーメッセージがでるのではないでしょうか。
でないのならば問題はありません。

sldkjfaslkjdfalsdkfj.png

これは、この関数に割り当てたロールにDynamoDBにテーブルを作る権限が無い、と怒られています。

ということで、DynamoDBへのアクセス権を持ったロールを作成して、この関数に割り当てます。

ロールの作成

lambda_basic_executionの他に``を持るロールを作成します。
IAMで「ロールの作成」ボタンを押します。
image.png

次に、「このロールを使用するサービスを選択」と表示されるので、「Lambda」を選択して「次のステップ…」ボタンを押します。

image.png

まずは、「AWSLambdaBasicExecutionRole」選択します。チェックマークをつけます。
image.png

次に「AmazonDynamoDBFullAccess」を選択します。
(本当はもっとしっかり限定したほうがいいと思います)

image.png

以上2つのポリシーを選択したら、ページ右下の「次のステップ」ボタンを押します。

最後にこの新しいロールの名前を決めて(ここでは「lamda_and_dynamoDB_execution」とします)、ページ右下の「ロールの作成」ボタンを押します。
これでロールが作成されました。
image.png

それではAWS Lambdaに戻って、「実行ロール」の項目で先程の作成したロールを選択し、ページ右上の「保存」ボタンを押します。
image.png

再びテストを行うと、DynamoDBのアクセス権限が割り当てられているので以下のように正常に動作します。
image.png

1
0
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
1
0