次のサンプルコードは、一般的なプログラミング言語用の OSS SDK を使用してバケットのインベントリを構成する方法の例を示しています。他のプログラミング言語用の OSS SDK を使用してバケットのインベントリを構成する方法の詳細については、「概要」をご参照ください。
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.ArrayList;
import java.util.List;
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";
// 生成されたインベントリリストを保存するバケットの名前を指定します。
String destBucketName ="yourDestinationBucketName";
// バケットオーナーによって付与されたアカウント ID を指定します。
String accountId ="yourDestinationBucketAccountId";
// インベントリを構成するバケット内のすべてのオブジェクトを読み取る権限と、生成されたインベントリリストを保存するバケットにデータを書き込む権限が付与されている RAM ロールの名前を指定します。
String roleArn ="yourDestinationBucketRoleArn";
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。
String region = "cn-hangzhou";
// OSS Client インスタンスを作成します。
// OSS Client が不要になったら、shutdown メソッドを呼び出して関連付けられているリソースを解放します。
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// インベントリを作成します。
InventoryConfiguration inventoryConfiguration = new InventoryConfiguration();
// インベントリ名を指定します。
String inventoryId = "testid";
inventoryConfiguration.setInventoryId(inventoryId);
// インベントリリストに含まれるオブジェクト属性を指定します。
List<String> fields = new ArrayList<String>();
fields.add(InventoryOptionalFields.Size);
fields.add(InventoryOptionalFields.LastModifiedDate);
fields.add(InventoryOptionalFields.IsMultipartUploaded);
fields.add(InventoryOptionalFields.StorageClass);
fields.add(InventoryOptionalFields.ETag);
fields.add(InventoryOptionalFields.EncryptionStatus);
inventoryConfiguration.setOptionalFields(fields);
// インベントリリストを毎日または毎週生成するかどうかを指定します。次のコードは、インベントリリストを毎週生成する方法の例を示しています。Weekly は、インベントリリストが週に 1 回生成されることを示し、Daily は、インベントリリストが 1 日に 1 回生成されることを示します。
inventoryConfiguration.setSchedule(new InventorySchedule().withFrequency(InventoryFrequency.Weekly));
// インベントリリストにオブジェクトの現在のバージョンのみを含めるように指定します。InventoryIncludedObjectVersions パラメータを All に設定すると、オブジェクトのすべてのバージョンがインベントリリストに含まれます。この構成は、バケットのバージョニングを有効にした場合にのみ有効になります。
inventoryConfiguration.setIncludedObjectVersions(InventoryIncludedObjectVersions.Current);
// インベントリを有効にするかどうかを指定します。有効値:true および false。インベントリを有効にするには、値を true に設定します。インベントリを無効にするには、値を false に設定します。
inventoryConfiguration.setEnabled(true);
// インベントリリストに含めるオブジェクトをフィルタリングするために使用されるルールを指定します。次のコードは、プレフィックスでオブジェクトをフィルタリングする方法の例を示しています。
InventoryFilter inventoryFilter = new InventoryFilter().withPrefix("obj-prefix");
inventoryConfiguration.setInventoryFilter(inventoryFilter);
// 生成されたインベントリリストを保存する宛先バケットを指定します。
InventoryOSSBucketDestination ossInvDest = new InventoryOSSBucketDestination();
// 生成されたインベントリリストを保存するパスのプレフィックスを指定します。
ossInvDest.setPrefix("destination-prefix");
// インベントリリストの形式を指定します。
ossInvDest.setFormat(InventoryFormat.CSV);
// 宛先バケットが属するアカウントの ID を指定します。
ossInvDest.setAccountId(accountId);
// 宛先バケットのロール ARN を指定します。
ossInvDest.setRoleArn(roleArn);
// 生成されたインベントリリストを保存する宛先バケットの名前を指定します。
ossInvDest.setBucket(destBucketName);
// 次のコードは、Key Management System (KMS) でホストされているカスタマーマスターキー (CMK) を使用してインベントリリストを暗号化する方法の例を示しています。
// InventoryEncryption inventoryEncryption = new InventoryEncryption();
// InventoryServerSideEncryptionKMS serverSideKmsEncryption = new InventoryServerSideEncryptionKMS().withKeyId("test-kms-id");
// inventoryEncryption.setServerSideKmsEncryption(serverSideKmsEncryption);
// ossInvDest.setEncryption(inventoryEncryption);
// 次のコードは、OSS サーバーでインベントリリストを暗号化する方法の例を示しています。
// InventoryEncryption inventoryEncryption = new InventoryEncryption();
// inventoryEncryption.setServerSideOssEncryption(new InventoryServerSideEncryptionOSS());
// ossInvDest.setEncryption(inventoryEncryption);
// 生成されたインベントリリストの宛先を指定します。
InventoryDestination destination = new InventoryDestination();
destination.setOssBucketDestination(ossInvDest);
inventoryConfiguration.setDestination(destination);
// バケットのインベントリを構成します。
ossClient.setBucketInventoryConfiguration(bucketName, inventoryConfiguration);
} 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();
}
}
}
}
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,
// バケットの名前を指定します。
bucket: 'yourbucketname'
});
const inventory = {
// インベントリの ID を指定します。
id: 'default',
// バケットのインベントリ機能を有効にするかどうかを指定します。有効値:true および false。
isEnabled: false,
// (オプション) インベントリリスト内のオブジェクトをフィルタリングするために使用される条件を指定します。次のサンプルコードは、プレフィックスでオブジェクトをフィルタリングする方法の例を示しています。
prefix: 'ttt',
OSSBucketDestination: {
// インベントリリストの形式を指定します。
format: 'CSV',
// インベントリストレージバケットが属する Alibaba Cloud アカウントの ID を指定します。
accountId: '<Your AccountId>',
// インベントリストレージバケットにアクセスするために使用される RAM ロールの名前を指定します。
rolename: 'AliyunOSSRole',
// インベントリストレージバケットの名前を指定します。
bucket: '<Your BucketName>',
// (オプション) 生成されたインベントリリストを保存するパスのプレフィックスを指定します。
prefix: '<Your Prefix>',
// 次のサンプルコードは、OSS マネージドキー (SSE-OSS) を使用してインベントリリストを暗号化する方法の例を示しています。
//encryption: {'SSE-OSS': ''},
// 次のサンプルコードは、KMS によって管理される CMK (SSE-KMS) を使用してインベントリリストを暗号化する方法の例を示しています。
/*
encryption: {
'SSE-KMS': {
keyId: 'test-kms-id',
};,
*/
},
// インベントリリストが生成される頻度を指定します。Weekly の値は、インベントリリストが毎週生成されることを指定します。Daily の値は、インベントリリストが毎日生成されることを指定します。
frequency: 'Daily',
// オブジェクトのすべてのバージョンがインベントリリストに含まれるように指定します。includedObjectVersions が Current に設定されている場合、オブジェクトの現在のバージョンのみがインベントリリストに含まれます。
includedObjectVersions: 'All',
optionalFields: {
// (オプション) インベントリリストに含めるオブジェクト属性を指定します。
field: ["Size", "LastModifiedDate", "ETag", "StorageClass", "IsMultipartUploaded", "EncryptionStatus"]
},
}
async function putInventory(){
// インベントリを構成するバケットの名前を指定します。
const bucket = '<Your BucketName>';
try {
await client.putBucketInventory(bucket, inventory);
console.log('インベントリが構成されました。')
} catch(err) {
console.log('インベントリの構成に失敗しました:', err);
}
}
putInventory()
import argparse
import alibabacloud_oss_v2 as oss
# コマンドラインパラメータパーサーを作成し、スクリプトの目的を記述します。この例では、バケットのインベントリを作成する方法について説明します。
parser = argparse.ArgumentParser(description="put bucket inventory sample")
# コマンドラインパラメータを指定します。必須パラメータには、リージョン、バケット名、エンドポイント、ユーザーID、RAM ロールのAlibaba Cloud Resource Name(ARN)、およびインベントリ名が含まれます。
parser.add_argument('--region', help='バケットが配置されているリージョン。', required=True)
parser.add_argument('--bucket', help='バケットの名前。', required=True)
parser.add_argument('--endpoint', help='他のサービスが OSS にアクセスするために使用できるドメイン名')
parser.add_argument('--user_id', help='ユーザーアカウント ID。', required=True)
parser.add_argument('--arn', help='ソースバケットからすべてのオブジェクトを読み取り、デスティネーションバケットにオブジェクトを書き込む権限を持つロールのAlibaba Cloud Resource Name(ARN)。形式: `acs:ram::uid:role/rolename`。', required=True)
parser.add_argument('--inventory_id', help='インベントリの名前。', required=True)
def main():
# コマンドラインパラメータを解析して、ユーザーが指定した値を取得します。
args = parser.parse_args()
# 認証のために環境変数からアクセス認証情報を取得します。
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
# 前述の構成を使用して OSSClient インスタンスを初期化し、インスタンスが OSS と対話できるようにします。
client = oss.Client(cfg)
# バケットのインベントリを作成するリクエストを送信します。
result = client.put_bucket_inventory(oss.PutBucketInventoryRequest(
bucket=args.bucket, # バケットの名前。
inventory_id=args.inventory_id, # インベントリの ID。
inventory_configuration=oss.InventoryConfiguration(
included_object_versions='All', # インベントリリストにすべてのバージョンのオブジェクトを含めるように指定します。
optional_fields=oss.OptionalFields(
fields=[ # オプションフィールド。たとえば、オブジェクトのサイズや最終変更時刻などです。
oss.InventoryOptionalFieldType.SIZE,
oss.InventoryOptionalFieldType.LAST_MODIFIED_DATE,
],
),
id=args.inventory_id, # インベントリの ID。
is_enabled=True, # バケットのインベントリ機能を有効にするかどうかを指定します。この例では、インベントリ機能は有効になっています。
destination=oss.InventoryDestination(
oss_bucket_destination=oss.InventoryOSSBucketDestination(
format=oss. InventoryFormatType.CSV, # インベントリリストの出力形式が CSV であることを指定します。
account_id=args.user_id, # ユーザーのアカウント ID。
role_arn=args.arn, # ソースバケット内のオブジェクトを読み取り、デスティネーションバケットにオブジェクトを書き込む権限を持つ RAM ロールの ARN。
bucket=f'acs:oss:::{args.bucket}', # デスティネーションバケットの名前。
prefix='aaa', # インベントリリストに含めるオブジェクトの名前に含まれるプレフィックスを指定します。
),
),
schedule=oss.InventorySchedule(
frequency=oss. InventoryFrequencyType.DAILY, # インベントリリストを毎日または毎週生成するかどうかを指定します。この例では、インベントリリストは毎日生成されます。
),
filter=oss.InventoryFilter(
lower_size_bound=1024, # インベントリリストに含めるオブジェクトの最小サイズを指定します。単位: バイト。
upper_size_bound=1048576, # インベントリリストに含めるオブジェクトの最大サイズを指定します。単位: バイト。
storage_class='ColdArchive', # インベントリリストに含めるオブジェクトのストレージクラスを指定します。
prefix='aaa', # インベントリをフィルタリングするために使用されるプレフィックスを指定します。
last_modify_begin_time_stamp=1637883649, # オブジェクトが最後に変更された時間範囲の開始を指定します。
last_modify_end_time_stamp=1638347592, # オブジェクトが最後に変更された時間範囲の終了を指定します。
),
),
))
# 操作の HTTP ステータスコードとリクエスト ID を表示して、リクエストの状態を確認します。
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
)
# スクリプトが直接実行されたときに処理ロジックを開始するために、main 関数を呼び出します。
if __name__ == "__main__":
main() # スクリプトの関数のエントリポイントを指定します。制御プログラムフローはここから開始されます。
using Aliyun.OSS;
using Aliyun.OSS.Common;
// バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
var endpoint = "yourEndpoint";
// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// バケットの名前を指定します。
var bucketName = "examplebucket";
// バケット所有者によって付与されたアカウント ID を指定します。
var accountId ="yourDestinationBucketAccountId";
// 在庫を設定するバケット内のすべてのオブジェクトを読み取る権限と、生成された在庫リストを保存するバケットにデータを書き込む権限が付与されている RAM ロールの名前を指定します。
var roleArn ="yourDestinationBucketRoleArn";
// 生成された在庫リストを保存するバケットの名前を指定します。
var destBucketName ="yourDestinationBucketName";
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを 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 config = new InventoryConfiguration();
// 在庫の名前を指定します。
config.Id = "report1";
// バケットの在庫を有効にするかどうかを指定します。有効な値: true および false。このパラメーターを true に設定すると、在庫が有効になります。
config.IsEnabled = true;
// 在庫リストに含まれるオブジェクトをフィルタリングするために使用されるルールを指定します。次のコードは、プレフィックスでオブジェクトをフィルタリングする方法の例を示しています。
config.Filter = new InventoryFilter("filterPrefix");
// 生成された在庫リストを保存するバケットを構成します。
config.Destination = new InventoryDestination();
config.Destination.OSSBucketDestination = new InventoryOSSBucketDestination();
// 在庫リストのフォーマットを指定します。
config.Destination.OSSBucketDestination.Format = InventoryFormat.CSV;
// 保存先バケットが属するアカウントの ID を指定します。
config.Destination.OSSBucketDestination.AccountId = accountId;
// 保存先バケットにアクセスするために使用される RAM ロールの Alibaba Cloud Resource Name (ARN) を指定します。
config.Destination.OSSBucketDestination.RoleArn = roleArn;
// 生成された在庫リストを保存するバケットの名前を指定します。
config.Destination.OSSBucketDestination.Bucket = destBucketName;
// 生成された在庫リストを保存するパスのプレフィックスを指定します。
config.Destination.OSSBucketDestination.Prefix = "prefix1";
// 在庫リストを毎日または毎週生成するかどうかを指定します。次のコードは、在庫リストを毎日生成する方法の例を示しています。Weekly の値は、在庫リストが毎週生成されることを示します。Daily の値は、在庫リストが毎日生成されることを示します。
config.Schedule = new InventorySchedule(InventoryFrequency.Daily);
// 在庫リストにオブジェクトの現在のバージョンのみを含めるように指定します。InventoryIncludedObjectVersions パラメーターを All に設定すると、オブジェクトのすべてのバージョンが在庫リストに含まれます。この構成は、バケットでバージョン管理が有効になっている場合にのみ有効になります。
config.IncludedObjectVersions = InventoryIncludedObjectVersions.All;
// 在庫リストに含まれるオブジェクト属性を指定します。
config.OptionalFields.Add(InventoryOptionalField.Size);
config.OptionalFields.Add(InventoryOptionalField.LastModifiedDate);
config.OptionalFields.Add(InventoryOptionalField.StorageClass);
config.OptionalFields.Add(InventoryOptionalField.IsMultipartUploaded);
config.OptionalFields.Add(InventoryOptionalField.EncryptionStatus);
config.OptionalFields.Add(InventoryOptionalField.ETag);
var req = new SetBucketInventoryConfigurationRequest(bucketName, config);
client.SetBucketInventoryConfiguration(req);
Console.WriteLine("Set bucket:{0} InventoryConfiguration 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);
}
#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);
InventoryConfiguration inventoryConf;
/* インベントリの名前を指定します。名前は、現在のバケット内でグローバルに一意である必要があります。*/
inventoryConf.setId("inventoryId");
/* バケットのインベントリを有効にするかどうかを指定します。有効な値: true および false。*/
inventoryConf.setIsEnabled(true);
/* (オプション) オブジェクト名のプレフィックスを指定します。プレフィックスを指定すると、名前にプレフィックスが含まれるオブジェクトの情報がインベントリリストに含まれます。*/
inventoryConf.setFilter(InventoryFilter("objectPrefix"));
InventoryOSSBucketDestination dest;
/* エクスポートされたインベントリリストの形式を指定します。*/
dest.setFormat(InventoryFormat::CSV);
/* バケット所有者が操作を実行するための権限を付与する Alibaba Cloud アカウントの ID を指定します。*/
dest.setAccountId("10988548********");
/* バケット所有者が操作を実行するための権限を付与する RAM ロールの名前を指定します。*/
dest.setRoleArn("acs:ram::10988548********:role/inventory-test");
/* 生成されたインベントリリストを保存するバケットを指定します。*/
dest.setBucket("yourDstBucketName");
/* 生成されたインベントリリストを保存するパスのプレフィックスを指定します。*/
dest.setPrefix("yourPrefix");
/* (オプション) インベントリリストの暗号化に使用されるメソッドを指定します。有効な値: SSEOSS および SSEKMS。*/
//dest.setEncryption(InventoryEncryption(InventorySSEOSS()));
//dest.setEncryption(InventoryEncryption(InventorySSEKMS("yourKmskeyId")));
inventoryConf.setDestination(dest);
/* インベントリリストがエクスポートされる時間間隔を指定します。有効な値: Daily および Weekly。*/
inventoryConf.setSchedule(InventoryFrequency::Daily);
/* オブジェクトのすべてのバージョンをインベントリリストに含めるか、オブジェクトの現在のバージョンのみを含めるかを指定します。有効な値: All および Current。*/
inventoryConf.setIncludedObjectVersions(InventoryIncludedObjectVersions::All);
/* (オプション) 要件に基づいて、インベントリリストに含まれるフィールドを指定します。*/
InventoryOptionalFields field {
InventoryOptionalField::Size, InventoryOptionalField::LastModifiedDate,
InventoryOptionalField::ETag, InventoryOptionalField::StorageClass,
InventoryOptionalField::IsMultipartUploaded, InventoryOptionalField::EncryptionStatus
};
inventoryConf.setOptionalFields(field);
/* インベントリを設定します。*/
auto outcome = client.SetBucketInventoryConfiguration(
SetBucketInventoryConfigurationRequest(BucketName, inventoryConf));
if (!outcome.isSuccess()) {
/* 例外を処理します。*/
std::cout << "バケットインベントリの設定に失敗しました" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/* ネットワークリソースなどのリソースを解放します。*/
ShutdownSdk();
return 0;
}
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// グローバル変数を定義します。
var (
region string // バケットが配置されているリージョン。
bucketName string // バケットの名前。
)
// コマンドラインパラメータを初期化するために使用される init 関数を指定します。
func init() {
flag.StringVar(®ion, "region", "", "バケットが配置されているリージョン。")
flag.StringVar(&bucketName, "bucket", "", "バケットの名前。")
}
func main() {
// コマンドラインパラメータを解析します。
flag.Parse()
var (
accountId = "account id of the bucket" // 操作を実行するための権限をバケット所有者が付与する Alibaba Cloud アカウントの ID を指定します。例: 109885487000****。
inventoryId = "inventory id" // 在庫の名前。名前はバケット内でグローバルに一意である必要があります。
)
// バケットの名前が指定されているかどうかを確認します。
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("無効なパラメータ、バケット名が必要です")
}
// リージョンが指定されているかどうかを確認します。
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("無効なパラメータ、リージョンが必要です")
}
// デフォルトの構成を読み込み、資格情報プロバイダーとリージョンを指定します。
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// OSS クライアントを作成します。
client := oss.NewClient(cfg)
// バケットの在庫を設定するためのリクエストを作成します。
putRequest := &oss.PutBucketInventoryRequest{
Bucket: oss.Ptr(bucketName), // バケットの名前。
InventoryId: oss.Ptr(inventoryId), // ユーザーが指定した在庫の名前。
InventoryConfiguration: &oss.InventoryConfiguration{
Id: oss.Ptr(inventoryId), // ユーザーが指定した在庫の名前。
IsEnabled: oss.Ptr(true), // 在庫を有効にします。
Filter: &oss.InventoryFilter{
Prefix: oss.Ptr("filterPrefix"), // 在庫に含まれるオブジェクトをフィルタリングするために使用されるルールを指定します。
LastModifyBeginTimeStamp: oss.Ptr(int64(1637883649)), // 最終変更の開始時刻を指定するタイムスタンプ。
LastModifyEndTimeStamp: oss.Ptr(int64(1638347592)), // 最終変更の終了時刻を指定するタイムスタンプ。
LowerSizeBound: oss.Ptr(int64(1024)), // ファイルの下限サイズ(単位:バイト)。
UpperSizeBound: oss.Ptr(int64(1048576)), // ファイルの上限サイズ(単位:バイト)。
StorageClass: oss.Ptr("Standard,IA"), // ストレージクラス。
},
Destination: &oss.InventoryDestination{
OSSBucketDestination: &oss.InventoryOSSBucketDestination{
Format: oss.InventoryFormatCSV, // エクスポートされた在庫リストのフォーマット。
AccountId: oss.Ptr(accountId), // 操作を実行するための権限をバケット所有者から付与されたアカウントの ID を指定します。例: 109885487000****。
RoleArn: oss.Ptr("acs:ram::" + accountId + ":role/AliyunOSSRole"), // 操作を実行するための権限をバケット所有者から付与された RAM ロールの名前を指定します。例: acs:ram::109885487000****:role/ram-test。
Bucket: oss.Ptr("acs:oss:::" + bucketName), // 生成された在庫リストを保存するバケットの名前を指定します。
Prefix: oss.Ptr("export/"), // 生成された在庫リストを保存するパスのプレフィックスを指定します。
},
},
Schedule: &oss.InventorySchedule{
Frequency: oss.InventoryFrequencyDaily, // 在庫リストがエクスポートされる頻度(毎日)。
},
IncludedObjectVersions: oss.Ptr("All"), // 在庫リストにオブジェクトのすべてのバージョンを含めるか、現在のバージョンのみを含めるかを指定します。
},
}
// リクエストを実行します。
putResult, err := client.PutBucketInventory(context.TODO(), putRequest)
if err != nil {
log.Fatalf("バケット在庫の設定に失敗しました %v", err)
}
// 結果を表示します。
log.Printf("バケット在庫の設定結果:%#v\n", putResult)
}