AWS Elemental MediaLiveで入力プレビューのサムネイル画像をAWS CLIから取得してみた

先日サポートされたMediaLiveの入力映像のサムネイル表示機能について、AWS CLIから画像を取得してみました。describe-thumbnailsコマンドを使用し、また画像はBase64エンコードされたかたちで取得できます。
2023.07.14

はじめに

清水です。先日、ブロードキャストグレードのライブ動画処理サービスであるAWS Elemental MediaLiveで入力映像のプレビュー用サムネイル画像が確認できるようになったアップデートについてお届けしました。

上記ブログエントリ執筆時点(2023/07/10)では、入力プレビューのサムネイル画像についてAWS CLI(v2)での取得は確認できなかったのですが、今回AWS CLI v2のアップデート(2.13.1)を行いmedialive describe-thumbnailsコマンドを用いてサムネイル画像を取得してみたのでまとめてみます。あわせて、このmedialive describe-thumbnailsコマンドが実行可能になったタイミングについて、AWS CLI v1とv2それぞれで確認してみました。

AWS CLIでMediaLiveの入力サムネイル画像を取得してみた

AWS CLIの準備

まずはAWS CLI環境の準備です。先日(2023/07/10)の段階2.13.0では該当コマンドが実行できなかったことから、現時点(2023/07/14)の最新版に改めてアップデートしました。2.13.1となります。

% aws --version
aws-cli/2.13.1 Python/3.11.4 Darwin/21.6.0 exe/x86_64 prompt/off

MediaLiveリソースの準備

続いてMediaLiveのリソースを準備します。先日のエントリ同様、Workflow wizardを使って作成しました。設定内容についても先日のエントリと同じですのでここでは省略します。

MediaLiveのChannel(もしくはWorkflow)をStartさせ、Streaming SoftwareからMediaLiveに映像を打ち上げます。Streaming SoftwareはiPhone上でZixi ONAIRを使用しました。

マネジメントコンソール上のPreviewでサムネイル画像が表示されることを確認しておきます。

AWS CLIでMediaLiveサムネイル画像の取得

準備ができたら、いよいよ本題のAWS CLIでのMediaLive入力プレビューサムネイル画像の取得です。以下ドキュメントを参考に進めます。

AWS CLIのドキュメントは下記です。

コマンドはmedialive describe-thumbnailsで、オプション引数に--channel-id--pipeline-id--thumbnail-typeの3種を指定します。--channel-idはChannel IDですね。--pipeline-idはSingle Pipelineでは0を、Standardでは01のいずれかを指定します。--thumbnail-typeCURRENT_ACTIVEの固定値を指定する必要があるようです。

