次のサンプルコードは、一般的なプログラミング言語の OSS SDK を使用してライフサイクルルールを構成する方法の例を示しています。 他のプログラミング言語の OSS SDK を使用してライフサイクルルールを構成するためのサンプルコードの詳細については、「概要」をご参照ください。
Java
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.common.utils.DateUtil;
import com.aliyun.oss.model.LifecycleRule;
import com.aliyun.oss.model.SetBucketLifecycleRequest;
import com.aliyun.oss.model.StorageClass;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Demo {
public static void main(String[] args) throws Exception {
// この例では、中国(杭州)リージョンのエンドポイントが使用されています。 実際のエンドポイントを指定してください。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// バケットの名前を指定します。 例:examplebucket。
String bucketName = "examplebucket";
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国(杭州)リージョンにある場合、リージョンを cn-hangzhou に設定します。
String region = "cn-hangzhou";
// OSSClient インスタンスを作成します。
// OSSClient が不要になったら、shutdown メソッドを呼び出してリソースを解放します。
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// SetBucketLifecycleRequest を使用してリクエストを作成します。
SetBucketLifecycleRequest request = new SetBucketLifecycleRequest(bucketName);
// ライフサイクルルールの ID を指定します。
String ruleId0 = "rule0";
// ライフサイクルルールを一致させるプレフィックスを指定します。
String matchPrefix0 = "A0/";
// ライフサイクルルールを一致させるタグを指定します。
Map<String, String> matchTags0 = new HashMap<String, String>();
// タグのキーと値を指定します。 この例では、キーは owner に設定され、値は John に設定されています。
matchTags0.put("owner", "John");
String ruleId1 = "rule1";
String matchPrefix1 = "A1/";
Map<String, String> matchTags1 = new HashMap<String, String>();
matchTags1.put("type", "document");
String ruleId2 = "rule2";
String matchPrefix2 = "A2/";
String ruleId3 = "rule3";
String matchPrefix3 = "A3/";
String ruleId4 = "rule4";
String matchPrefix4 = "A4/";
String ruleId5 = "rule5";
String matchPrefix5 = "A5/";
String ruleId6 = "rule6";
String matchPrefix6 = "A6/";
// 最終変更時刻から 3 日後に有効期限を設定します。
LifecycleRule rule = new LifecycleRule(ruleId0, matchPrefix0, LifecycleRule.RuleStatus.Enabled, 3);
rule.setTags(matchTags0);
request.AddLifecycleRule(rule);
// 指定した日付より前に作成されたオブジェクトの期限が切れるように指定します。
rule = new LifecycleRule(ruleId1, matchPrefix1, LifecycleRule.RuleStatus.Enabled);
rule.setCreatedBeforeDate(DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z"));
rule.setTags(matchTags1);
request.AddLifecycleRule(rule);
// 最終変更時刻から 3 日後にパートの期限が切れるように指定します。
rule = new LifecycleRule(ruleId2, matchPrefix2, LifecycleRule.RuleStatus.Enabled);
LifecycleRule.AbortMultipartUpload abortMultipartUpload = new LifecycleRule.AbortMultipartUpload();
abortMultipartUpload.setExpirationDays(3);
rule.setAbortMultipartUpload(abortMultipartUpload);
request.AddLifecycleRule(rule);
// 特定の日付より前に作成されたパートの期限が切れるように指定します。
rule = new LifecycleRule(ruleId3, matchPrefix3, LifecycleRule.RuleStatus.Enabled);
abortMultipartUpload = new LifecycleRule.AbortMultipartUpload();
abortMultipartUpload.setCreatedBeforeDate(DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z"));
rule.setAbortMultipartUpload(abortMultipartUpload);
request.AddLifecycleRule(rule);
// オブジェクトのストレージクラスが、最終変更時刻から 10 日後に IA に変更され、最終変更時刻から 30 日後にアーカイブに変更されるように指定します。
rule = new LifecycleRule(ruleId4, matchPrefix4, LifecycleRule.RuleStatus.Enabled);
List<LifecycleRule.StorageTransition> storageTransitions = new ArrayList<LifecycleRule.StorageTransition>();
LifecycleRule.StorageTransition storageTransition = new LifecycleRule.StorageTransition();
storageTransition.setStorageClass(StorageClass.IA);
storageTransition.setExpirationDays(10);
storageTransitions.add(storageTransition);
storageTransition = new LifecycleRule.StorageTransition();
storageTransition.setStorageClass(StorageClass.Archive);
storageTransition.setExpirationDays(30);
storageTransitions.add(storageTransition);
rule.setStorageTransition(storageTransitions);
request.AddLifecycleRule(rule);
// 2022 年 10 月 12 日より前に最後に変更されたオブジェクトのストレージクラスがアーカイブに変更されるように指定します。
rule = new LifecycleRule(ruleId5, matchPrefix5, LifecycleRule.RuleStatus.Enabled);
storageTransitions = new ArrayList<LifecycleRule.StorageTransition>();
storageTransition = new LifecycleRule.StorageTransition();
storageTransition.setCreatedBeforeDate(DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z"));
storageTransition.setStorageClass(StorageClass.Archive);
storageTransitions.add(storageTransition);
rule.setStorageTransition(storageTransitions);
request.AddLifecycleRule(rule);
// rule6 がバージョン管理対応バケット用に構成されていることを指定します。
rule = new LifecycleRule(ruleId6, matchPrefix6, LifecycleRule.RuleStatus.Enabled);
// オブジェクトのストレージクラスが、最終変更時刻から 365 日後にアーカイブに変更されるように指定します。
storageTransitions = new ArrayList<LifecycleRule.StorageTransition>();
storageTransition = new LifecycleRule.StorageTransition();
storageTransition.setStorageClass(StorageClass.Archive);
storageTransition.setExpirationDays(365);
storageTransitions.add(storageTransition);
rule.setStorageTransition(storageTransitions);
// 期限切れの削除マーカーを自動的に削除するようにライフサイクルルールを構成します。
rule.setExpiredDeleteMarker(true);
// オブジェクトの以前のバージョンのストレージクラスが、最終変更時刻から 10 日後に IA に変更されるように指定します。
LifecycleRule.NoncurrentVersionStorageTransition noncurrentVersionStorageTransition =
new LifecycleRule.NoncurrentVersionStorageTransition().withNoncurrentDays(10).withStrorageClass(StorageClass.IA);
// オブジェクトの以前のバージョンのストレージクラスが、最終変更時刻から 20 日後にアーカイブに変更されるように指定します。
LifecycleRule.NoncurrentVersionStorageTransition noncurrentVersionStorageTransition2 =
new LifecycleRule.NoncurrentVersionStorageTransition().withNoncurrentDays(20).withStrorageClass(StorageClass.Archive);
// オブジェクトの以前のバージョンが、最終変更時刻から 30 日後に削除されるように指定します。
LifecycleRule.NoncurrentVersionExpiration noncurrentVersionExpiration = new LifecycleRule.NoncurrentVersionExpiration().withNoncurrentDays(30);
List<LifecycleRule.NoncurrentVersionStorageTransition> noncurrentVersionStorageTransitions = new ArrayList<LifecycleRule.NoncurrentVersionStorageTransition>();
noncurrentVersionStorageTransitions.add(noncurrentVersionStorageTransition2);
rule.setStorageTransition(storageTransitions);
rule.setNoncurrentVersionExpiration(noncurrentVersionExpiration);
rule.setNoncurrentVersionStorageTransitions(noncurrentVersionStorageTransitions);
request.AddLifecycleRule(rule);
// ライフサイクルルールを構成するリクエストを開始します。
ossClient.setBucketLifecycle(request);
// バケットに構成されているライフサイクルルールをクエリします。
List<LifecycleRule> listRules = ossClient.getBucketLifecycle(bucketName);
for(LifecycleRule rules : listRules){
System.out.println("ruleId="+rules.getId()+", matchPrefix="+rules.getPrefix());
}
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
PHP
<?php
// 依存関係を読み込むために autoload ファイルを含めます
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
use AlibabaCloud\Oss\V2\Models\LifecycleConfiguration;
// コマンドラインパラメーターの説明を指定します
$optsdesc = [
"region" => ['help' => 'バケットが配置されているリージョン', 'required' => True], // (必須)バケットが配置されているリージョンを指定します。
"endpoint" => ['help' => '他のサービスが OSS にアクセスするために使用できるドメイン名', 'required' => False], // (オプション)他のサービスが OSS にアクセスするために使用できるエンドポイントを指定します。
"bucket" => ['help' => 'バケットの名前', 'required' => True], // (必須)バケットの名前を指定します。
];
// コマンドラインパラメーターを解析するための長いオプションのリストを生成します
$longopts = \array_map(function ($key) {
return "$key:"; // 各パラメーターの後にコロンを追加して、値が必要であることを示します
}, array_keys($optsdesc));
// コマンドラインパラメーターを解析します
$options = getopt("", $longopts);
// 必須パラメーターが欠落しているかどうかを確認します
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help'];
echo "Error: the following arguments are required: --$key, $help"; // 欠落している必須パラメーターをユーザーに求めます
exit(1);
}
}
// コマンドラインパラメーターの値を取得します
$region = $options["region"]; // バケットが配置されているリージョン
$bucket = $options["bucket"]; // バケットの名前
// 環境変数を使用して AccessKey ID と AccessKey シークレットを読み込みます
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// SDK のデフォルト構成を使用します
$cfg = Oss\Config::loadDefault();
// 認証情報プロバイダーを指定します
$cfg->setCredentialsProvider($credentialsProvider);
// リージョンを指定します
$cfg->setRegion($region);
// エンドポイントが提供されている場合はエンドポイントを指定します
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]);
}
// OSSClient インスタンスを作成します
$client = new Oss\Client($cfg);
// 名前に log/ プレフィックスが含まれるオブジェクトを 30 日後に IA ストレージクラスに変換するライフサイクルルールを定義します
$lifecycleRule = new Oss\Models\LifecycleRule(
prefix: 'log/', // オブジェクトのプレフィックス
transitions: array(
new Oss\Models\LifecycleRuleTransition(
days: 30, // 変換時間は 30 日です
storageClass: 'IA' // ターゲットストレージクラスは IA です
)
),
id: 'rule', // ルールの ID
status: 'Enabled' // ルールのステータスは有効です
);
// ライフサイクル構成オブジェクトを作成し、ライフサイクルルールを追加します
$lifecycleConfiguration = new LifecycleConfiguration(
rules: array($lifecycleRule)
);
// バケットのライフサイクルを設定するためのリクエストオブジェクトを作成し、ライフサイクル構成を渡します
$request = new Oss\Models\PutBucketLifecycleRequest(
bucket: $bucket,
lifecycleConfiguration: $lifecycleConfiguration
);
// putBucketLifecycle メソッドを呼び出して、バケットのライフサイクルルールを設定します
$result = $client->putBucketLifecycle($request);
// 返された結果を表示します
printf(
'status code:' . $result->statusCode . PHP_EOL . // HTTP レスポンスステータスコード
'request id:' . $result->requestId . PHP_EOL // リクエストの一意の識別子
);
Node.js
const OSS = require('ali-oss')
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国(杭州)リージョンにある場合、リージョンを oss-cn-hangzhou に設定します。
region: 'yourregion',
// 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// バケットの名前を指定します。
bucket: 'yourbucketname'
});
async function putBucketLifecycle(lifecycle) {
try {
const result = await client.putBucketLifecycle('yourbucketname', [
lifecycle
]);
console.log(result);
} catch (e) {
console.log(e);
}
}
const lifecycle1 = {
id: 'rule1',
status: 'Enabled',
prefix: 'foo/',
expiration: {
// オブジェクトの最終変更時刻から 3 日後にオブジェクトの現在のバージョンが期限切れになるように指定します。
days: 3
}
}
putBucketLifecycle(lifecycle1)
const lifecycle2 = {
id: 'rule2',
status: 'Enabled',
prefix: 'foo/',
expiration: {
// 指定した日付より前に作成されたオブジェクトの期限が切れるように指定します。
createdBeforeDate: '2020-02-18T00:00:00.000Z'
},
}
putBucketLifecycle(lifecycle2)
const lifecycle3 = {
id: 'rule3',
status: 'Enabled',
prefix: 'foo/',
abortMultipartUpload: {
// 3 日でパートの期限が切れるように指定します。
days: 3
},
}
putBucketLifecycle(lifecycle3)
const lifecycle4 = {
id: 'rule4',
status: 'Enabled',
prefix: 'foo/',
abortMultipartUpload: {
// 指定した日付より前に作成されたパートの期限が切れるように指定します。
createdBeforeDate: '2020-02-18T00:00:00.000Z'
},
}
putBucketLifecycle(lifecycle4)
const lifecycle5 = {
id: 'rule5',
status: 'Enabled',
prefix: 'foo/',
transition: {
// オブジェクトの現在のバージョンのストレージクラスが、最終変更時刻から 20 日後にアーカイブに変更されるように指定します。
days: 20,
storageClass: 'Archive'
},
expiration: {
// オブジェクトの最終変更時刻から 21 日後にオブジェクトの現在のバージョンが期限切れになるように指定します。
days: 21
},
}
putBucketLifecycle(lifecycle5)
const lifecycle6 = {
id: 'rule6',
status: 'Enabled',
prefix: 'foo/',
transition: {
//指定した日付より前に作成されたオブジェクトのストレージクラスがアーカイブに変更されるように指定します。
createdBeforeDate: '2023-02-19T00:00:00.000Z',
storageClass: 'Archive'
},
expiration: {
// 指定した日付より前に作成されたオブジェクトが削除されるように指定します。
createdBeforeDate: '2023-01-18T00:00:00.000Z'
},
}
putBucketLifecycle(lifecycle6)
const lifecycle7 = {
id: 'rule7',
status: 'Enabled',
prefix: 'foo/',
expiration: {
// 削除マーカーが期限切れになると自動的に削除されるように指定します。
expiredObjectDeleteMarker: true
}
}
putBucketLifecycle(lifecycle7)
const lifecycle8 = {
id: 'rule8',
status: 'Enabled',
prefix: 'foo/',
// オブジェクトの以前のバージョンのストレージクラスが、最終変更時刻から 10 日後に IA に変更されるように指定します。
noncurrentVersionTransition: {
noncurrentDays: '10',
storageClass: 'IA'
}
}
putBucketLifecycle(lifecycle8)
const lifecycle9 = {
id: 'rule9',
status: 'Enabled',
prefix: 'foo/',
// オブジェクトの以前のバージョンのストレージクラスが、最終変更時刻から 10 日後に IA に変更されるように指定します。
noncurrentVersionTransition: {
noncurrentDays: '10',
storageClass: 'IA'
},
// ルールを一致させたいオブジェクトのタグを指定します。
tag: [{
key: 'key1',
value: 'value1'
},
{
key: 'key2',
value: 'value2'
}]
}
putBucketLifecycle(lifecycle9)
Python
import argparse
import datetime
import alibabacloud_oss_v2 as oss
# ユーザー入力パラメーターを受け取るコマンドライン引数パーサーを作成します
parser = argparse.ArgumentParser(description="put bucket lifecycle sample")
# コマンドラインパラメーター --region を追加します。これは、バケットが配置されているリージョンを示し、必須です
parser.add_argument('--region', help='バケットが配置されているリージョン。', required=True)
# コマンドラインパラメーター --bucket を追加します。これは、バケットの名前を示し、必須です
parser.add_argument('--bucket', help='バケットの名前。', required=True)
# コマンドラインパラメーター --endpoint を追加します。これは、他のサービスが OSS にアクセスするために使用するドメイン名を示し、オプションです
parser.add_argument('--endpoint', help='他のサービスが OSS にアクセスするために使用できるドメイン名')
def main():
# コマンドラインパラメーターを解析します
args = parser.parse_args()
# 環境変数から認証情報(AccessKeyId と AccessKeySecret)を読み込みます
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# SDK のデフォルト構成を読み込みます
cfg = oss.config.load_default()
# 認証情報プロバイダーを設定します
cfg.credentials_provider = credentials_provider
# バケットが配置されているリージョンを設定します
cfg.region = args.region
# ユーザーがカスタムエンドポイントを提供する場合は、構成に設定します
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# 構成オブジェクトを使用して OSS クライアントを初期化します
client = oss.Client(cfg)
result = client.put_bucket_lifecycle(oss.PutBucketLifecycleRequest(
bucket=args.bucket,
lifecycle_configuration=oss.LifecycleConfiguration(
rules=[oss.LifecycleRule(
# ライフサイクルルール rule1 を指定します。ルールは、プレフィックス foo、タグキー k1、タグ値 v1 を持つファイルが、最終変更時刻から 30 日後に IA ストレージクラスに変換されることを指定します
id='rule1',
status='Enabled',
prefix='foo/',
transitions=[oss.LifecycleRuleTransition(
days=30,
storage_class=oss.StorageClassType.IA,
is_access_time=False, # false に設定、最終変更時刻ポリシーに基づきます
)],
tags=[oss.Tag(
key='k1',
value='v1',
)],
), oss.LifecycleRule(
# ライフサイクルルール rule2 を指定します。ルールは、プレフィックス dir を持つオブジェクトが、バージョン管理下のオブジェクトに削除マーカーのみがある場合に削除マーカーを自動的に削除し、非現行バージョンのオブジェクトが 30 日後に期限切れになり削除され、非現行バージョンのオブジェクトが 10 日後に IA ストレージクラスに変換されることを指定します
id='rule2',
status='Enabled',
prefix='dir/',
expiration=oss.LifecycleRuleExpiration(
days=10,
expired_object_delete_marker=True
),
noncurrent_version_expiration=oss.NoncurrentVersionExpiration(
noncurrent_days=30,
),
noncurrent_version_transition=oss.NoncurrentVersionTransition(
noncurrent_days=10,
storage_class=oss.StorageClassType.IA,
is_access_time=False, # false に設定、最終変更時刻ポリシーに基づきます
),
)]
),
))
# 操作結果のステータスコードとリクエスト ID を出力します
print(f'status code: {result.status_code}, ' # HTTP ステータスコード。リクエストが成功したかどうかを示します
f'request id: {result.request_id}') # リクエスト ID。リクエストログの追跡とデバッグに使用されます
if __name__ == "__main__":
# プログラムエントリ。main 関数を呼び出してロジックを実行します
main()
C#
using Aliyun.OSS;
using Aliyun.OSS.Common;
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国(杭州)リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// バケット名を指定します。 例:examplebucket。
var bucketName = "examplebucket";
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国(杭州)リージョンにある場合、リージョンを cn-hangzhou に設定します。
const string region = "cn-hangzhou";
// ClientConfiguration インスタンスを作成し、要件に基づいてデフォルトパラメーターを変更します。
var conf = new ClientConfiguration();
// 署名アルゴリズム V4 を使用します。
conf.SignatureVersion = SignatureVersion.V4;
// OSSClient インスタンスを作成します。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
var setBucketLifecycleRequest = new SetBucketLifecycleRequest(bucketName);
// 最初のライフサイクルルールを作成します。
LifecycleRule lcr1 = new LifecycleRule()
{
ID = "delete obsoleted files",
Prefix = "obsoleted/",
Status = RuleStatus.Enabled,
ExpriationDays = 3,
Tags = new Tag[1]
};
// ルールのタグを指定します。
var tag1 = new Tag
{
Key = "project",
Value = "projectone"
};
lcr1.Tags[0] = tag1;
// 2 番目のライフサイクルルールを作成します。
LifecycleRule lcr2 = new LifecycleRule()
{
ID = "delete temporary files",
Prefix = "temporary/",
Status = RuleStatus.Enabled,
ExpriationDays = 20,
Tags = new Tag[1]
};
// ルールのタグを指定します。
var tag2 = new Tag
{
Key = "user",
Value = "jsmith"
};
lcr2.Tags[0] = tag2;
// 最終変更時刻から 30 日後にパートの期限が切れるように指定します。
lcr2.AbortMultipartUpload = new LifecycleRule.LifeCycleExpiration()
{
Days = 30
};
LifecycleRule lcr3 = new LifecycleRule();
lcr3.ID = "only NoncurrentVersionTransition";
lcr3.Prefix = "test1";
lcr3.Status = RuleStatus.Enabled;
lcr3.NoncurrentVersionTransitions = new LifecycleRule.LifeCycleNoncurrentVersionTransition[2]
{
// オブジェクトの以前のバージョンのストレージクラスが、最終変更時刻から 90 日後に IA に変換されるように指定します。
new LifecycleRule.LifeCycleNoncurrentVersionTransition(){
StorageClass = StorageClass.IA,
NoncurrentDays = 90
},
// オブジェクトの以前のバージョンのストレージクラスが、最終変更時刻から 180 日後にアーカイブに変換されるように指定します。
new LifecycleRule.LifeCycleNoncurrentVersionTransition(){
StorageClass = StorageClass.Archive,
NoncurrentDays = 180
}
};
setBucketLifecycleRequest.AddLifecycleRule(lcr1);
setBucketLifecycleRequest.AddLifecycleRule(lcr2);
setBucketLifecycleRequest.AddLifecycleRule(lcr3);
// ライフサイクルルールを構成します。
client.SetBucketLifecycle(setBucketLifecycleRequest);
Console.WriteLine("Set bucket:{0} Lifecycle succeeded ", bucketName);
}
catch (OssException ex)
{
Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
Console.WriteLine("Failed with error info: {0}", ex.Message);
}
Android-Java
PutBucketLifecycleRequest request = new PutBucketLifecycleRequest();
request.setBucketName("examplebucket");
BucketLifecycleRule rule1 = new BucketLifecycleRule();
// ルール ID と、ルールに一致するオブジェクトの名前に含まれるプレフィックスを指定します。
rule1.setIdentifier("1");
rule1.setPrefix("A");
// ライフサイクルルールを実行するかどうかを指定します。 このパラメーターを true に設定すると、OSS はこのルールを定期的に実行します。 このパラメーターを false に設定すると、OSS はこのルールを無視します。
rule1.setStatus(true);
// 最終変更時刻から 200 日後にオブジェクトの期限が切れるように指定します。
rule1.setDays("200");
// 最終変更時刻から 30 日後にオブジェクトのストレージクラスがアーカイブに変換されるように指定します。
// アップロードに失敗してから 3 日後にパートの期限が切れるように指定します。
rule1.setMultipartDays("3");
// 最終変更時刻から 15 日後にオブジェクトのストレージクラスが低頻度アクセス(IA)に変換されるように指定します。
rule1.setIADays("15");
BucketLifecycleRule rule2 = new BucketLifecycleRule();
rule2.setIdentifier("2");
rule2.setPrefix("B");
rule2.setStatus(true);
rule2.setDays("300");
rule2.setArchiveDays("30");
rule2.setMultipartDays("3");
rule2.setIADays("15");
ArrayList<BucketLifecycleRule> lifecycleRules = new ArrayList<BucketLifecycleRule>();
lifecycleRules.add(rule1);
lifecycleRules.add(rule2);
request.setLifecycleRules(lifecycleRules);
OSSAsyncTask task = oss.asyncPutBucketLifecycle(request, new OSSCompletedCallback<PutBucketLifecycleRequest, PutBucketLifecycleResult>() {
@Override
public void onSuccess(PutBucketLifecycleRequest request, PutBucketLifecycleResult result) {
OSSLog.logInfo("code::"+result.getStatusCode());
}
@Override
public void onFailure(PutBucketLifecycleRequest request, ClientException clientException, ServiceException serviceException) {
OSSLog.logError("error: "+serviceException.getRawMessage());
}
});
task.waitUntilFinished();
C++
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/* OSS へのアクセスに使用するアカウントに関する情報を初期化します。 */
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国(杭州)リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
std::string Endpoint = "yourEndpoint";
/* バケットが配置されているリージョンを指定します。 たとえば、バケットが中国(杭州)リージョンにある場合、リージョンを cn-hangzhou に設定します。 */
std::string Region = "yourRegion";
/* バケットの名前を指定します。 例:examplebucket。 */
std::string BucketName = "examplebucket";
/* ネットワークリソースなどのリソースを初期化します。 */
InitializeSdk();
ClientConfiguration conf;
conf.signatureVersion = SignatureVersionType::V4;
/* 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。 */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
client.SetRegion(Region);
SetBucketLifecycleRequest request(BucketName);
std::string date("2022-10-12T00:00:00.000Z");
/* ルールを一致させたいオブジェクトのタグを指定します。 */
Tagging tagging;
tagging.addTag(Tag("key1", "value1"));
tagging.addTag(Tag("key2", "value2"));
/* ライフサイクルルールを指定します。 */
auto rule1 = LifecycleRule();
rule1.setID("rule1");
rule1.setPrefix("test1/");
rule1.setStatus(RuleStatus::Enabled);
rule1.setExpiration(3);
rule1.setTags(tagging.Tags());
/* 有効期限を指定します。 */
auto rule2 = LifecycleRule();
rule2.setID("rule2");
rule2.setPrefix("test2/");
rule2.setStatus(RuleStatus::Disabled);
rule2.setExpiration(date);
/* バケットでバージョン管理が有効になっている場合、rule3 がバケットに対して有効になるように指定します。 */
auto rule3 = LifecycleRule();
rule3.setID("rule3");
rule3.setPrefix("test3/");
rule3.setStatus(RuleStatus::Disabled);
/* オブジェクトのストレージクラスが、最終変更時刻から 365 日後にアーカイブに変更されるように指定します。 */
auto transition = LifeCycleTransition();
transition.Expiration().setDays(365);
transition.setStorageClass(StorageClass::Archive);
rule3.addTransition(transition);
/* 期限切れの削除マーカーが自動的に削除されるように指定します。 */
rule3.setExpiredObjectDeleteMarker(true);
/* オブジェクトの以前のバージョンのストレージクラスが、最終変更時刻から 10 日後に IA に変更されるように指定します。 */
auto transition1 = LifeCycleTransition();
transition1.Expiration().setDays(10);
transition1.setStorageClass(StorageClass::IA);
/* オブジェクトの以前のバージョンのストレージクラスが、最終変更時刻から 20 日後にアーカイブに変更されるように指定します。 */
auto transition2 = LifeCycleTransition();
transition2.Expiration().setDays(20);
transition2.setStorageClass(StorageClass::Archive);
/* バージョンが更新されてから 30 日後に以前のバージョンが削除されるように指定します。 */
auto expiration = LifeCycleExpiration(30);
rule3.setNoncurrentVersionExpiration(expiration);
LifeCycleTransitionList noncurrentVersionStorageTransitions{transition1, transition2};
rule3.setNoncurrentVersionTransitionList(noncurrentVersionStorageTransitions);
/* ライフサイクルルールを構成します。 */
LifecycleRuleList list{rule1, rule2, rule3};
request.setLifecycleRules(list);
auto outcome = client.SetBucketLifecycle(request);
if (!outcome.isSuccess()) {
/* 例外を処理します。 */
std::cout << "SetBucketLifecycle fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/* ネットワークリソースなどのリソースを解放します。 */
ShutdownSdk();
return 0;
}
C
#include "oss_api.h"
#include "aos_http_io.h"
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国(杭州)リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
const char *endpoint = "yourEndpoint";
/* バケットの名前を指定します。 例:examplebucket。 */
const char *bucket_name = "examplebucket";
/* バケットが配置されているリージョンを指定します。 たとえば、バケットが中国(杭州)リージョンにある場合、リージョンを cn-hangzhou に設定します。 */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
options->config = oss_config_create(options->pool);
/* char* 文字列を使用して aos_string_t を初期化します。 */
aos_str_set(&options->config->endpoint, endpoint);
/* 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。 */
aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
// 2 つの追加パラメーターを指定します。
aos_str_set(&options->config->region, region);
options->config->signature_version = 4;
/* CNAME を使用して OSS にアクセスするかどうかを指定します。 値 0 は、CNAME が使用されていないことを示します。 */
options->config->is_cname = 0;
/* タイムアウト期間などのネットワークパラメーターを指定します。 */
options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
/* main() で aos_http_io_initialize メソッドを呼び出して、ネットワークリソースやメモリリソースなどのグローバルリソースを初期化します。 */
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
exit(1);
}
/* メモリを管理するためのメモリプールを作成します。 aos_pool_t は apr_pool_t と同等です。 メモリプールを作成するために使用されるコードは、APR ライブラリに含まれています。 */
aos_pool_t *pool;
/* メモリプールを作成します。 2 番目のパラメーターの値は NULL です。 この値は、プールが他のメモリプールを継承しないことを示します。 */
aos_pool_create(&pool, NULL);
/* オプションを作成して初期化します。 このパラメーターには、endpoint、access_key_id、access_key_secret、is_cname、curl などのグローバル構成情報が含まれています。 */
oss_request_options_t *oss_client_options;
/* メモリプール内のメモリリソースをオプションに割り当てます。 */
oss_client_options = oss_request_options_create(pool);
/* oss_client_options を初期化します。 */
init_options(oss_client_options);
/* パラメーターを初期化します。 */
aos_string_t bucket;
aos_table_t *resp_headers = NULL;
aos_status_t *resp_status = NULL;
aos_str_set(&bucket, bucket_name);
aos_list_t lifecycle_rule_list;
aos_str_set(&bucket, bucket_name);
aos_list_init(&lifecycle_rule_list);
/* 有効期間を指定します。 */
oss_lifecycle_rule_content_t *rule_content_days = oss_create_lifecycle_rule_content(pool);
aos_str_set(&rule_content_days->id, "rule-1");
/* ルールを一致させたいオブジェクトの名前に含まれるプレフィックスを指定します。 */
aos_str_set(&rule_content_days->prefix, "dir1");
aos_str_set(&rule_content_days->status, "Enabled");
rule_content_days->days = 3;
aos_list_add_tail(&rule_content_days->node, &lifecycle_rule_list);
/* 有効期限を指定します。 */
oss_lifecycle_rule_content_t *rule_content_date = oss_create_lifecycle_rule_content(pool);
aos_str_set(&rule_content_date->id, "rule-2");
aos_str_set(&rule_content_date->prefix, "dir2");
aos_str_set(&rule_content_date->status, "Enabled");
/* 有効期限は UTC で表示されます。 */
aos_str_set(&rule_content_date->date, "2023-10-11T00:00:00.000Z");
aos_list_add_tail(&rule_content_date->node, &lifecycle_rule_list);
/* ライフサイクルルールを構成します。 */
resp_status = oss_put_bucket_lifecycle(oss_client_options, &bucket, &lifecycle_rule_list, &resp_headers);
if (aos_status_is_ok(resp_status)) {
printf("put bucket lifecycle succeeded\n");
} else {
printf("put bucket lifecycle failed, code:%d, error_code:%s, error_msg:%s, request_id:%s\n",
resp_status->code, resp_status->error_code, resp_status->error_msg, resp_status->req_id);
}
/* メモリプールを解放して、リクエストに割り当てられたメモリリソースを解放します。 */
aos_pool_destroy(pool);
/* 割り当てられたグローバルリソースを解放します。 */
aos_http_io_deinitialize();
return 0;
}
Ruby
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# この例では、中国(杭州)リージョンのエンドポイントが使用されています。 実際のエンドポイントを指定してください。
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
# 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
access_key_id: ENV['OSS_ACCESS_KEY_ID'],
access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# バケット名を指定します。
bucket = client.get_bucket('examplebucket')
# ライフサイクルルールを構成します。
bucket.lifecycle = [
Aliyun::OSS::LifeCycleRule.new(
:id => 'rule1', :enable => true, :prefix => 'foo/', :expiry => 3),
Aliyun::OSS::LifeCycleRule.new(
:id => 'rule2', :enable => false, :prefix => 'bar/', :expiry => Date.new(2016, 1, 1))
]