3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-03-22

2019/11/7追記

2019/10 に seconds_since_create が追加された模様


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

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

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

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

スクリーンショット 2019-03-19 14.36.53.png

やり方

どうやらマネージメントコンソール上からは設定できない模様。
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 にストリームを流し込んでみます。

スクリーンショット 2019-03-19 16.10.53.png

1日経過後

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

スクリーンショット 2019-03-22 22.02.50.png

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

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

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?