OSS を使用することにより、ストレージコストを削減するためのライフサイクルルールを設定します。 ライフサイクル管理ルールは、期限切れのオブジェクトやフラグメントの自動削除、あるいは期限切れになるオブジェクトのストレージクラスから低頻度アクセスへの変換に使用します。 各規則は次のとおりです。

  • ルール ID: ルールを識別します。 バケット内の各ルール ID が一意であることを確認します。
  • バケット内の各ルール ID が一意であることを確認します。 バケットに設定できるメソッドは 1 つだけです。
    • プレフィックスによる設定: この方法で複数のルールを作成できます。 各プレフィックスが一意であることを確認します。
    • バケット全体の設定: この方法で設定できるルールは 1 つだけです。
  • 期限切れ: 次の設定方法で設定できます。
    • 日数「N」の設定: オブジェクトの最終変更時刻からの「N」日後、オブジェクトは削除されます。
    • 日付による設定: オブジェクトが作成される前の日付を指定します。 オブジェクトがその日付より前に作成された場合、これらのオブジェクトは削除されます。
  • ステータス: このライフサイクルルールは有効か無効かを示します。

uploadPart メソッドによってアップロードされたパーツもライフサイクルルールをサポートします。 オブジェクトの最終変更時刻は、マルチパートアップロードイベントが開始された時刻です。

ライフサイクル管理の詳細については、「オブジェクトライフサイクルの管理」をご参照ください。 ライフサイクル管理の完全なコードについては、『GitHub』をご参照ください。

ライフサイクルルールの設定

次のコードを実行してライフサイクルルールを設定します。

package main

import (
	"fmt"
	 "os"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Create an OSSClient instance.
	client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// Lifecycle rule 1 (id: "rule1", enable:true, prefix:"foo/", expiry:Days 3), indicates that an object with the prefix foo expires three days after the last modified date.
	rule1 := oss.BuildLifecycleRuleByDays("rule1", "foo/", true, 3)
	rules := []oss.LifecycleRule{rule1}

	// Configure lifecycle rules.
	bucketName := "<yourBucketName>"
	err = client.SetBucketLifecycle(bucketName, rules)
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
}

ライフサイクルルールの表示

ライフサイクルルールを表示するには、次のコードを実行します。

package main

import (
	"fmt"
	"os"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Create an OSSClient instance.
	client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	bucketName := "<yourBucketName>"

	// View lifecycle rules.
	lcRes, err := client.GetBucketLifecycle(bucketName)
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	fmt.Println("Lifecycle Rules:", lcRes.Rules
}

ライフサイクルルールの解除

ライフサイクルルールを解除するには、次のコードを実行します。

package main

import (
	"fmt"
	"os"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Create an OSSClient instance.
	client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	bucketName := "<yourBucketName>"

	// ライフサイクルルールを解除します。
	err = client.DeleteBucketLifecycle(bucketName)
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}