MEGAZONEブログ
Using Mountpoint for Amazon S3 for content production
コンテンツ制作のためのAmazon S3用マウントポイントの使用
Pulisher : Cloud Technology Center イ・ギョンソン
Description:Amazon S3 Mountpoint をコンテンツ制作メディアブラウザと統合し、S3の弾力性、部分的なファイル読み取り機能、低コストを活用する方法を紹介するセッション
はじめに
Media & Entertainment ビジネス面で多くのコンテンツ制作をする組織では、大容量メディアを保存するためにAmazon S3をよく使います。
最近リリースされた機能であるAmazon S3用Mountpointを活用すれば、ファイルシステムインターフェースを通じてもう少し効率的に活用することができます。メディアの部分においてまだ経験が少ないので、このワークショップを通じて経験をさらに積みたいと思って申し込みました。
セッションの概要紹介
Amazon S3 Mountpoint をコンテンツ制作メディアブラウザと統合し、S3の弾力性、部分的なファイル読み取り機能、低コストを活用する方法についてのセッションです。
コンテンツ制作のためのワークロードで、ストレージの部分に対するチャレンジが多く発生しています。
第一に、使用するツールがファイルシステムインターフェースが標準化された部分で、このような条件が必須である部分と
第二に、メディアコンテンツワークロードの特性上、非常に多くのデータ量が必須であるため、このすべてのデータをコピーしながら進めるのは非常に無駄です。
もし、そのように進めれば、ストレージ量から始まり、時間、そして最も重要な費用まで非常に無駄が多くなります。
だから、S3 Mount Pointを使うことで、多くの利点を得ることができます。
本当に魅力的な機能がたくさんあるS3の利点がありましたが、オブジェクトストレージなので使えなかった部分について、ファイルシステムクライアントとして使えるようになり、高いスループットと一緒にS3の高い信頼性まで享受できるようになりました。
まだ多くの情報が出ていませんが、S3 Mountpointに関する公開ロードマップのアドレスを共有します。
参考リンク : https://github.com/awslabs/mountpoint-s3
百聞は一見にしかず、S3 mountpointの実習を行いました。
1.ワークショップの紹介
ワークショップに提供されたアーキテクチャは上記の通りです。
EC2 : ワークステーションおよびアプリケーション開発サーバーとして使用
S3 : 別のアカウントでメディアオブジェクトが含まれる
Codecommit : 拡張する基本コードが含まれるリポジトリ
メディアが含まれているS3バケットを閲覧できるS3メディアブラウザの足りない部分を完成し、最終的にはS3バケットにある各クリップのサムネイルとメタデータを確認するワークショップです。
2.リモート表示設定
まず、あらかじめプロビジョニングされているEC2にセッションマネージャーで接続します。
次に、NiceDCVクライアントを使ってEC2のディスプレイマネージャに接続します。
上のコマンドでDCVセッションを生成します。
DCV ViewerにEC2のpublic IPを入れ、centos osのid pwを入力してログインします。
作成したDCVセッションにログインしてデスクトップ環境を確認します。
3.S3用Mountpointをインストールするだけです
S3バケットをEC2インスタンスに搭載し、バケットのコンテンツにアクセスして、VLCを通じてバケットにある一部のメディア動画映像を再生する予定です。
マウントするディレクトリと、S3 Mountpoint agentをインストールして、
メディアバケットをマウントする前に、権限を設定します。
また、メディアバケットにアクセスするためのAWS認証情報を保存します。
(この部分はアクセスキーシークレットキーを保存するためのAWS Configureの設定なので、画像は省略します)
mount-s3 rttc-vegas /マウントパス -profile [設定したprofile]
認証名が構成されたので権限ができたので、このコマンドを使ってS3バケットをマウントして、そのマウントディレクトリ内の内容を確認することができます。
MountPointの動作をみてみましょう、
まず、Mountpointでマウントする時、全てのファイルとディレクトリに対して権限と所有者を割り当てて、マウント後はバケットで変更することができません。
基本的にcentosユーザーにPOSIX write権限があるので、バケットに書き込み権限があると思うかもしれませんが、不可能で、POSIX権限とIAM Policy二つの組み合わせが必要です。
そのため、echoを使って単純にファイルを書こうとするとエラーが発生します。
4.メディアファイルの手動処理
R3Dファイルからメタデータを抽出し、MOVファイルからサムネイルを生成し、二つの方法でファイルを処理してみる段階です。本来、メタデータを抽出するために使用されるツールは、ほとんどファイルインターフェースを使用するため、S3のようなオブジェクトストレージでは動作しません。 しかし、S3 Mountpointを通じて解決が可能です。
REDカメラで撮影したRAWファイル(R3D)のメタデータを抽出、
アンリアルエンジンでレンダリングされたレンダリングメタデータを抽出します。
上記の2つのステップを経た後、抽出された一部のメタデータを通じてREDlineコマンドの出力で該当クリップのフレームの情報を確認した後、中間クリップのサムネイルを抽出します。
アンリアルエンジンのレンダリングサムネイルはffmpegコマンドでサムネイルを生成します。
5.アプリケーションサーバーの実行
Cloud9を通して、Codecommitにあるソースを取り込み、メディアブラウザアプリをフラスコを通して実行します。
このメディアブラウザアプリは、メディアS3バケットを見ていますが、ほとんどメタデータとか、プレビューが埋められないまま、下に降りてみると、1つか2つ程度しか実行されていません。
6.メディアブラウザ完成
上記のメディアブラウザアプリケーションを完成するため、サムネイルを生成して、メタデータを抽出します。あらかじめPython、JavaSciptで作成された基本コードを修正して配布してブラウザが動作するようにします。
(当該コードは提供されたコードで、後日ワークショップのリンクが分かれば共有させていただきます)
段階的に加工されていたソースを修正していきます。
空白の部分が多かった当該メディアブラウザアプリで、右側のクリップにメタデータ情報が表示され、元のカメラファイルに対するメタデータまで確認することができます。
また、ffmpegコマンドを通じてクリップの中間フレームでサムネイルを生成するためのソースコードを修正反映して最終的にメディアブラウザでサムネイルを確認することができます。
セッションを終えて
メディアワークロードに対する経験が少なく、部分的に理解しにくい部分がありましたが、それでもこのワークショップの目的であるS3用Mountpointの動作方法と、S3 Mount Pointをどのようなワークフローに適しているか、選択時の考慮事項について確実に知ることができるようになりました。
従来、goofysやS3FuseなどS3にマウントできる機能がありましたが、速度が遅かったり、問題があり使用しないことをお勧めしましたが、今回出てきたS3 mountpoint機能はたくさん使われそうで楽しみな機能です。