Amazon Connectから呼び出すAmazon Lexにおいて、個人的に確認すべきランタイムクォータまとめ

Amazon Connectから呼び出すAmazon Lexにおいて、個人的に確認すべきランタイムクォータまとめ

Clock Icon2025.01.29

はじめに

Amazon Connectのフローから呼び出すAmazon Lexを利用や運用する際、個人的に確認すべきと考えるランタイムクォータをまとめました。

https://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/quotas.html

Lexの利用用途や環境によって確認すべきランタイムクォータは異なるため、本記事は参考程度にご活用ください。

AWSドキュメントのLexのランタイムクォータでは、以下の3つのAPIが記載されているため、先に紹介します。

  • StartConversation
  • RecognizeUtterance
  • RecognizeText

StartConversation APIは、アプリケーション(Amazon Connectなど)とAmazon Lex V2ボット間で双方向のリアルタイム会話を可能にするストリーミング接続を確立するためのAPIです。

このAPIは、音声やテキスト、DTMFなどのユーザー入力をボットにストリーミングし、双方向のリアルタイム会話を実現するストリーミングベースのAPIとして機能します。

https://docs.aws.amazon.com/ja_jp/lexv2/latest/APIReference/API_runtime_StartConversation.html

一方、RecognizeUtteranceとRecognizeTextは、ユーザーの音声入力(RecognizeUtterance)またはテキスト入力(RecognizeText)をボットに送信するためのAPIです。

https://docs.aws.amazon.com/ja_jp/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html

https://docs.aws.amazon.com/ja_jp/lexv2/latest/APIReference/API_runtime_RecognizeText.html

ドキュメントには記載されていませんが、ConnectのフローからLexを呼び出す場合は、StartConversation APIが利用されます。

以下のAPIは利用されません。

  • RecognizeUtterance
  • RecognizeText

利用されているAPIを確認する方法

ConnectのフローからLexを呼び出す場合、どのAPIが使用されているかは、Lexの会話ログ内のoperationNameから確認できます。

{
~中略~
    "operationName": "StartConversation",

https://docs.aws.amazon.com/lexv2/latest/dg/enabling-logs.html

それでは、確認しておくべきクオータを説明します。

確認すべきランタイムクォータ

確認すべきランタイムクォータは、以下の2つです。

  • RecognizeUtterance 操作での音声入力の長さ
  • StartConversation の同時音声モード会話の最大数

RecognizeUtterance 操作での音声入力の長さ

これは、Connectから呼び出されたLexボットが1回の会話でユーザーの発話を聞き取る時間を指します。
デフォルトの上限時間は15秒です。

ドキュメントにはRecognizeUtteranceのみが記載されていますが、これは誤りです。
実際には、StartConversationでも15秒の制限があるため、注意してください。

もし、15秒以上聞き取る必要がある場合、この15秒は上限緩和することが可能で、手順は以下の記事にまとめていますので、ご参照ください。

https://dev.classmethod.jp/articles/amazon-connect-lex-voice-input-extension/

StartConversation の同時音声モード会話の最大数

これは、Connectから同一のLexボットのエイリアスを同時に呼び出せる最大数を指します。

Lexが対応できる同時最大数は、エイリアスによって異なります。

  • TestBotAlias:2
  • 他のエイリアス:200

他のエイリアスでは、1秒間に200回以上、同一のエイリアスに対してStartConversationアクションが実行されると、スロットリングが発生します。

つまり、1秒間に200人のユーザーがConnectから呼び出すLexボットを利用する可能性があるかを確認しましょう。

なお、この上限は引き上げが可能です。

特に気にしなくてもよいランタイムクォータ

個人的に気にしなくてもよいと考えられるランタイムクォータの中から、特に分かりにくい項目をピックアップしました。

  • RecognizeText および の入力テキストサイズ RecognizeUtterance
  • 同時セッション管理オペレーションの最大数
  • Lambda 関数の最大出力サイズ

RecognizeTextおよびRecognizeUtteranceの入力テキストサイズ

RecognizeTextおよびRecognizeUtteranceの入力テキストサイズには、1024文字の制限があります。

しかし、Connectから呼び出されるLexでは、RecognizeTextとRecognizeUtteranceは利用されません。

StartConversationについてはストリーム形式であるため、1024文字の制限はありません。

随時データのやり取りが行われるため、特に気にする必要はありません。

同時セッション管理オペレーションの最大数

「同時セッション管理オペレーションの最大数(PutSession、GetSession、またはDeleteSession)」は、セッション管理操作APIリクエストの同時実行数の上限を指します。

この最大数は、エイリアスによって異なります。

  • TestBotAlias:2
  • 他のエイリアス:50

例えば、他のエイリアスの場合、PutSession APIが1秒以内に51回実行されると、エラーが発生します。

ただし、RecognizeTextおよびRecognizeUtteranceの実行時に限ります。

Use the RecognizeText or RecognizeUtterance API operations to manage the conversations yourself. Use the StartConversation API operation to let Amazon Lex V2 manage the conversation for you.
https://docs.aws.amazon.com/lexv2/latest/dg/managing-conversations.html

StartConversationを実行する場合、Lex v2でセッションは自動的に管理されるため、GetSessionなどの管理オペレーションを実行することはないため、気にしなくてよいです。

Lambda関数の最大出力サイズ

「Lambda関数の最大出力サイズ」とは、Lambda関数がLexに返答するレスポンスのデータサイズを指します。

このサイズは、Lambda関数から返却されるJSONオブジェクトのサイズをもとに算出できます。
具体的には、Lambda関数内でLexに返送するオブジェクトのサイズをログに出力することで確認可能です。

例えば、Lambdaが返答するJSONが英数字のみで構成されている場合、1文字が1バイトとして計算され、そのJSONの文字数がレスポンスサイズとなります。

https://docs.aws.amazon.com/lexv2/latest/dg/lambda-response-format.html

基本的には50KBを超えることは考えにくいため、気にしなくて良いと考えます。
なお、この上限は引き上げることはできません。

最後に

本記事では、Amazon Connectから呼び出すAmazon Lexを利用や運用する際に、個人的に確認しておくべきと考えるランタイムクォータについて解説しました。
StartConversation APIの同時実行数や音声入力の制限時間などは、環境や利用規模に応じて適切に管理する必要があります。

なお、Lexの利用用途や環境によって確認すべきランタイムクォータは異なるため、本記事はあくまでも参考程度にご活用ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.