この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
清水です。AWS Elemental MediaLive用のセットアップ済みライブエンコーダデバイスとして動作するAWS Elemental Link、リリース当初は購入時に指定したAWSリージョンでのみ動作する、という制限がありましたが、今年冒頭にこの使用リージョンを変更するリージョントランスファー機能がリリースされました。
上記エントリではAWSマネジメントコンソールから使用リージョンの変更(デバイスの別リージョンへのトランスファー)を行いました。また当時AWS CLIなどAPIでの実行方法についても調査してみたのですが、CloudTrailからTransferInputDevice
というイベントを確認するものの、実際の実行方法についてはドキュメントなどに記載がなく、確認することができませんでした。
それから2ヶ月ほど経ち、改めてAWS CLIのドキュメントなどを確認したところ、このLinkデバイスのリージョントランスファー機能についてもAPIでサポートされていることが確認できしまた。ということで本エントリではAWS CLIを用いてLinkデバイスの別リージョンへのトランスファー(転送)を行ってみたのでまとめてみたいと思います。
なお、改めてLinkデバイスのトランスファー機能についておさらいしておきますと、まずは本エントリでも扱っているリージョンのトランスファー(転送)機能があります。Linkデバイスを使用するリージョンを切り替える機能ですね。こちらはAWSマネジメントコンソールでの操作を冒頭に示したエントリにてまとめています。そしてもう1つのトランスファーとして、アカウントトランスファー(転送)機能があります。こちらはLinkデバイスを使用するAWSアカウントを変更する機能で、購入した際とは別のAWSアカウントで利用する場合にはこちらのアカウントトランスファーを利用します。アカウントトランスファーについては以下エントリをご参照ください。
TransferInputDevice APIのアップデートについて
AWS CLIでのLinkデバイスのリージョントランスファーを行う前に、これを実行するAPIのアップデートまわりについて確認しておきましょう。冒頭でも記しましたが、2ヶ月ほど前にAWSマネジメントコンソールからリージョントランスファー機能を確認した際には、APIでのリージョントランスファーは未サポートのようでした。この点についてざっと振り返っておきます。冒頭に示したこちらのエントリの「リージョントランスファーのAPIなどでの実行方法は?」の項目もあわせてご確認ください。
当時確認したAWS CLIのドキュメント、バージョンは2.1.21でした。そして現在latestとして確認できるのは2.1.32です。この2.1.32版のmedialive transfer-input-device
を確認すると、--target-region
というオプションがあり、「The target AWS region to transfer the device.」と説明があります。
- transfer-input-device — AWS CLI 2.1.32 Command Reference
- 2021/03/28時点で最新版の
transfer-input-device
のドキュメントページ (latest)
- 2021/03/28時点で最新版の
- transfer-input-device — AWS CLI 2.1.21 Command Reference
- バージョン2.1.21の
transfer-input-device
のドキュメントページ。--target-region
オプションはありません
- バージョン2.1.21の
AWS CLIのバージョンについてもう少し詳しく確認してみると、バージョン2.1.29のtransfer-input-device
には--target-region
オプションはなく、バージョン2.1.30から追加されていることがわかります。
- transfer-input-device — AWS CLI 2.1.29 Command Reference
- transfer-input-device — AWS CLI 2.1.30 Command Reference
AWS API Changesについても確認してみましょう。AWS Elemental MediaLiveのAPI、2021/03/05付けで「Medialive now supports the ability to transfer AWS Elemental Link devices to another region.」という情報があります。3月上旬にAPIの更新、ならびにAWS CLIへの追加があった、ということになりますね。
- AWS API Changes / AWS Elemental MediaLive
- AWS API Changes / 2021/03/05 - AWS Elemental MediaLive - 1 updated api methods
LinkデバイスのリージョントランスファーをAWS CLIでやってみた
APIのアップデート情報についても確認できました。それでは本題の、LinkデバイスのリージョントランスファーをAWS CLIで実際に行ってみたいと思います。使用するAWS CLIのコマンドはaws medialive
のtransfer-input-device
です。アカウントトランスファーと同じコマンドですね。ただし、実行時のオプションが異なります。アカウントトランスファーでは--target-customer-id
を指定しましたが、リージョントランスファーでは--target-region
を使用します。またアカウントトランスファーの場合は転送先のAWSアカウントでの承認操作が必要でしたが(accept-input-device-transfer
)、リージョントランスファーについては承認操作などは必要ありません。
AWS CLIについてはv2の現時点での最新版を使用しました。具体的には以下の環境となります。
% aws --version
aws-cli/2.1.32 Python/3.8.8 Darwin/19.6.0 exe/x86_64 prompt/off
リージョントランスファーについて、今回は東京リージョン(Tokyo/ap-northeast-1)にあるLinkデバイスを、バージニアリージョン(N. Virginia/us-east-1)へ転送してみます。
まずは転送前の状態をAWSマネジメントコンソールから確認しておきましょう。以下が東京リージョンで、1つのLinkデバイスが確認できますね。
続いてバージニアリージョンです。こちらはトランスファー前はデバイスが存在しない状態です。
AWS CLIでもlist-input-devices
コマンドで確認してみます。まずは東京リージョンです。
% aws medialive list-input-devices --region ap-northeast-1
{
"InputDevices": [
{
"Arn": "arn:aws:medialive:ap-northeast-1:123456789012:inputDevice:hd-XXXXXXXXXXXXXXXXXXXXc0z8",
"ConnectionState": "CONNECTED",
"DeviceSettingsSyncState": "SYNCED",
"DeviceUpdateStatus": "UP_TO_DATE",
"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": "Elemental Link",
"NetworkSettings": {
"DnsAddresses": [
"0.0.0.0"
],
"Gateway": "192.168.X.1",
"IpAddress": "192.168.X.X",
"IpScheme": "DHCP",
"SubnetMask": "255.255.255.0"
},
"SerialNumber": "XXXXXXXXXXXX",
"Type": "HD"
}
]
}
続いてバージニアリージョンです。Linkデバイスが存在していないので、具体的なデバイスの情報はありません。
% aws medialive list-input-devices --region us-east-1
{
"InputDevices": []
}
それでは実際にリージョントランスファーをAWS CLIで行っていみます。transfer-input-device
コマンドを以下のように実行します。--input-device-id
にはリージョントランスファー対象となるLinkデバイスのID(hd-
ではじまるもの)を指定します。--target-region
ではトランスファー先のリージョンを指定します。今回はバージニアリージョンですので、us-east-1
を指定しています。続いて--region
オプションです、トランスファー前のLinkデバイスが存在するリージョンを指定します。こちらは何も指定しなければ~/.aws/config
など設定ファイル中で指定されたリージョンが利用されます。私もデフォルトでap-northeast-1
を設定してるので省略しても良いのですが、今回は作業中にリージョンを意識する、ということで実行時に指定することにしました。
aws medialive transfer-input-device \
--input-device-id <LinkデバイスのID> \
--target-region <転送先リージョン> \
--region <転送元リージョン>
実際に実行してみます。
% aws medialive transfer-input-device \
--input-device-id hd-XXXXXXXXXXXXXXXXXXXXc0z8 \
--target-region us-east-1 \
--region ap-northeast-1
返り値は特にありません。実行したらlist-input-devices
コマンドでデバイスの状況を確認してみましょう。transfer-input-device
コマンド実行直後は、どちらのリージョンにもデバイスが存在しない状態が一瞬確認できました。
% aws medialive list-input-devices --region ap-northeast-1
{
"InputDevices": []
}
% aws medialive list-input-devices --region us-east-1
{
"InputDevices": []
}
1分ほど待機して、再度list-input-devicesを実行してみます。無事にLinkデバイスがバージニアリージョンに転送されていました。東京リージョンからは当然ながらLinkデバイスはなくなっています。
% aws medialive list-input-devices --region ap-northeast-1
{
"InputDevices": []
}
% aws medialive list-input-devices --region us-east-1
{
"InputDevices": [
{
"Arn": "arn:aws:medialive:us-east-1:123456789012:inputDevice:hd-XXXXXXXXXXXXXXXXXXXXc0z8",
"ConnectionState": "CONNECTED",
"DeviceSettingsSyncState": "SYNCED",
"DeviceUpdateStatus": "UP_TO_DATE",
"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": "Elemental Link",
"NetworkSettings": {
"DnsAddresses": [
"0.0.0.0"
],
"Gateway": "192.168.X.1",
"IpAddress": "192.168.X.X",
"IpScheme": "DHCP",
"SubnetMask": "255.255.255.0"
},
"SerialNumber": "XXXXXXXXXXXX",
"Type": "HD"
}
]
}
マネジメントコンソールからも確認してみましょう。東京リージョンではLinkデバイスがなくなっています。
そして転送先であるバージニアリージョンで、Linkデバイスが確認できます。
まとめ
AWS Elemental LinkのリージョントランスファーをAWS CLIを使ってやってみました。アカウントトランスファーと同じくtransfer-input-device
コマンドを使いますが、使用するオプションが異なります。またアカウントトランスファーのように別コマンドでの承認作業などは不要です。
Linkデバイスのトランスファーまわりについてざっと振り返ってみると、まずアカウントトランスファー機能がリリースされました。この際はマネジメントコンソールならびにAWS CLI両方での操作が確認できました。その後、リージョントランスファー機能がリリースされたわけですが、マネジメントコンソールからのみの操作で、AWS CLIなどAPIでのサポートが確認できず、おやっ!?と個人的には思っておりました。しかしこのたび、晴れてリージョントランスファーについてもAPIでの実行がサポートされ、嬉しい限りです。