AWS Elemental LinkをAWS CLIから操作してみた

AWS CLIを使ってAWS Elemental Linkの情報を参照、また実際に設定項目を変更してみました。AWS Elemental MediaLiveのDeviceに関連する3つのコマンドが使用でき、AWSマネジメントコンソールとほぼ同等の情報を取得、設定変更が可能です。
2020.06.30

はじめに

清水です。AWS Elemental MediaLive用のセットアップ済みライブエンコーダデバイスとして動作するAWS Elemental Linkですが、AWS CLIも準備されており、AWSマネジメントコンソールから確認、設定できる項目のほとんどはAWS CLIからも操作することができます。具体的にはAWS Elemental MediaLiveのコマンド(aws medialiveで始まる)の一部となっており、deviceに関連する以下3つが対象となります。

  • list-input-devices
  • describe-input-device
  • update-input-device

本エントリではこれらAWS Elemental Linkの情報を確認、設定できるコマンドを実際に試してみました。なおAWS CLIの環境はv2を使用していて、具体的には以下となります。

% aws --version
aws-cli/2.0.26 Python/3.7.4 Darwin/19.5.0 botocore/2.0.0dev30

list-input-devices

デバイス一覧表示のコマンドになります。出力数が多くなる場合などは引数で調整ができるようです。

% aws medialive list-input-devices

出力は以下のようになりました。AWSマネジメントコンソールのMediaLive画面、Devicesで確認できる項目と同等ですね。デバイスのうち一つはオフライン状態、もう一つはAWSと疎通が取れており映像信号も入力されている、しかしMediaLiveのChannelには映像を打ち上げていない(MediaLiveのChannelがStartされていない)状態となります。

% aws medialive list-input-devices --region us-west-2
{
    "InputDevices": [
        {
            "Arn": "arn:aws:medialive:us-west-2:123456789012:inputDevice:hd-XXXXXXXXXXXXXXXXXXXXulzh",
            "ConnectionState": "DISCONNECTED",
            "DeviceSettingsSyncState": "SYNCED",
            "HdDeviceSettings": {
                "ConfiguredInput": "AUTO",
                "MaxBitrate": 9000000
            },
            "Id": "hd-XXXXXXXXXXXXXXXXXXXXulzh",
            "MacAddress": "XX:XX:XX:XX:XX:XX",
            "Name": "",
            "NetworkSettings": {},
            "SerialNumber": "XXXXXXXXXXXX",
            "Type": "HD"
        },
        {
            "Arn": "arn:aws:medialive:us-west-2:123456789012:inputDevice:hd-XXXXXXXXXXXXXXXXXXXXc0z8",
            "ConnectionState": "CONNECTED",
            "DeviceSettingsSyncState": "SYNCED",
            "HdDeviceSettings": {
                "ActiveInput": "HDMI",
                "ConfiguredInput": "AUTO",
                "DeviceState": "IDLE",
                "Framerate": "60.0",
                "Height": 1080,
                "MaxBitrate": 900000,
                "ScanType": "PROGRESSIVE",
                "Width": 1920
            },
            "Id": "hd-XXXXXXXXXXXXXXXXXXXXc0z8",
            "MacAddress": "XX:XX:XX:XX:XX:XX",
            "Name": "",
            "NetworkSettings": {
                "DnsAddresses": [
                    "0.0.0.0"
                ],
                "Gateway": "192.168.113.1",
                "IpAddress": "192.168.113.7",
                "IpScheme": "STATIC",
                "SubnetMask": "255.255.255.0"
            },
            "SerialNumber": "XXXXXXXXXXXX",
            "Type": "HD"
        }
    ]
}

describe-input-device

続いてliset-inputsで得られてたInputのうちの1つについて、describe-inputコマンドで詳細情報を取得してみます。デバイスのID(hd-で始まるもの)が引数として必要な点に注意します。

% aws medialive describe-input-device --input-device-id <value>

結果は以下となりました。list-input-devicesで一覧表示される情報のうち1つのデバイスについて表示される、という具合なようですね。なお先ほどのlist-input-devices時から、Linkデバイスhd-XXXXXXXXXXXXXXXXXXXXc0z8については実際にInputとしてMediaLiveのChannelにアタッチし、そのChannelをRunnnig状態に変更してみました。"DeviceState": "STREAMINGとなっているのがわかりますね。

% aws medialive describe-input-device --input-device-id hd-XXXXXXXXXXXXXXXXXXXXc0z8 --region us-west-2
{
    "Arn": "arn:aws:medialive:us-west-2:123456789012:inputDevice:hd-XXXXXXXXXXXXXXXXXXXXc0z8",
    "ConnectionState": "CONNECTED",
    "DeviceSettingsSyncState": "SYNCED",
    "HdDeviceSettings": {
        "ActiveInput": "HDMI",
        "ConfiguredInput": "AUTO",
        "DeviceState": "STREAMING",
        "Framerate": "60.0",
        "Height": 1080,
        "MaxBitrate": 900000,
        "ScanType": "PROGRESSIVE",
        "Width": 1920
    },
    "Id": "hd-XXXXXXXXXXXXXXXXXXXXc0z8",
    "MacAddress": "XX:XX:XX:XX:XX:XX",
    "Name": "",
    "NetworkSettings": {
        "DnsAddresses": [
            "0.0.0.0"
        ],
        "Gateway": "192.168.113.1",
        "IpAddress": "192.168.113.7",
        "IpScheme": "STATIC",
        "SubnetMask": "255.255.255.0"
    },
    "SerialNumber": "XXXXXXXXXXXX",
    "Type": "HD"
}

