edit-icon download-icon

ライフサイクル管理

最終更新日: Jun 28, 2018

オブジェクトのライフサイクル管理

OSS & nbsp では、オブジェクト (ファイル) のライフサイクル管理によってオブジェクトを管理できます。バケットのライフサイクルを設定して、バケットのオブジェクト & nbsp のさまざまなルールを定義できます。現在、ユーザーはルールを使用して、一致するオブジェクトを削除できます。各ルールは、次の要素があります。

  • オブジェクト名のプレフィックス: このルールは、一致したプレフィックスが付加されたオブジェクトのみに適用されます。
  • 操作: 一致したオブジェクトに対してユーザーが実行する操作です。
  • 日付または日数: 指定した日付またはオブジェクトの最終変更日時から指定の日数後にオブジェクトで操作を実行します。

オブジェクト名のプレフィックスがルールのプレフィックスに一致すると、ルールがオブジェクトに適用されます。たとえば、バケットに次のオブジェクトがあったとします。

  1. logs/program.log.1
  2. logs/program.log.2
  3. logs/program.log.3
  4. doc/readme.txt
  • プレフィックスが logs/ であれば、プレフィックス logs/ が付加された最初の 3 つのオブジェクトにこのルールが適用されます。
  • プレフィックスが doc/readme.txt であれば、doc/readme.txt のみがルールに適用されます。

現在、ルールでは、”期限切れによる削除” が許可されています。たとえば、「プレフィックス logs/ が付加されたオブジェクトの最終更新日時が 30 日前の場合は、オブジェクトを削除する」というルールを設定できます。doc/readme.txt を削除する日付も指定できます。

オブジェクトが期限切れルールに一致すると、OSS は、GET Object リクエストまたは HEAD Object リクエストへと nbsp の応答に x-oss-expiration ヘッダーを含めます。このヘッダーには、キーと値の 2 つのペアが含まれます。expiry-date はオブジェクトの有効期限を示し、rule-id は一致したルール ID を示します。

OSSとNBSPのオープンインターフェイスを介してバケットのライフサイクル構成を設定できます。ライフサイクル設定は、XML 形式で提供されます。次に具体的な例を示します。

  1. <LifecycleConfiguration>
  2. <Rule>
  3. <ID>delete logs after 10 days</ID>
  4. <Prefix>logs/</Prefix>
  5. <Status>Enabled</Status>
  6. <Expiration>
  7. <Days>10</Days>
  8. </Expiration>
  9. </Rule>
  10. <Rule>
  11. <ID>delete doc</ID>
  12. <Prefix>doc/</Prefix>
  13. <Status>Disabled</Status>
  14. <Expiration>
  15. <CreatedBeforeDate>2014-12-31T00:00:00.000Z</CreatedBeforeDate>
  16. </Expiration>
  17. </Rule>
  18. </LifecycleConfiguration>

上記の例のすべての要素の説明は、次のとおりです。

  • ID: 各ルールの一意の ID。
  • Status: Enabled または Disabled。OSS では、Enabled のルールのみが使用されます。
  • Prefix: プレフィックスです。
  • Expiration: 操作の有効期限。下位要素 CreatedBeforeDateDays は、それぞれ絶対的な有効期限と相対的な有効期限を指定します。
    • CreatedBeforeDate は、最終変更日時が 2014-12-31T00:00:00.000Z よりも前のファイルが削除されることを示します。この日時よりも後に変更されたオブジェクトは削除されません。
    • Days は、最後の更新が 10 日以上前のファイルが削除されることを示します。

最初のルールでは、OSS は、プレフィックス logs/ が付加されている 10 日前に更新されたオブジェクトと nbsp を削除します。2 番目のルールは、プレフィックスが doc/ が付加され最終変更日が 2014 年 12 月 31 日よりも前のオブジェクトを削除すると指定していますが、ステータスが Disabled になっているため、このルールは有効になりません。

詳細分析:

  1. プレフィックスの命名規則は、オブジェクトの命名規則と同じです。
  2. プレフィックスが空の場合、ルールはバケットのすべてのオブジェクトに適用されます。
  3. ルールの各プレフィックスは一意である必要があります。たとえば、バケットにプレフィックスがそれぞれ logs/ と logs/program である 2 つのルールがある場合、OSS はエラーを返します。
  4. 特定の日付にオブジェクトを削除するようにルールを設定する場合、その日付は UTC 時刻の午前 00:00 時であり、ISO8601 形式に準拠している必要があります。たとえば、2014-01-01T00:00:00.000Z のようにします。上記の例では、2014 年 1 月 1 日午前 00:00 時になると、一致したオブジェクトが削除されます。
  5. ルールでオブジェクトと nbsp を削除するまでの日数が指定されている場合、OSS は指定された日数を最終更新日時 ([Last-Modified]) に加え、得られた日時を次の午前 00:00 時 (UTC 時刻) に丸めます。たとえば、オブジェクトの最終更新日時が 2014 年 4 月 12 日午前 01:00 時で、一致したルールで指定されている日数が 3 の場合、有効期限は 2014 年 4 月 16 日午前 00:00 時になります。
  6. OSS は、ルールに一致したオブジェクトを指定された日時に削除します。通常、オブジェクトは指定された日時の直後に削除されることに注意してください。通常、オブジェクトの最終更新日時はその作成日時と同じであることが多いです。オブジェクトが複数回 PUT 操作された場合、最終更新日時はオブジェクトが最後に PUT 操作された日時になります。オブジェクトが自身にコピーされた場合、最終更新日時はオブジェクトが最後にコピーされた日時になります。

リファレンス: