?
サポート

CLIのインストールと使用方法

ASKコマンドラインインターフェース(ask-cli)は、Alexaスキルおよび関連するAWS Lambda関数を管理するためのツールです。

前提条件:

  • Amazon開発者アカウント
  • node.jsバージョン4.0以降、およびnode.jsとともにインストールされるnpm (Node Package Manager)node.jsのバージョンを確認するには、コマンドラインプロンプトで次のように入力します。

    $ node --version

    node.jsのインストールやバージョンの更新を行うには、次のいずれかのインストーラーを使用します。

  • AWSアカウントの資格情報。ask-cliツールは、次の場所にある資格情報ファイルから、それらの資格情報にアクセスします。

    * Linux/Mac: ~/.aws/credentials 
    * Windows:  %USERPROFILE%/.aws/credentials 
    

    資格情報をセットアップするには、AWS CLIツールをインストールするか、手動で構成します。同じファイル内に複数の資格情報のセットを保持できますが、ask-cliツールが使用するのはデフォルトの資格情報だけです。資格情報ファイルの形式の例を次に示します。

[default]
aws_access_key_id = ACCESS_KEY
aws_secret_access_key = SECRET_KEY

ask-cliが使用するAWSプロフィールを任意でオーバーライドできます。その場合には、AWS_PROFILE環境変数をデフォルト以外のAWSプロフィール名に設定します。

詳細については、AWS SDKでの資格情報を管理するための新たな標準方法を参照してください。

インストールと初期設定

Alexa Skill Management CLIをインストールするには、次の手順に従ってください。

  1. GitHubのask-cliリポジトリにあるコードをクローン作成またはダウンロードします。
  2. ダウンロードディレクトリ(デフォルトはask-cli)に移動し、次のnpmグローバルインストールコマンドを実行します。

    $ npm install -g

    Linuxを使用している場合、sudoが必要になる場合があります。

    $ sudo npm install -g

  3. 初めてask-cliを使用する場合には、initコマンドを呼び出して、Amazon開発者アカウント資格情報でツールを初期設定する必要があります。詳細については、initコマンドを参照してください。

    $ ask init

コマンド

ask-cliでは、2種類のコマンドで開発者アカウントに関連付けられているスキルを操作します。

  • 1つのコマンドで複数のアクションを実行できる上位コマンド。スキル開発に慣れていない場合や、API呼び出しを細かく制御する必要がない場合に、入門用として最適なコマンドです。newdeployおよびcloneは上位コマンドです。
  • Alexaスキルの各部を制御するために使用できる下位コマンド。すでにアカウントに追加しているスキルの一部を変更する場合に最適です。 api およびlambdaは下位コマンドです。

$ ask <command> <subcommand> [options]

ask-cliコマンドを使用すると、以下のタスクを実行できます。

タスク コマンドまたはオプション
ツールまたは特定のコマンドのヘルプを取得します。 ask [command] -h | --help
バージョン番号を確認します。 ask -V | --version
ask-cliツールをAmazon開発者アカウント資格情報で初期設定します。スキル操作を実行する前にこのコマンドを実行して、開発者アカウント資格情報でツールを初期設定します。このコマンドはポート9090を使用します。このポートが使用中の場合、エラーが表示されます。 ask init
ご使用のコンピューターに新しいAlexaスキルプロジェクトを作成します。その際、最小限の変更でデプロイするために必要なフォルダーとファイルも作成します。 ask new
開発者アカウントにスキルをデプロイします。任意で、AWS Lambdaにコードをデプロイすることもできます。 ask deploy
コンピューター上の既存のAlexaスキルプロジェクトのクローンを作成します。 ask clone
AWS Lambda関数コードを作成および更新します。 ask lambda
開発者アカウントに関連付けられているAlexaスキルの詳細を管理します。Alexaスキルの一部を作成または更新する場合には、これらのコマンドを使用します。 ask api [subcommand]

initコマンド

Amazon開発者アカウントに関連付けられているスキルをCLIで作成および変更するための認証を設定するには、initコマンドを実行する必要があります。

init 呼び出し形式:

$ ask init [--no-browser]