update-input-device

デバイスについて設定変更を行うコマンドになります。マネジメントコンソールから設定変更できる項目は以下エントリでも確認したとおり、Input sourceMaximum bitrateのみです。

今回はMaximum bitrateを変更してみます。 (上記エントリで9000000つまり9Mbpsだったものを900000つまり900kbpsに変更していますが、今回は逆に9000000、9Mbpsに変更してます。)

引数としてデバイスのID(hd-で始まるもの)の他、設定内容を渡します。

% aws medialive update-input-device --input-device-id <value> --hd-device-settings <value>

まず変更前の状態をdescribe-input-deviceで確認します。

% aws medialive describe-input-device --input-device-id hd-XXXXXXXXXXXXXXXXXXXXc0z8 --region us-west-2
{
    "Arn": "arn:aws:medialive:us-west-2:123456789012:inputDevice:hd-XXXXXXXXXXXXXXXXXXXXc0z8",
    "ConnectionState": "CONNECTED",
    "DeviceSettingsSyncState": "SYNCED",
    "HdDeviceSettings": {
        "ActiveInput": "HDMI",
        "ConfiguredInput": "AUTO",
        "DeviceState": "IDLE",
        "Framerate": "60.0",
        "Height": 1080,
        "MaxBitrate": 900000,
        "ScanType": "PROGRESSIVE",
        "Width": 1920
    },
    "Id": "hd-XXXXXXXXXXXXXXXXXXXXc0z8",
    "MacAddress": "XX:XX:XX:XX:XX:XX",
    "Name": "",
    "NetworkSettings": {
        "DnsAddresses": [
            "0.0.0.0"
        ],
        "Gateway": "192.168.113.1",
        "IpAddress": "192.168.113.7",
        "IpScheme": "STATIC",
        "SubnetMask": "255.255.255.0"
    },
    "SerialNumber": "XXXXXXXXXXXX",
    "Type": "HD"
}

続いて、update-input-deviceコマンドを実行して実際に設定変更します。レスポンスとして返る情報で、変更された"MaxBitrate": 9000000,が確認できますね。

% aws medialive update-input-device --input-device-id hd-XXXXXXXXXXXXXXXXXXXXc0z8 --hd-device-settings MaxBitrate=9000000 --region us-west-2
{
    "Arn": "arn:aws:medialive:us-west-2:123456789012:inputDevice:hd-XXXXXXXXXXXXXXXXXXXXc0z8",
    "ConnectionState": "CONNECTED",
    "DeviceSettingsSyncState": "SYNCING",
    "HdDeviceSettings": {
        "ActiveInput": "HDMI",
        "ConfiguredInput": "AUTO",
        "DeviceState": "IDLE",
        "Framerate": "60.0",
        "Height": 1080,
        "MaxBitrate": 9000000,
        "ScanType": "PROGRESSIVE",
        "Width": 1920
    },
    "Id": "hd-XXXXXXXXXXXXXXXXXXXXc0z8",
    "MacAddress": "XX:XX:XX:XX:XX:XX",
    "Name": "",
    "NetworkSettings": {
        "DnsAddresses": [
            "0.0.0.0"
        ],
        "Gateway": "192.168.113.1",
        "IpAddress": "192.168.113.7",
        "IpScheme": "STATIC",
        "SubnetMask": "255.255.255.0"
    },
    "SerialNumber": "XXXXXXXXXXXX",
    "Type": "HD"
}

念のため、もういちどdescribe-input-deviceコマンドを実行しておきます。

% aws medialive describe-input-device --input-device-id hd-XXXXXXXXXXXXXXXXXXXXc0z8 --region us-west-2
{
    "Arn": "arn:aws:medialive:us-west-2:123456789012:inputDevice:hd-XXXXXXXXXXXXXXXXXXXXc0z8",
    "ConnectionState": "CONNECTED",
    "DeviceSettingsSyncState": "SYNCED",
    "HdDeviceSettings": {
        "ActiveInput": "HDMI",
        "ConfiguredInput": "AUTO",
        "DeviceState": "IDLE",
        "Framerate": "60.0",
        "Height": 1080,
        "MaxBitrate": 9000000,
        "ScanType": "PROGRESSIVE",
        "Width": 1920
    },
    "Id": "hd-XXXXXXXXXXXXXXXXXXXXc0z8",
    "MacAddress": "XX:XX:XX:XX:XX:XX",
    "Name": "",
    "NetworkSettings": {
        "DnsAddresses": [
            "0.0.0.0"
        ],
        "Gateway": "192.168.113.1",
        "IpAddress": "192.168.113.7",
        "IpScheme": "STATIC",
        "SubnetMask": "255.255.255.0"
    },
    "SerialNumber": "XXXXXXXXXXXX",
    "Type": "HD"
}

まとめ

AWS CLIを使ってAWS Elemental Linkの情報を参照、また実際に設定項目を変更してみました。AWSマネジメントコンソールのMediaLiveのページ、Devicesの項目についてはほとんどがAWS CLIでも確認できますね。例えばLinkデバイスがAWS環境と接続され、映像信号も入力されている状況になったら、MediaLiveのChannelをStartさせる、なんてこともできそうです。個人的にちょっと期待したのがサムネイル表示部分だったのですが、こちらは現段階ではAWS CLIでは取得不可能のようでした。APIを直接実行すれば取得できるのかも確認したいところです。