share facebook facebook twitter menu hatena pocket slack

2019.04.08 MON

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

木村 智一

WRITTEN BY 木村 智一

早いものでもう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 ライフサイクルポリシーで要らんファイルはサヨウナラ

木村 智一

木村 智一

動画一筋! 犬と闘う streampack チームリーダー

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。