[小ネタ] AWS Elemental MediaConvertをAWS CLIで使うときの注意点!〜アカウント個別のendpointを指定しよう〜

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

清水です。AWS Media Servicesの1つでありファイルベースの動画変換サービスであるAWS Elemental MediaConvertのAWS CLIコマンドを使用する際、他のAWSサービスのAWS CLIコマンドと比べて注意しないといけないポイントがあったのでまとめてみます。

具体的にはaws mediaconvertではじまるAWS Elemental MediaConvert用のAWS CLIコマンドを使用する場合、--endpoint-urlでendpointを指定する必要があり(一部コマンドを除く)、またendpointについてはリージョンやAWSアカウントごとに異なるものとなります。

endpointを指定しないでmediaconvertのコマンドを実行してみた場合

まずは他のAWS CLIコマンドの多くと同様に、--endpoint-urlのオプションを付けずにAWS CLIのmediaconvertのコマンドを実行してみます。

AWS CLIの環境はこちらです。

 $ aws --version
aws-cli/1.15.21 Python/2.7.13 Darwin/17.5.0 botocore/1.10.21

$ cat ~/.aws/config
[default]
output = json
region = ap-northeast-1

AWS CLIのドキュメントを参考にコマンド名を確認します。

例えばJob presetをリストするaws mediaconvert list-presetsコマンドを実行してみましょう。

$ aws mediaconvert list-presets \
    --region ap-northeast-1

An error occurred (BadRequestException) when calling the ListPresets operation: You must use the customer-specific endpoint 'https://4exxxxxx.mediaconvert.ap-northeast-1.amazonaws.com' for this operation.

このようにエラーとなってしまいます。

endpointを指定してmediaconvertのコマンドを実行

ありがたいことにエラー内容にコマンド実行に必要な項目が記載されています。カスタマごと(=AWSアカウントごと)に指定されたendpointを指定してコマンドを実行しないといけない、ということですね。

endpointの指定はAWS CLI実行時に--endpoint-urlのコマンドラインオプションで行います。

こちらを指定してmediaconvert list-presetsコマンドを実行すると、無事に結果が返ってきますね!

$ aws mediaconvert list-presets \
    --region ap-northeast-1 \
    --endpoint-url https://4exxxxxx.mediaconvert.ap-northeast-1.amazonaws.com
{
    "Presets": []
}

AWS Elemental MediaConvertのendpointの確認方法

このendpointですが、どのように確認すればよいでしょうか?コマンドを一度叩いてエラーメッセージを確認するのを都度(AWSアカウントやリージョンごとに)行うのはスマートではないですよね。

確認してみるとmediaconvertのコマンドの1つにdescribe-endpointsというものがあり、こちらを使うとendpointが取得できます。

そしてこちらは、endpointを指定しないで実行できるmediaconvertのコマンドになります。実際にmediaconvert describe-endpointsを実行してみると以下のようにendpointが返ります。

$ aws mediaconvert describe-endpoints --region ap-northeast-1
{
    "Endpoints": [
        {
            "Url": "https://4exxxxxx.mediaconvert.ap-northeast-1.amazonaws.com"
        }
    ]
}

またこちらのendpointですが、マネージメントコンソールを探ってみたところ、左側メニューの「Account」という項目のページにAPI endpointとして記載がありました。こちらから確認するのもよいでしょう。

なお、AWS CLI endpointではなくAPI endpointと記載があるとおり、AWS CLIに限らず他のAWS SDKを使用する場合でも、MediaConvertの場合はリージョン、AWSアカウントごと固有のendpointを指定する必要がありそうです。API Referenceの下記ページをご確認ください。 *1

まとめ

AWS CLIでAWS Elemental MediaConvertを使用する場合は--endpoint-urlを使ってAWSアカウント、リージョン固有のendpointを指定する必要がある、という話でした。他に同様のケースでは、AWS Elemental MediaStoreのObjectを操作するコマンドでもendpointの指定が必要ですね。(こちらはMediaStoreのコンテナごとに異なるendpointとなります。)わかってしまえばなんてことはない点ですが、初めて使用するときや長らく使っていないときなどはハマらないように注意しましょう。

脚注

  1. 余談ですがこちらのページに記載されているAWS CLIのdescribe-endpointsの説明では、リージョンの指定に現在MediaConvertが使用できないリージョンの一つである大阪ローカルリージョン ap-northeast-3 が指定されていました。なんでやねーん。