ブラウザウィンドウが開き、サインイン画面が表示されます。

  1. Amazon開発者アカウント資格情報でサインインします。
  2. 初めてask-cliを初期設定する場合は、ask-cliツールにパーミッションを付与します。
  3. 開発者アカウントに正常にサインインし、ask-cliにパーミッションを付与した後、ブラウザを閉じて、コマンドプロンプトに戻ります。
  • 1つのベンダーIDをアカウントに関連付けている場合、そのIDでask-cliを使用するよう構成されます。
  • 403 Forbiddenエラーが表示される場合、Skill Management APIを使用する権限がありません。Amazonにお問い合わせください。
  • 開発者アカウントに複数のベンダーIDが関連付けられている場合、ベンダーを選択するようプロンプトが表示されます。これは、組織のAlexaスキルを管理する場合に生じます。特定の組織のベンダーIDを確認する場合、開発者アカウントでdeveloper.amazon.comにサインインします。右上隅にあるドロップダウンでスキルを管理する組織を選択します。https://developer.amazon.com/mycid.htmlに移動し、その組織のベンダーIDを表示します。

    $ Choose the vendor ID for the skills you want to manage
    1) Amazon: M123456789
    2) Woot: M987654321
    
  • エラーが表示される場合Token refresh error、認証トークンが有効期限切れになっており、ツールはトークンを更新できません。インターネット接続を確認してから、やり直してください。

ask-cliが正常に初期設定されたことを表す「プロフィールベンダーIDが更新されました」という出力が表示されます。ask-cliに関連付けられているベンダーは以下の場所で確認できます。

  • Linux/Mac: ~/.ask/cli_config
  • Windows: %USERPROFILE%/.ask/cli_config

オプション:

--no-browser
任意。同じ開発環境でブラウザを開くことなく、ask-cliを初期設定できます。または、コンソールに表示されるURLをコピーし、リンクを開くこともできます。この方法の場合には、Amazonのログインページが表示されます。サインインし、ターミナルに戻ってAuthcodeコードをコピーすると、ask-cliを正常に初期設定できます。
この機能の目的は、コンソール専用環境でask-cliを使用する必要がある開発者に便利な初期設定ワークフローを提供することです。

注: 管理中のスキルの所属先組織を変更するには、もう一度$ ask initコマンドを実行し、別のベンダーIDを選択します。

newコマンド

現在のディレクトリに新しいスキルプロジェクトを作成します。最小限の変更でスキルをデプロイするために必要なディレクトリとファイルを作成するには、newコマンドを使用します。

スキルの親ディレクトリには指定したスキル名と同じ名前が付けられます。親ディレクトリには、ask-cliでスキルを管理するために必要なその他のファイルとディレクトリが入ります。en-USロケールのカスタムスキル用に作成されるディレクトリとファイルの例を以下に示します。

-skillName -.ask -config -lambda -custom -index.js -models - en-US.json - skill.json

スキルは、$HOME/.ask/cli_configファイルに含まれるデフォルトのプロフィール情報に基づいて作成されます。

new 呼び出し形式:

ask new -n|--skill-name <name>

オプション:

--skill-name、-n
必須。スキルプロジェクトに割り当てられるスキル名。名前には、文字(aからz)、数字(0から9)、アンダースコア(_)、ダッシュ(-)を使用できます。

deployコマンド

