[アップデート] AWS Elemental MediaStoreでオブジェクト削除のライフサイクルポリシーが設定できるようになりました!

AWS Elemental MediaStoreでコンテナ、フォルダごとにライフサイクルポリシーが設定できるようになり、指定した保存期間に達すると自動でオブジェクトが削除されるようになりました。
2018.12.31

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

はじめに

清水です。AWS Media Servicesの細かなアップデートを追っていくコーナーです。本エントリで紹介するのはこちら、AWS Elemental MediaStoreでオブジェクトを削除するライフサイクルポリシーが設定できるようになりました。(2018/12/12にアップデートされた内容となります。)

メディア向けに最適化されたストレージサービスであり、Amazon S3よりも整合性の強いストレージでもあるAWS Elemental MediaStore、ライブ配信時のマニフェストファイル、セグメントファイルのストレージとして使用することが多いかと思います。ライブ配信終了後、ついつい使用したファイル(MediaStoreではオブジェクト)をそのままにしてしまったり、またマネージメントコンソールからファイル(オブジェクト)を削除するのにひと手間かかるのでそのまま放置してしまう…、なんてことはなかったでしょうか。(私はあります…) 今回のアップデートにより、AWS Elemental MediaStoreのコンテナ/フォルダごとにライフサイクルポリシーが設定できるようになり、指定した保存期間に達すると自動でファイル(オブジェクト)が削除されるようにうなりました。これで削除する手間も省け、またストレージコストの節約にもなりますね!

AWS Elemental MediaStoreにオブジェクト削除のライフサイクルポリシーを設定してみた

では実際にドキュメントを確認しながら、MediaStoreにライフサイクルポリシーを設定してみます。設定方法について、ドキュメントを確認する限り現在のところマネージメントコンソールからは行えず、AWS CLIで操作する必要があるようです。

確認に使用したAWS CLIは以下の環境となります。

$ aws --version
aws-cli/1.16.81 Python/3.6.5 Darwin/17.7.0 botocore/1.12.71

コンテナへのライフサイクルポリシーの設定

ライフサイクルポリシーを定義するファイルの準備

まずはライフサイクルポリシーをファイルにより定義します。ドキュメントを参考に記載しましょう。

今回はコンテナ全体を対象とし、作成から14日を経過したオブジェクトを削除するルールとしました。

 $ cat MediaStoreLifeCyclePolicy.json
{
    "rules": [
         {
            "definition": {
                "path": [ { "prefix": "" } ],
                "days_since_create": [
                    {"numeric": [">" , 14]}
                ]
            },
            "action": "EXPIRE"
        }
    ]
}

AWS CLIでコンテナにライフサイクルポリシーを設定

では実際にMediaStoreのコンテナにライフサイクルポリシーを設定します。AWS CLIのput-lifecycle-policyコマンドを使用します。

$ aws mediastore put-lifecycle-policy \
    --container-name TokyoContainer \
    --lifecycle-policy file://MediaStoreLifeCyclePolicy.json

設定したライフサイクルポリシーの確認

設定後、コマンドの返り値などはありません。きちんと設定できたか確認してみましょう。AWC CLIのget-lifecycle-policyコマンドを使用します。

 $ aws mediastore get-lifecycle-policy --container-name TokyoContainer
{
    "LifecyclePolicy": "{        \n    \"rules\": [\n         {\n            \"definition\": {\n                \"path\": [ { \"prefix\": \"\" } ],\n                \"days_since_create\": [\n                    {\"numeric\": [\">\" , 14]}\n                ]\n            },\n            \"action\": \"EXPIRE\"\n        }\n    ]\n}\n\n"
}

設定したライフサイクルポリシーの削除

ライフサイクルポリシーの削除についても確認してみます。AWS CLIのdelete-lifecycle-policyコマンドを使用します。

$ aws mediastore delete-lifecycle-policy --container-name TokyoContainer

削除コマンドについても返り値がありませんので、実行後にget-lifecycle-policyコマンドで状態を確認します。

$ aws mediastore get-lifecycle-policy --container-name TokyoContainer

An error occurred (PolicyNotFoundException) when calling the GetLifecyclePolicy operation: No policy found.

ライフサイクルポリシーが削除されていますね!

まとめ

AWS Elemental MediaStoreの新機能、オブジェクト削除のライフサイクルポリシー設定について実際に設定しながら確認してみました。AWC CLIからの設定になりますが、Amazon S3のライフサイクルポリシーと同様の操作感で設定ができた印象です。また今回は試していませんが、コンテナ内のフォルダごと別々に保存期間の設定も可能です。AWS Elemental MediaStoreのライフサイクルポリシーを上手に活用して、きちんとオブジェクトを管理していきましょう。引き続きAWS MediaStoreをはじめとしたAWS Media Servicesの機能アップデートに注目していきたいと思います!