早いものでもう3月もおしまいですね。
年度末ですよ奥さん!
streampack の木村です。

去年の暮れの話ですが、ファイル削除に難がある MediaStore にライフサイクルポリシーが実装されました。
これにより指定した日数経過後に残ったファイル達を勝手に消去してくれます。

AWS Elemental MediaStore が削除ライフサイクルポリシーをサポート

https://aws.amazon.com/jp/about-aws/whats-new/2018/12/aws-elemental-mediastore-now-supports-delete-lifecycle-policies/

それでは早速コンテナ test1 配下のサブフォルダー destAdestB 配下のファイルを作成後24時間(1日)で消す設定を入れてみようと思います。

やり方

どうやらマネージメントコンソール上からは設定できない模様。
AWS CLI の MediaStore コマンドで実施します。

ただし、AWS CLI v2 はなぜか mediastore コマンドの put-lifecycle-policy が実装されておりません。(2019/3/19 現在)

$ aws --version
aws-cli/2.0.0dev0 Python/2.7.10 Darwin/17.7.0 botocore/1.12.48


MEDIASTORE()                                                      MEDIASTORE()



NAME
       mediastore -

DESCRIPTION
       An AWS Elemental MediaStore container is a namespace that holds folders
       and objects. You use a container endpoint to create, read,  and  delete
       objects.

AVAILABLE COMMANDS
       o create-container

       o delete-container

       o delete-container-policy

       o delete-cors-policy

       o describe-container

       o get-container-policy

       o get-cors-policy

       o help

       o list-containers

       o put-container-policy

       o put-cors-policy



                                                                  MEDIASTORE()

なので v1 (1.16.126) でやります!

Life Cycle Policy ファイル作成

ライフサイクルポリシーファイルをテキストで作成します。
ファイル名は何でも可。

LiveEventsLifecyclePolicy.json

{
    "rules": [
         {
            "definition": {
                "path": [
                    {"prefix": "destA/"},
                    {"prefix": "destB/"}
                ],
                "days_since_create": [
                    {"numeric": [">" , 1]}
                ]
            },
            "action": "EXPIRE"
        }
    ]
}

path で対象となるサブフォルダーを指定。
days_since_create で作成後から削除までの日数を指定します。
尚、単位となるので注意です。

mediastore コマンド

さてコマンドを叩きますよ。

削除ポリシー設定

put-lifecycle-policy オプションでポリシーを設定します。

aws mediastore put-lifecycle-policy --container-name test1 --lifecycle-policy file://LiveEventsLifecyclePolicy.json

--container-nametest1 を。

--lifecycle-policy で上で作ったファイル LiveEventsLifecyclePolicy.json を指定しています。

ここは各自の環境に応じてご変更下さい。

ポリシー確認

get-lifecycle-policy で現在コンテナに設定しているポリシーを確認します。

$ aws mediastore get-lifecycle-policy --container-name test1 --output text
{
    "rules": [
         {
            "definition": {
                "path": [
                    {"prefix": "destA/"},
                    {"prefix": "destB/"}
                ],
                "days_since_create": [
                    {"numeric": [">" , 1]}
                ]
            },
            "action": "EXPIRE"
        }
    ]
}

ちゃんと反映されていますね。

ポリシー削除

参考までにもしポリシーを消す場合は以下で削除可能です。

aws mediastore delete-lifecycle-policy --container-name test1

HLS ファイル作成

MediaLive から MediaStore にストリームを流し込んでみます。

1日経過後

そのまま翌日までほーちしてファイルがどうなったか確認します。

はい、綺麗さっぱり無くなりました!

また一つ便利な機能が追加されました。
欲を言えば時間単位で消せるようになると更に嬉しいところです。

元記事はこちら

AWS MediaStore ライフサイクルポリシーで要らんファイルはサヨウナラ