ASK CLI v2では”Lambdaソースだけデプロイ”のコマンドがない
ASK CLI v2では Lambdaソースだけを対象にしたask deployコマンドがないため、特定のスタイルで開発する開発者にとってはデプロイ時に戸惑う場面が出てくるようになりました。
困る場面が出てくる可能性がある開発スタイル
“特定のスタイル”というのは以下のような場合です。
- スキルのバックグラウンドプログラムを(Alexa-hostedではなく)自身のAWSアカウント上のLambdaにデプロイしている。
また、LambdaへのデプロイはASK CLIのask deployコマンドを使用している。 - スキルマニフェストや対話モデルは開発者コンソールで編集している
具体的な”困る場面”
上記のような開発スタイルの場合、Lambda処理は開発者のローカル環境、スキルマニフェストや対話モデルは開発者コンソールと言ったように更新を実施している場所が完全に固まっているうちは良いのですが、普段と違う場所で更新が発生した場合、うまくマージしないとデグレが発生する可能性が出てきます。マージを行うためには開発者コンソール側で更新した内容が反映されたスキルマニフェストファイル( skill.json )や対話モデルファイルを自身のローカル環境に取得する必要があります。こちらを実現するためのASK CLI v2用コマンドが存在します。
ASK CLI v2の開発者コンソール設定値取得関連のコマンド
スキルマニフェストを取得する
スキルマニフェストは、スキルに関わる基本的な情報となります。ask cliによって取得する場合にskill.jsonに相当するもので、スキルのエンドポイント、APL対応設定などのインターフェース情報、対応言語やスキルの説明文などの情報です。
ASK CLI v2で最新のスキルマニフェストを取得するコマンドは以下となります。
ask smapi get-skill-manifest -s {skill_id} -g development
{skill_id}の部分には、開発者コンソールで取得したスキルID文字列( “amzn1.ask.skill.~”形式の文字列 )を入力します。
このままだと標準出力に表示されるだけなので、以下のようにしてskill.jsonに書き込むようにするのが良いかと思います。
ask smapi get-skill-manifest -s {skill_id} -g development > skill.json
対話モデルを取得する
サンプル発話等の対話モデル情報はASK CLI v2に沿ったフォルダ構成だと、{スキルフォルダ} > skill-package > interactionModels > custom 配下に {ロケール名}.json ( 例: ja-JP.json )の名称で配置されます。
開発者コンソール側で登録・更新している対話モデルを取得するコマンドは以下となります。
ask smapi get-interaction-model -s {skill_id} -g development -l {locale}
こちらも結果をファイル出力し、上記の対話モデルファイルの配置場所に保存しておくと良いです。
例えば、ロケールが”ja-JP”であれば以下のような感じです。
ask smapi get-interaction-model -s {skill_id} -g development -l ja-JP > ja-JP.json
まとめ
私を含め、スキルマニフェストや対話モデルは開発者コンソール、Lambda処理は開発者ローカル環境、というように開発する場所を分けている開発者の方は結構いると思います。
ローカル環境のスキルマニフェストや対話モデルファイルが古いままだと、どこかのタイミングでデグレが発生する危険性が出てくるので、定期的に上記コマンドを実行し、情報を同期しておくのと良いと思います。
ASK CLIは情報が少ない状況なので、公式のリファレンスを確認し、いろいろ試していくことで理解を深めていく必要があるのかなと思います。