スキルプロジェクトを開発者アカウントにデプロイします。任意で、Lambdaコードをデプロイします。たとえば、カスタムスキルの場合、スキル情報ファイル(skill.json)、対話モデルファイル(models/{locale}.json)、AWS Lambda関数コードファイル(lambda/custom/*)がデプロイされます。スマートホームスキルの場合、スキル情報ファイル(skill.json)とコードファイル(lambda/smarthome/*)がデプロイされます。フラッシュニューススキルの場合、スキル情報のみがデプロイされます。

初めてデプロイするスキルでは、ask-cliによってという新しいスキルと新しいLambda関数ask-Skill Type-Skill Nameが作成されます。Lambda関数は、ask-lambda-skill nameという名前のIAMロールで作成され、基本実行ポリシーに接続されます。ロールを作成する許可がAWSユーザーアカウントに与えられていることを確認してください。許可がないと、この手順は失敗します。スキル構成ファイル(.ask/config.json)に、新たに作成されたスキルIDが書き込まれます。このスキルがすでに存在する場合、ask-cliによって既存のスキルとLambda関数リソースが更新されます。cloneコマンドを使用した場合、既存のスキルを上書きする前にプロンプトが表示されます。

注: ask deployコマンドがサポートしているデプロイは、スキルタイプ(カスタムまたはスマートホーム)ごとに1つのコードベースのみです。たとえば、[skill.json](skill-schemas)で定義されているカスタムスキルにリージョンのAWS Lambdaエンドポイントが複数指定されている場合、ask deployによって、それらのエンドポイントにlambda/customディレクトリの内容がデプロイされます。1つリージョンに対して複数のコードベースを使用すると差異が生じて保守が難しくなることがあるため、ローカライズ動作は単一のコードベースで実行時に解決することをお勧めします。

deploy 呼び出し形式:

ask deploy [--wait] [--target <target>]

オプション:

--wait
任意。デプロイ時に選択と動作が同期する機能を開発者に提供します。このフラグを設定すると、デプロイコマンドは、処理が終了するまで実行を続けます。
--target、-t
任意。targetは、lamdaコードをデプロイする対象が、スキル、スキルプロジェクト、その両方のいずれかであるかを示します。targetに指定できる値はalllambdaskillです。何も指定しないと、デフォルトのターゲットであるallが使用されます。

cloneコマンド

既存のスキルのクローンを作成して、スキルプロジェクトを作成します。使用目的は最新のデプロイ済みプロジェクトから新しいプロジェクトをセットアップすることであり、おそらくこのプロジェクトを更新または変更して使用することになります。

注: クローン作成するスキルと同名のスキルプロジェクトディレクトリが既存の場合、そのディレクトリは上書きされます。注: ask deployと同様、ask cloneの場合もクローン作成がサポートされているのは1つのスキルタイプに対して1つのLambdaコードベースのみです。たとえば、NAエンドポイントとEUエンドポイントの両方がスキルに接続されている場合、NA Lambda関数のみがクローン作成されます。

clone 呼び出し形式:

$ ask clone <-s|--skill-id <skillId> [--stage <stage>]

オプション:

--skill-id、-s
ターゲットスキルのスキルID。形式は、amzn1.ask.skill.12345678-1234-1234-123456789123でなければなりません。
--stage
スキルのステージ。有効な値は、developmentcertificationliveのいずれかです。指定しない場合、ステージはdevelopmentに設定されます。

apiコマンド

apiコマンドでは、開発者アカウントに関連付けられているスキルを作成したり、変更したりするための、多数のサブコマンドを使用できます。これらのサブコマンドを使用して、スキル、対話モデル、アカウントリンク情報を作成および更新したり、スキル認証プロセスを開始したりできます。

対話モデルの詳細については、対話モデルを参照してください。

api 呼び出し形式:

`$ ask api

サブコマンド

タスク サブコマンド
新しいスキルを作成します create-skill
スキルを取得します get-skill
スキル構成詳細を更新します update-skill
スキルの対話モデルを取得します get-model
スキルの新たな対話モデルを更新します update-model
対話モデルのビルドステータスを取得します get-build-status
対話モデルに関連付けられているETagを取得します head-model
開発者アカウントに関連付けられているスキルのアカウントリンク構成情報を追加します create-account-linking
スキルのアカウントリンク構成情報を取得します get-account-linking
スキルの認証を申請します submit
認証プロセスにあるスキルを取り消します withdraw
開発者アカウントに関連付けられているベンダーIDを取得します list-vendors

create-skillサブコマンド

指定のスキルスキーマ(skill.jsonファイル)に基づき、開発者アカウントに関連付けられたスキルを作成します。スキルIDとスキルステータスを返します。

create-skill 呼び出し形式:

$ ask api create-skill -f|--file <fileName>

オプション:

--file、-f
必須。skillName.jsonファイルへのファイルパス。絶対パスと相対パスのどちらでも構いません。

get-skillサブコマンド

指定したスキルIDを持つスキルのスキーマをターミナルに出力します。任意で、次に示すように>演算子を使用して、この出力をファイルにリダイレクトできます。

$ ask api get-skill -s {skill_id} > skill.json

get-skill 呼び出し形式:

$ ask api get-skill -s|--skill-id <skillId> [--stage <stage>]

オプション:

--skill-id、-s
必須。取得するスキルのスキルID。形式は、amzn1.ask.skill.12345678-1234-1234-123456789123でなければなりません。
--stage
任意。指定した開発ステージのスキルを取得します。指定しない場合、開発ステージを取得します。</code>。

update-skillサブコマンド

指定したスキルを、--fileオプションで指定したスキルスキーマで更新します。

update-skill 呼び出し形式:

$ ask api update-skill -s|--skill-id <skillId> -f |--file <fileName>

オプション:

--skill-id、-s
必須。更新するスキルのスキルID。形式は、amzn1.ask.skill.12345678-1234-1234-123456789123でなければなりません。
--file、-f
必須。skillName.jsonファイルへのファイルパス。絶対パスと相対パスのどちらでも構いません。

get-modelサブコマンド

指定したスキルとロケールを持つスキルのモデルスキーマを取得します。任意で、次に示すように>演算子を使用して、この出力をファイルにリダイレクトできます。

$ ask api get-model -s {skill_id} -l {locale} > model.json

get-model 呼び出し形式:

$ ask api get-model -s|--skill-id <skillId> -l|--locale <locale>

オプション:

--skill-id、-s
必須。ターゲットモデルのスキルID。形式は、amzn1.ask.skill.12345678-1234-1234-123456789123でなければなりません。
--locale、-l
必須。ターゲットモデルのロケール。有効な値は、en-USen-GBde-DEのいずれかです。指定しない場合、ロケールを入力するよう求めるプロンプトが表示されます。

update-modelサブコマンド

指定したスキルとロケールに対して、指定した対話モデルスキーマを設定できるようにします。

update-model 呼び出し形式:

$ ask api update-model -s|--skill-id <skillId> -f | --file <fileName> -l|--locale <locale>

オプション:

--skill-id、-s
必須。形式は、amzn1.ask.skill.12345678-1234-1234-123456789123でなければなりません。
--file、-f
必須。models/{locale}.jsonファイルのファイルパス。絶対パスと相対パスのどちらでも構いません。
--locale、-l
必須。ターゲットモデルのロケール。有効な値は、en-USen-GBde-DEのいずれかです。指定しない場合、ロケールを入力するよう求めるプロンプトが表示されます。

get-build-statusサブコマンド

指定のモデルのビルドステータスを取得します。

get-build-status 呼び出し形式:

$ ask api get-build-status -s|--skill-id <skillId> -l|--locale <locale>

--skill-id、-s
必須。ステータスの確認対象のスキルID。形式は、amzn1.ask.skill.12345678-1234-1234-123456789123でなければなりません。
--locale、-l
必須。ターゲットモデルのロケール。有効な値は、en-USen-GBde-DEのいずれかです。指定しない場合、ロケールを入力するよう求めるプロンプトが表示されます。

head-modelサブコマンド

指定したスキルとロケールを持つスキルのモデルのETagを取得できるようにします。Etagはリソースバージョンの一意のIDであり、操作を実行する前にモデルが変更されていないことを検証できます。

head-model 呼び出し形式:

$ ask api head-model -s|--skill-id <skillId> -l|--locale <locale>

オプション:

--skill-id、-s
必須。ターゲットモデルのスキルID。形式は、amzn1.ask.skill.12345678-1234-1234-123456789123でなければなりません。
--locale、-l
ターゲットモデルの必須ロケール。有効な値は、en-USen-GBde-DEのいずれかです。指定しない場合、ロケールを入力するよう求めるプロンプトが表示されます。

create-account-linkingサブコマンド

指定したスキルIDのアカウントリンク情報の詳細を追加します。

create-account-linkingを呼び出すと、以下の値の入力を求めるプロンプトが表示されます。これらの値の詳細については、Alexaユーザーとあなたのシステムでのユーザーを関連付けるを参照してください。

  • 認可URL
  • クライアントID
  • スコープ(カンマ区切りリスト)
  • ドメイン(カンマ区切りリスト)
  • 認可グラントタイプ。矢印キーでIMPLICITまたは を選択します。 AUTH_CODE
  • AUTH_CODEを選択する場合、追加情報を入力します。
    • アクセストークンURI
    • クライアントシークレット
    • クライアント認証スキーム: HTTP_BASIC または REQUEST_BODY_CREDENTIALS

アカウントリンク情報は、機密性があるため、コンピューターには格納されません。

create-account-linking 呼び出し形式:

$ ask api create-account-linking [-s|--skill-id <skillId>]

オプション:

-skill-id、-s
必須。アカウントリンク情報を追加するスキルのスキルID。形式は、amzn1.ask.skill.12345678-1234-1234-123456789123でなければなりません。

get-account-linkingサブコマンド

アカウントリンク構成の詳細を取得し、コンソールに出力します。セキュリティ上の理由により、この情報はコンピューターに格納しないでください。

get-account-linking 呼び出し形式:

$ ask api get-account-linking -s|--skill-id <skillId>

オプション:

--skill-id、-s
必須。アカウントリンク情報を取得するスキルのスキルID。これは、次の形式でなければなりません。 amzn1.ask.skill.12345678-1234-1234-123456789123

submitサブコマンド

スキルの認証を申請できます。

submit 呼び出し形式:

$ ask api submit -s|--skill-id <skillId>

オプション:

--skill-id、-s
ターゲットスキルのスキルID。形式は、amzn1.ask.skill.12345678-1234-1234-123456789123でなければなりません。

withdrawサブコマンド

認証プロセスにあるスキルを取り消せるようにします。取り消しの理由を示すよう求められます。以下から選択します。

  • テスト用スキルであるため
  • さらに機能を追加中であるため
  • スキルに問題があるため
  • 認証フィードバックをまだ受け取っていないため
  • スキルをすぐに公開しないため
  • その他

「その他」を選択すると、取り消しの詳細情報を入力することができます。

withdraw 呼び出し形式:

$ ask api withdraw -s|--skill-id <skillId>

オプション:

--skill-id、-s
ターゲットスキルのスキルID。形式は、amzn1.ask.skill.12345678-1234-1234-123456789123でなければなりません。

list-vendorsサブコマンド

開発者アカウントに関連付けられているベンダーIDを取得します。

list-vendors 呼び出し形式:

$ ask api list-vendors

出力サンプル:

[
  {
    "id": "MYVENDORID1234567",
    "name": "Amazon",
    "roles": [
      "ROLE_ADMINISTRATOR"
    ]
  }
]

lambdaコマンド

Lambdaコマンドを使用すると、AWS Lambda関数のコードを取得および投稿できます。

lambda 呼び出し形式:

$ ask lambda <subcommand> [-f|--function <functionName>] [other options]

サブコマンド

タスク サブコマンド
既存のLambda関数をダウンロードします download
既存のLambda関数をアップロードします upload
Lambda関数のCloudwatchログを表示します log

downloadサブコマンド

指定したLambda関数のコードをダウンロードします。任意で宛先を指定できます。

download 呼び出し形式:

$ ask lambda download [-f|--function <functionName>] [-d|--dest <destPath>]

オプション:

--function、-f
任意。Lambda関数の名前。このオプションを設定せずにdownload操作を実行すると、構成済みアカウントのLambda関数のリストが表示されます。番号付きリストからいずれかを選択できます。
--dest、-d
任意。Lambda関数のダウンロード宛先を指定します。設定しないと、現在の作業ディレクトリにLambdaがダウンロードされます。

uploadサブコマンド

現在のディレクトリまたは指定したディレクトリのファイルを、指定したLambda関数にアップロードします。

upload 呼び出し形式:

$ ask lambda upload [-f|--function <functionName>] [-s|--src <sourcePath>]

オプション:

--function、-f
必須。ターゲットのLambda関数名を指定します。
--src、-s
任意。アップロード元のディレクトリを指定します。指定しないと、現在の作業ディレクトリの内容がアップロードされます。

logサブコマンド

指定したLambda関数のCloudWatchログを表示できます。

log 呼び出し形式:

$ ask lambda log -f|--function [--start-time ] [--end-time ] [--limit ] [--raw] Options

--function|-f
Required. The Lambda function name.
--start-time
Optional. The start time for the log time range you wish to view. This should be written in the format 1dago for 1 day ago, or 30hago for 30 hours ago.
--end-time
Optional. The end time for the log time range you wish to view. This should be written in the format 1dago for 1 day ago, or 30hago for 30 hours ago.
--limit
Optional. Integer indicating the number of log entries to display.
--raw
Optional. Displays the logs without color or formatting.