注意点として、Elemental Linkデバイスのサムネイル画像を取得するmedialive describe-input-device-thumbnailのようにコマンド実行時のオプションでファイル名を指定してAWS CLI実行環境にサムネイル画像を保存する、という形式ではありません。(AWS Elemental Linkのサムネイル画像をAWS CLI経由で取得してみた | DevelopersIOec2 get-console-screenshotコマンドのように、サムネイル画像はBase64エンコードされコマンド実行結果に格納されるかたちです。(【新機能】EC2コンソールのスクリーンショットを取得可能になりました | DevelopersIO

実際に実行してみましょう。ハイライトした11行目にBase64エンコードされたサムネイル画像データが格納されています。

% aws medialive describe-thumbnails \
    --channel-id XXXXXXX 
    --pipeline-id 0 \
    --thumbnail-type CURRENT_ACTIVE
{
    "ThumbnailDetails": [
        {
            "PipelineId": "0",
            "Thumbnails": [
                {
                    "Body": "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",
                    "ContentType": "image/jpeg",
                    "ThumbnailType": "CURRENT_ACTIVE",
                    "TimeStamp": "2023-07-14T05:57:29"
                }
            ]
        }
    ]
}

ec2 get-console-screenshotコマンド実行例にならい、base64コマンドを実行してデコードしつつファイルに保存してみます。

% aws medialive describe-thumbnails \
    --channel-id XXXXXXX \
    --pipeline-id 0 \
    --thumbnail-type CURRENT_ACTIVE \
    --query "ThumbnailDetails[].Thumbnails[].Body" \
    --output text | base64 -D > ./medialive-thumbnail.jpg

実際に上記コマンドで取得できたサムネイル画像が以下になります!

medialive describe-thumbnailsコマンドのアップデートについて

無事AWS CLIでmedialive describe-thumbnailsコマンドを使ってMediaLiveの入力サムネイル画像が取得できたところで、このアップデートのタイミングについても確認しておきましょう。冒頭や先日のエントリで、「AWS CLIを最新の2.13にアップデートしてもmedialive describe-thumbnailsコマンドが見つからず実行ができない、という状況」だったとお伝えしました。

こちらの際の環境などを具体的にまとめておきます。AWS CLIのバージョンなどの情報は下記でした。

% aws --version
aws-cli/2.13.0 Python/3.11.4 Darwin/21.6.0 exe/x86_64 prompt/off

この2.13.0のバージョンは2023/07/10時点でアップデートしたものなので、その時点での最新版だったといえます。この2.13.0環境でmedialive describe-thumbnailsを実行しても、以下のように「正しいコマンドを以下から選択してね」というエラーとなってしまっていました。

% aws medialive describe-thumbnails

usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help

aws: error: argument operation: Invalid choice, valid choices are:

accept-input-device-transfer             | batch-delete                         
batch-start                              | batch-stop                           
batch-update-schedule                    | cancel-input-device-transfer         
(以下省略)

そして本エントリでお伝えした通り、AWS CLIを2023/07/14時点の最新版2.13.1にアップデートするとmedialive describe-thumbnailsコマンドが実行可能になります。バージョン数値から察するに、この2.13.1へのアップデートのタイミングでmedialive describe-thumbnailsコマンドの追加が行われたかと推測できますね。実際にAWS CLIのアップデート履歴についても確認してみましょう。

AWS CLI v2CHANGELOG.rstを確認すると、以下のように「This release enables the use of Thumbnails in AWS Elemental MediaLive.」の記載がありました。

=========
CHANGELOG
=========

2.13.1
======

* api-change:``cognito-idp``: API model updated in Amazon Cognito
* api-change:``cognito-idp``: API model updated in Amazon Cognito
* api-change:``dms``: Releasing DMS Serverless. Adding support for PostgreSQL 15.x as source and target endpoint. Adding support for DocDB Elastic Clusters with sharded collections, PostgreSQL datatype mapping customization and disabling hostname validation of the certificate authority in Kafka endpoint settings
* api-change:``proton``: This release adds support for deployment history for Proton provisioned resources
* api-change:``medialive``: This release enables the use of Thumbnails in AWS Elemental MediaLive.
* api-change:``sagemaker``: Amazon SageMaker Canvas adds WorkspeceSettings support for CanvasAppSettings
(以下略)

2.13.1へのアップデートは2023/07/13付となっています。(本エントリを執筆している2023/07/14時点で)昨日の段階からAWS CLI 2.13.1でmedialive describe-thumbnailsコマンドが使えるようになっていた、ということになりますね。

そしてAWS CLI v1の状況も気になったので調べてみました。CHANGELOG.rstを確認すると、1.29.1の段階でmedialive describe-thumbnailsコマンドが利用可能になったようです。

1.29.1
======

* api-change:``dms``: Releasing DMS Serverless. Adding support for PostgreSQL 15.x as source and target endpoint. Adding support for DocDB Elastic Clusters with sharded collections, PostgreSQL datatype mapping customization and disabling hostname validation of the certificate authority in Kafka endpoint settings
* api-change:``glue``: This release enables customers to create new Apache Iceberg tables and associated metadata in Amazon S3 by using native AWS Glue CreateTable operation.
* api-change:``logs``: Add CMK encryption support for CloudWatch Logs Insights query result data
* api-change:``medialive``: This release enables the use of Thumbnails in AWS Elemental MediaLive.
* api-change:``mediatailor``: The AWS Elemental MediaTailor SDK for Channel Assembly has added support for EXT-X-CUE-OUT and EXT-X-CUE-IN tags to specify ad breaks in HLS outputs, including support for EXT-OATCLS, EXT-X-ASSET, and EXT-X-CUE-OUT-CONT accessory tags.

AWS CLI v1については現時点(2023/07/14)の最新版が1.29.3であり、1.29.1は2023/07/07の段階でリリースされていたようです。先日(2023/07/10)のブログエントリ公開の段階でもAWS CLI v1を使えば実現できていたのかもしれませんね……。

まとめ

AWS Elemental MediaLiveの入力プレビュー用のサムネイル画像をAWS CLI medialive describe-thumbnailsコマンドを用いて取得してみました。サムネイル画像はBase64エンコードされてコマンド実行結果に格納されるかたちで取得できます。Elemental Linkのサムネイル画像のようにAWS CLI実行環境にそのまま保存されるわけではない点に注意しましょう。

個人的にはEC2コンソールのスクリーンショット(ec2 get-console-screenshot)、Elemental Linkのサムネイル画像(medialive describe-input-device-thumbnail)に続く3つ目の「私が知っている画像取得ができるAWS CLIコマンド」となりました。AWSサービスの拡充を考えるとほかにもありそうな気がするので、機会があれば調べてみたと思います。

また本題とは関係ないのですが、「AWS CLI v2でコマンドのアップデートが遅れているのであればv1についても確認すべし(もしかしたらv1ではアップデートされているかもしれない……)」という言い伝えを実感する機会となりました。以前から聞いたことだけはあったのですが、改めて肝に銘じておきたいと思います。