ストリーミングビデオのトラブルシューティング
このトピックでは、Amazon Rekognition Video を使用したストリーミングビデオにおけるトラブルシューティングについて説明します。
トピック
使用するストリーミングプロセッサが正常に作成されたかどうかがわかりません。
次の AWS CLI コマンドを使用して、ストリームプロセッサの一覧および現在のステータスを取得します。
aws rekognition list-stream-processors
追加の詳細を取得するには、次の AWS CLI コマンドを使用できます。stream-processor-name を必要なストリームプロセッサの名前に置き換えます。
aws rekognition describe-stream-processor --namestream-processor-name
ストリームプロセッサを正しく設定しているかがわかりません
コードで Amazon Rekognition Video の分析結果が出力されない場合、ストリームプロセッサが正常に設定されていない可能性があります。ストリームプロセッサが正しく設定され、結果を生成することができることを確認するには、次を実行します。
ソリューションが正しく設定されているかどうか判断するには
次のコマンドを実行して、ストリームプロセッサが実行状態にあることを確認します。
stream-processor-nameを使用するストリームプロセッサの名前に変更します。ストリームプロセッサが実行されている場合、Statusの値はRUNNINGです。ステータスがRUNNINGであり、結果が表示されない場合には、「使用するストリームプロセッサが結果を返しません」を参照してください。ステータスがFAILEDの場合には、「ストリームプロセッサの状態が FAILED (失敗) になる」を参照してください。aws rekognition describe-stream-processor --namestream-processor-nameストリームプロセッサが実行されている場合には、次の Bash あるいは PowerShell コマンドを実行して、出力 Kinesis データストリームからデータを読み込みます。
Bash:
SHARD_ITERATOR=$(aws kinesis get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-namekinesis-data-stream-name--query 'ShardIterator') aws kinesis get-records --shard-iterator $SHARD_ITERATORPowerShell、
aws kinesis get-records --shard-iterator ((aws kinesis get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-namekinesis-data-stream-name).split('"')[4])Base64 デコードウェブサイトでデコードツール
を使用して、人間が読み取れる文字列に出力をデコードします。詳細については、「ステップ 3: レコードの取得」を参照してください。 コマンドが動作し、Kinesis データストリームに顔検出結果が表示される場合、ソリューションは適切に設定されています。コマンドが失敗した場合は、他のトラブルシューティング解決策を試し、「Amazon Rekognition Video にリソースへのアクセス権を付与する」を参照してください。
また、「kinesis-process-record」AWS Lambda ブループリントを使用して、Kinesis データストリームから CloudWatch にメッセージをログ記録し継続的な視覚化を行うこともできます。これには AWS Lambda および CloudWatch の追加コストが発生します。
使用するストリームプロセッサが結果を返しません
いくつかの要因によりストリームプロセッサが結果を返さないことがあります。
要因 1: ストリームプロセッサが正しく設定されていない
ストリームプロセッサが正しく設定されていない可能性があります。詳細については、「ストリームプロセッサを正しく設定しているかがわかりません」を参照してください。
要因 2: ストリームプロセッサが RUNNING (実行中) ステータスではない
ストリームプロセッサのステータスをトラブルシューティングするには
次の AWS CLI コマンドを使用して、ストリームプロセッサのステータスを確認します。
aws rekognition describe-stream-processor --namestream-processor-nameStatusの値がSTOPPEDの場合、ストリームプロセッサを次のコマンドで開始します。aws rekognition start-stream-processor --namestream-processor-nameStatusの値がFAILEDの場合、「ストリームプロセッサの状態が FAILED (失敗) になる」を参照してください。Statusの値がSTARTINGの場合、2 分ほど待機してから、ステップ 1 を繰り返してステータスを確認します。ステータスの値が依然としてSTARTINGの場合には、次の操作を行います。次のコマンドを実行して、ストリームプロセッサを削除します。
aws rekognition delete-stream-processor --namestream-processor-name同じ設定で新しいストリームプロセッサを作成します。詳細については、「ストリーミングビデオイベントの操作」を参照してください。
それでも問題が生じる場合には、AWS サポートにお問い合わせください。
Statusの値がRUNNINGの場合、「要因 3: Kinesis ビデオストリームにアクティブデータがない」を参照してください。
要因 3: Kinesis ビデオストリームにアクティブデータがない
Kinesis ビデオストリームにアクティブなデータがあるかどうかをチェックするには
AWS マネジメントコンソール にサインインし、Amazon Kinesis Video Streams のコンソール https://console.aws.amazon.com/kinesisvideo/
を開きます。 Amazon Rekognition ストリームプロセッサの入力である Kinesis ビデオストリームを選択します。
プレビュー状態が [ストリームにデータなし] の場合は、入力ストリームに Amazon Rekognition Video が処理するデータはありません。
Kinesis Video Streams を使用してビデオを作成する詳細については、「Kinesis Video Streams プロデューサーライブラリ」を参照してください。
ストリームプロセッサの状態が FAILED (失敗) になる
次の AWS CLI コマンドを使用して、ストリームプロセッサのステータスを確認できます。
aws rekognition describe-stream-processor --namestream-processor-name
ステータスの値が FAILED (失敗) の場合、トラブルシューティング情報で次のエラーメッセージを参照します。
エラー: "Access denied to Role"
ストリームプロセッサが使用する IAM ロールが存在しない、または Amazon Rekognition Video にこのロールを引き受ける権限がありません。
IAM ロールへのアクセスをトラブルシューティングするには
AWS マネジメントコンソール にサインインして、IAM コンソール https://console.aws.amazon.com/iam/
を開きます。 左のナビゲーションペインから [ロール] を選択し、ロールが存在することを確認します。
ロールが存在する場合は、このロールに AmazonRekognitionServiceRole アクセス許可ポリシーがあることを確認します。
ロールが存在しない、あるいは適切なアクセス許可がない場合には、「Amazon Rekognition Video にリソースへのアクセス権を付与する」を参照してください。
次の AWS CLI コマンドを実行して、ストリームプロセッサを開始します。
aws rekognition start-stream-processor --namestream-processor-name
エラー: 「Kinesis ビデオへのアクセス拒否またはKinesis データへのアクセス拒否」
ロールには、Kinesis Video Streams API オペレーション GetMedia および GetDataEndpoint へのアクセス権がありません。また、Kinesis Data Streams API オペレーション PutRecord および PutRecords へのアクセス権がない可能性もあります。
API アクセス権限をトラブルシューティングするには
AWS マネジメントコンソール にサインインして、IAM コンソール https://console.aws.amazon.com/iam/
を開きます。 ロールを開き、次のアクセス許可ポリシーがアタッチされていることを確認します。
いずれかのアクセス許可がない場合には、ポリシーを更新します。詳細については、「Amazon Rekognition Video にリソースへのアクセス権を付与する」を参照してください。
エラー: "Stream input-video-stream-name doesn't exist"
ストリームプロセッサへの Kinesis ビデオストリームの入力が存在しないか、正しく設定されていません。
Kinesis ビデオストリームをトラブルシューティングするには
次のコマンドを使用して、ストリームがあることを確認します。
aws kinesisvideo list-streamsストリームが存在する場合、次を確認します。
Amazon リソースネーム (ARN) は、ストリームプロセッサの入力ストリームの ARN と同じです。
Kinesis ビデオストリームは、ストリームプロセッサと同じリージョンにあります。
ストリームプロセッサが正しく設定されていない場合は、AWS CLI コマンドを使用してこれを削除します。
aws rekognition delete-stream-processor --namestream-processor-name目的の Kinesis ビデオストリームで新しいストリームプロセッサを作成します。詳細については、「Amazon Rekognition Video 顔検索ストリームプロセッサの作成」を参照してください。
エラー: "Collection not found"
顔と一致するためにストリームプロセッサによって使用される Amazon Rekognition コレクションが存在しない、または間違ったコレクションが使用されています。
コレクションを確認するには
次の AWS CLI コマンドを使用して、必要なコレクションが存在することを確認します。
regionをストリームプロセッサを実行している AWS リージョンに変更します。aws rekognition list-collections --regionregion必要なコレクションが存在しない場合には、新しいコレクションを作成して顔情報を追加します。詳細については、「コレクション内での顔の検索」を参照してください。
CreateStreamProcessor の呼び出しで、
CollectionId入力パラメータの値が正確であることを確認します。次の AWS CLI コマンドを実行して、ストリームプロセッサを開始します。
aws rekognition start-stream-processor --namestream-processor-name
エラー: "Stream output-kinesis-data-stream-name under account account-id not found"
ストリームプロセッサで使用される出力 Kinesis データストリームが AWS アカウントに存在しない、あるいは使用するストリームプロセッサと同じ AWS リージョンにありません。
Kinesis データストリームをトラブルシューティングするには
次の AWS CLI コマンドを使用して、Kinesis データストリームが存在することを確認します。
regionをストリームプロセッサを使用している AWS リージョンに変更します。aws kinesis list-streams --regionregionKinesis データストリームが存在する場合、Kinesis データストリーム名がストリームプロセッサによって使用される出力ストリームの名前と同じであることを確認します。
Kinesis データストリームが存在しない場合、別の AWS リージョン内に存在している可能性があります。Kinesis データストリームは、ストリームプロセッサと同じリージョンにある必要があります。
必要に応じて、新しい Kinesis データストリームを作成します。
ストリームプロセッサによって使用される名前と同じ名前の Kinesis データストリームを作成します。詳細については、「ステップ 1: データストリームを作成する」を参照してください。
次の AWS CLI コマンドを実行して、ストリームプロセッサを開始します。
aws rekognition start-stream-processor --namestream-processor-name
使用するストリームプロセッサが予測された結果を返さない
ストリームプロセッサが予測された顔の一致を返さない場合、次の情報を使用します。