はじめに
こちら でお試しで作った、猫と犬の鳴き声を返す Alexa スキル「なきごえなあに」を、AWS を直接使って作ってみる。
環境
- macOS Mojave (10.14.3)
- Safari 12.0.3
- Anaconda (Python 3.6.8)
- Node.js 8.12.0
- Amazon Echo Dot 第3世代
MFA 認証用
Amazon 開発者アカウントは作成済み。
AWS アカウントの作成
AWS アカウントの作成
- AWS アカウント作成の流れ に従う。
- [AWS を今すぐ始める] をクリック。以下を入力。
- Eメールアドレス
- パスワード
- パスワード (もう一度)
- AWS アカウント名 (半角アルファベット、あとで変更可)
- アカウントの種類で "パーソナル" を選び、フルネーム、電話番号、住所などをアルファベット・半角数字で入力。
- クレジットカードの情報を入力。検証コードの入力で、SMS を選び、携帯電話番号を設定すると、携帯電話に 4 桁の数字が送られて来るので、それを入力する。
MFA 認証の設定
- iPhone にアプリ Google Authenticator をインストールしておく。
- IAM のページを開く。
- 「ルートアカウントの MFA を有効化」を選択。[MFA の管理] をクリック。
- 「多要素認証 (MFA)」の [MFA の有効化] をクリック。
- 「仮想 MFA デバイス」を選択。
- QR コードが表示されるので、Google Authenticator で読み込む。スマホに何かあったときのために、QR コードおよびシークレットキーを安全な場所に保存しておく。
- MFA コードを 2 つ入力するようになっているが、Google Authenticator に数字が 6 桁表示され、時間によって変わるので、それを 2 つ入れればよい。
IAM ユーザーの作成
ルートユーザーを日常的な利用に使うのは推奨されていないので、制限のついた IAM ユーザーというものを作る。
- IAM のページ の「個々の IAM ユーザーの作成」を選び、[ユーザーの管理] をクリック。
- [ユーザーを追加] をクリック。
- ユーザー名を設定。「AWS マネジメントコンソールへのアクセス」を選択。「コンソールのパスワード」で「カスタムパスワード」を選び、パスワードを設定。「パスワードのリセットが必要」のチェックは外しておく。
- [次のステップ: アクセス権限] をクリック。
- [グループの作成] をクリック。
- グループ名を適当に ("users" とか) 設定。ポリシーは必要なものをチェックして、[グループの作成]。フルアクセス (AdministratorAccess) は怖いので、使いながらポリシーを設定したらよいかも。
- [次のステップ: タグ] をクリック。
- タグの追加は無視して、[次のステップ: 確認]。
- 内容を確認して [ユーザーの作成] をクリック。
IAM のページ の上にある [IAM ユーザーのサインインリンク] のアドレスからログインする。
IAM パスワードポリシーの適用
- IAM のページ の「IAM パスワードポリシーの適用」を選び、[パスワードポリシーの管理] をクリック。
- パスワードのポリシーを好みのものに設定。[ユーザーにパスワードの変更を許可] にチェックがついていることを確認。
- [パスワードポリシーの適用] をクリック。
パスワードは [マイセキュリティ資格情報] で変えられる。
参考
Alexa スキルの作成
IAM ユーザーの権限の設定
ここからは IAM ユーザーで作業するが、権限を与える必要がある。IAM ユーザーのグループの "AWSLambdaFullAccess" のポリシーをアタッチ。インラインポリシーのカスタムポリシーで以下のように設定する。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:CreateRole",
"iam:CreatePolicy",
"iam:AttachRolePolicy"
],
"Resource": "*"
}
]
}
Alexa スキルの作成
- Alexa 開発者コンソールで「なきごえなあに」スキルを作成。[独自のプロビジョニング] を選択。
- インテントなどを設定 (JSON をコピペするとはやい)、ビルド。
Lambda 関数を作成
- AWS マネジメントコンソール にログイン。
- Lambda を検索。
- 右上のリージョンで "東京" を選択。
- [-から作成] を選択。
- [関数名] に "Nakigoe" を設定。
- [アクセス権限] の [実行ロール] で "基本的な Lambda アクセス権限で新しいロールを作成" を選択。
- [関数の作成] をクリック。
- 関数が作成される。[トリガーの追加] で "Alexa Skills Kit" をダブルクリック。下の [スキル ID] のところを表示。
- Alexa 開発者コンソールのスキル一覧で、最初に作成したスキルの [スキル ID の表示] をクリックし、ID をコピー。
- Lambda の [スキル ID] にコピー。
- [追加] をクリック。
- [保存] をクリック。
Lambda 関数の中身を作成
コマンドラインで作業。
Node.js を Anaconda でインストールする。
$ conda install nodejs=8.12.0
Lambda のパッケージを作る。
$ mkdir nakigoe
$ cd nakigoe
$ npm init
$ npm install --save ask-sdk-core
$ npm install --save ask-sdk-model
index.js を用意して、zip 圧縮。
$ zip -r lambda.zip index.js package.json node_modules
- Lambda マネジメントコンソールで "Nakigoe" をクリック。
- [コードエントリタイプ] で ".zip ファイルをアップロード" を選択し、lambda.zip をアップロード。
- [保存] をクリック。
Alexa スキルと Lambda 関数の関連付け
- Lambda マネジメントコンソールの画面の右上の "ARN" の右にあるアイコンをクリックすると、文字列がコピーされる。
- Alexa 開発者コンソールの [エンドポイント] で [AWS Lambda の ARN] を選択。
- [デフォルトの地域] に ARN をコピーする。
- [エンドポイントを保存] をクリック。
- Alexa スキルをテストする。
デバッグ
Lambda (Node.js) で console.log() で書き出したものは CloudWatch の [ログ] で確認できるので、これである程度デバッグできる。
|