Java
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.InitiateBucketWormRequest;
import com.aliyun.oss.model.InitiateBucketWormResult;
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 {
// InitiateBucketWormRequest オブジェクトを作成します。
InitiateBucketWormRequest initiateBucketWormRequest = new InitiateBucketWormRequest(bucketName);
// 保持期間を 1 日に設定します。
initiateBucketWormRequest.setRetentionPeriodInDays(1);
// 保持ポリシーを作成します。
InitiateBucketWormResult initiateBucketWormResult = ossClient.initiateBucketWorm(initiateBucketWormRequest);
// 保持ポリシーの ID を表示します。
String wormId = initiateBucketWormResult.getWormId();
System.out.println(wormId);
} 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
// オートローダーファイルをインポートして依存関係をロードします。
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// コマンドライン引数の説明を定義します。
$optsdesc = [
"region" => ['help' => 'The region in which the bucket is located', 'required' => True], // 必須。バケットが配置されているリージョン。
"endpoint" => ['help' => 'The domain names that other services can use to access OSS', 'required' => False], // 任意。他のサービスが OSS にアクセスするために使用できるドメイン名。
"bucket" => ['help' => 'The name of the bucket', '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 Secret などの認証情報を環境変数からロードします。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// ソフトウェア開発キット (SDK) のデフォルト設定を使用します。
$cfg = Oss\Config::loadDefault();
// 認証情報プロバイダーを設定します。
$cfg->setCredentialsProvider($credentialsProvider);
// リージョンを設定します。
$cfg->setRegion($region);
// エンドポイントが指定されている場合は、エンドポイントを設定します。
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]);
}
// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);
// バケットの保持ポリシーを初期化するためのリクエストオブジェクトを作成します。保持期間を 3 日に設定します。
$request = new Oss\Models\InitiateBucketWormRequest(
bucket: $bucket,
initiateWormConfiguration: new Oss\Models\InitiateWormConfiguration(
retentionPeriodInDays: 3 // 保持期間 (日数)。
));
// initiateBucketWorm メソッドを呼び出して、バケットの保持ポリシーを初期化します。
$result = $client->initiateBucketWorm($request);
// 返された結果を出力します。
printf(
'status code:' . $result->statusCode . PHP_EOL . // HTTP 応答のステータスコード。
'request id:' . $result->requestId . PHP_EOL . // リクエストの一意の ID。
'worm id:' . $result->wormId // 保持ポリシーの ID。
);
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 をご利用のバケット名に設定します。
bucket: 'yourBucketName',
});
// データ保持ポリシーを作成します。
async function initiateBucketWorm() {
// bucket をご利用のバケット名に設定します。
const bucket = 'yourbucketname'
// 保持期間を日数で指定します。
const days = '<Retention Days>'
const res = await client.initiateBucketWorm(bucket, days)
console.log(res.wormId)
}
initiateBucketWorm()
Python
import argparse
import alibabacloud_oss_v2 as oss
# コマンドライン引数パーサーを作成し、スクリプトの目的を説明します:このサンプルは、OSS バケットの WORM 設定を初期化する方法を示します。
parser = argparse.ArgumentParser(description="initiate bucket worm sample")
# --region コマンドライン引数を追加します。これはバケットのリージョンを指定するもので、必須です。
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
# --bucket コマンドライン引数を追加します。これはバケット名を指定するもので、必須です。
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
# --endpoint コマンドライン引数を追加します。これは他のサービスが OSS にアクセスするために使用できるドメイン名を指定するもので、任意です。
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
# --retention_period_in_days コマンドライン引数を追加します。これは保持期間を日数で指定するもので、必須です。
parser.add_argument('--retention_period_in_days', help='The number of days for which objects can be retained.', required=True)
def main():
# コマンドライン引数を解析して、ユーザーが指定した値を取得します。
args = parser.parse_args()
# ID 検証のために、環境変数から OSS のアクセス認証情報をロードします。
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 クライアントを初期化し、OSS と対話します。
client = oss.Client(cfg)
# 指定されたバケットの WORM 設定を初期化するリクエストを送信します。
result = client.initiate_bucket_worm(oss.InitiateBucketWormRequest(
bucket=args.bucket, # バケット名。
initiate_worm_configuration=oss.InitiateWormConfiguration(
retention_period_in_days=int(args.retention_period_in_days), # 保持期間 (日数)、整数に変換。
),
))
# 操作のステータスコード、リクエスト ID、WORM ID を出力して、リクエストの状態を確認します。
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
f' worm id: {result.worm_id}'
)
# このスクリプトが直接実行された場合、main 関数を呼び出して処理ロジックを開始します。
if __name__ == "__main__":
main() # スクリプトのエントリポイント、ここからプログラムのフローが開始されます。
Go
package main
import (
"log"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Error creating credentials provider: %v", err)
}
// OSSClient インスタンスを作成します。
// yourEndpoint をバケットのエンドポイントに設定します。たとえば、中国 (杭州) リージョンのバケットの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。他のリージョンについては、実際のエンドポイントを使用してください。
// yourRegion をバケットが配置されているリージョンに設定します。たとえば、中国 (杭州) リージョンのバケットの場合、リージョンを cn-hangzhou に設定します。他のリージョンについては、実際のリージョンを使用してください。
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// 署名バージョンを設定します。
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
log.Fatalf("Error creating OSS client: %v", err)
}
// 保持ポリシーを設定するバケットの名前を指定します。
bucketName := "<yourBucketName>"
// オブジェクトの保持期間を 60 日に設定します。
result, err := client.InitiateBucketWorm(bucketName, 60)
if err != nil {
log.Fatalf("Error initiating bucket WORM: %v", err)
}
log.Println("WORM policy initiated successfully:", result)
}
C++
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/* OSS アカウント情報を初期化します。 */
/* Endpoint をバケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、Endpoint を https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
std::string Endpoint = "yourEndpoint";
/* Region をバケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、Region を 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);
/* データ保持ポリシーを作成し、オブジェクトの保護期間を 1 日に設定します。 */
auto outcome = client.InitiateBucketWorm(InitiateBucketWormRequest(BucketName, 1));
if (outcome.isSuccess()) {
std::cout << " InitiateBucketWorm success " << std::endl;
std::cout << "WormId:" << outcome.result().WormId() << std::endl;
}
else {
/* 例外を処理します。 */
std::cout << "InitiateBucketWorm fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/* ネットワークなどのリソースを解放します。 */
ShutdownSdk();
return 0;
}