Amazon Developer

as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
Ring
AWS
ドキュメント
Support
Contact Us
My Cases
開発
テスト
公開
収益化
ユーザーエンゲージメント
デバイスの仕様
リソース

Lambdaの概要(VSK Echo Show)

Lambdaの概要(VSK Echo Show)

Lambda関数は、ビデオスキルのバックエンドとして機能します。参照Lambdaコードをローカルで更新し、CLIツールを使用して、プロジェクトの更新、再ビルド、再デプロイを行い、Lambda関数をAWSに自動的にプッシュすることができます。

動作のしくみ

Lambda関数のすべてのスクリプトは、プロジェクトの./lambda/srcフォルダにローカルに保存されます。CLIツールを使用してビデオスキルをデプロイすると、これらのスクリプトがクラウドにプッシュされます。ビデオスキルが正常にデプロイされると、AWSコンソールでLambda関数全体を1つのファイルとして扱うことができます。AWSコンソールでは、以下のようにLambdaを検索できます。

AWSコンソールでのLambda関数の検索

関数名(<プロジェクト名>-lambda)をクリックします。Lambda関数はindex.jsファイル内にあります。

Lambdaコード

CLIツールを使用すると、ローカルに保存された特定のスクリプトの更新(ビデオコンテンツのdatabase.jsスクリプトの更新など)、Lambdaコンポーネントの更新と再デプロイ、更新されたLambda関数のクラウドへのプッシュのみに集中できます。

Lambda関数は、AlexaからディレクティブをJSONとして受け取って処理し、所定のJSON形式を使用してレスポンスを返します。ディレクティブは、特定のアクション(ビデオのメタデータの取得など)の実行に関する命令を含むJSONメッセージです。現在、参照Lambdaコード内にはビデオコンテンツデータベースとして機能するJSONオブジェクトが埋め込まれています。

所有する別の既存データベースとやり取りするようにLambda関数を構成するには、データベースアクセスクラスを変更して、このデータベースでクエリを実行し、参照コードと同じ方法で構造化されたデータを返します。残りのLambdaコードは、データベースアクセスレイヤーによって返されるコンテンツに動的に応答するため、変更する必要はありません。

デフォルトでは、参照Lambda関数は(「ontv」という名前の)Gracenoteカタログを使用します。Alexaによって統合済みのカタログを所有しており、そのカタログを代わりに使用する場合は、カタログ名の使用を参照してください。

機能

参照Lambda関数は、以下の主な機能をサポートしています。

機能 指定方法
検索 Video id 「『ストレンジャー・シングス』」を検索して」
「『サイク/名探偵はサイキック?』のシーズン1を検索して」
「『ブラックパンサー』を検索して」
検索 Actor Name 「リーアム・ニーソンの映画を検索して」
「ジェイミー・フォックスの映画を検索して」
検索 Genre 「コメディ映画を検索して」
「アクション映画を検索して」
「アドベンチャー映画を検索して」
検索 Actor + Genreなど、複数のビデオメタデータフィールド 「リーアム・ニーソンのアクション映画を検索して」
「ジェニファー・アニストンのコメディTVシリーズを検索して」

検索結果ページでは、次のような発話を行うこともできます。

「2番目を選択して」
「1番を再生して」
クイック再生 Video Name 「『ストレンジャー・シングス』を見せて」
「『サイク/名探偵はサイキック?』のシーズン1のエピソード1を見せて」
「『ブラックパンサー』を見せて」
クイック再生 Actor Name 「リーアム・ニーソンの映画を見せて」
「ジェイミー・フォックスの映画を見せて」
クイック再生 Genre 「コメディ映画を見せて」
「アクション映画を見せて」
「アドベンチャー映画を見せて」
クイック再生 Actor + Genreなど、複数のビデオメタデータフィールド 「リーアム・ニーソンのアクション映画を見せて」
「ジェニファー・アニストンのコメディTVシリーズを見せて」
チャンネルナビゲーション 「PBSに変えて」
「NBCに変えて」
閲覧とリスト選択 「別のカテゴリーのリストを見せて」
次のように発話して、[その他のカテゴリー] にあるほかのカテゴリーを確認できます。

「人気の映画を選択して」
「その他のカテゴリーを選択して」

トランスポートコントロールは、参照ソフトウェアに含まれるウェブプレーヤーによって指定されることに注意してください。

Lambda関数のインストールと更新

Lambda関数はAWSでホストする必要があります。そのための処理は、インストールプロセス中にCLIツールで行われます。スキルマニフェストでの構成も必要です。これは開発者ポータルで行うことができますが、通常は、プロジェクトに含まれるAlexa Video Infrastructure CLIツールで自動的にセットアップされます。

--deployを使用すると、Alexa Video Infrastructure CLIツールによってLambda関数が作成され、デプロイされます。この処理は、参照ビデオスキルのセットアップ中に行われます。

開発サイクル中にLambdaコードを更新およびデプロイするには、--update --lambdaを使用します。これにより、開発プロセスが大幅にスピードアップします。

手動でのLambda関数のインストールプロセスについては、手動でのLambda関数のセットアップ(省略可能)を参照してください。

Lambda関数は、ビデオスキルのマニフェストで構成する必要があります。この構成はプロジェクトに含まれるAlexa Video Infrastructure CLIツールで自動的に行われますが、手動で構成する場合は、Alexa開発者コンソールにアクセスし、手動でのLambda関数のセットアップ(省略可能)の手順を実行してください。

手動でのLambda関数のセットアップ(省略可能)

Lambda関数を(CLIツールを使用せずに)手動でインストールする場合は、別のプロセスを実行する必要があります。

  1. プロジェクトのローカルフォルダ./lambdaに移動します。
  2. npm run releaseを実行します。
  3. ここで説明した手順に従って、ビデオスキルをデプロイするのと同じリージョンでAWS Lambda関数を作成します。
  4. コンパイルされたLambdaコードを、./lambda/dist/lambdaから、手順3で作成したAWS Lambda関数にコピーします。
  5. 手順3で作成したLambda関数の実行ロールに、次のポリシーを追加します。

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "s3:GetObject",
            "dynamodb:BatchGetItem",
            "dynamodb:BatchWriteItem",
            "dynamodb:PutItem",
            "dynamodb:DeleteItem",
            "dynamodb:GetItem",
            "dynamodb:Scan",
            "dynamodb:Query",
            "dynamodb:UpdateItem",
            "logs:CreateLogGroup",
            "logs:CreateLogStream",
            "logs:PutLogEvents"
          ],
          "Resource": ["*"]
        }
      ]
    }
    
  6. Lambda関数用のDynamoDBデータベースを作成し、次の仕様を使用してページ分割用のデータを保存します。

    "PaginationDatabase": {
        "Type" : "AWS::DynamoDB::Table",
        "Description": "ページ分割用のデータを保持します",
        "Properties" : {
            "TableName" : {
                "Fn::Sub": [
                    "${ProjectName}-pagination-table",
                    {
                        "ProjectName": {
                            "Ref": "ProjectName"
                        }
                    }
                ]
            },
            "AttributeDefinitions" : [
                {
                    "AttributeName" : "token",
                    "AttributeType" : "S"
                }
            ],
            "KeySchema" : [
                {
                    "AttributeName" : "token",
                    "KeyType" : "HASH"
                }
            ],
            "ProvisionedThroughput" : {
                "ReadCapacityUnits" : "5",
                "WriteCapacityUnits" : "5"
            }
        }
    }
    

次のステップ

Lambda関数のカスタマイズを参照してください。


Last updated: 2020年10月29日