Object Storage Service (OSS) は、標準、低頻度アクセス (IA)、アーカイブ、コールドアーカイブ、ディープコールドアーカイブなど、複数のストレージクラスを提供します。これらのストレージクラスは、ホットデータからコールドデータまで、さまざまなデータストレージのニーズに対応します。OSS では、オブジェクトは作成後に内容を変更することはできません。つまり、既存のオブジェクトのストレージクラスを直接変更することはできません。代わりに、新しいオブジェクトを作成する必要があります。オブジェクトのストレージクラスを変更するには、`Bucket.CopyObject` メソッドを使用します。このメソッドは、ソースオブジェクトを目的のストレージクラスを持つ新しいオブジェクトにコピーします。
注意事項
Webpack や Browserify などのパッケージングツールを使用する場合は、`npm install ali-oss` コマンドを実行して OSS SDK for Browser.js をインストールします。
ブラウザから OSS バケットにアクセスしようとする際に、そのバケットに CORS ルールが設定されていない場合、ブラウザはリクエストを拒否します。したがって、ブラウザからバケットにアクセスする場合は、バケットに CORS ルールを設定する必要があります。詳細については、「インストール」をご参照ください。
ほとんどの場合、OSS SDK for Browser.js はブラウザで使用されます。AccessKey ペアの漏洩を防ぐため、セキュリティトークンサービス (STS) から取得した一時的なアクセス認証情報を使用して OSS にアクセスすることを推奨します。
一時的なアクセス認証情報は、AccessKey ペアとセキュリティトークンで構成されます。AccessKey ペアは、AccessKey ID と AccessKey Secret で構成されます。一時的なアクセス認証情報を取得する方法の詳細については、「STS を使用した一時的なアクセス権限付与」をご参照ください。
コード例
オブジェクトのストレージクラスを標準または低頻度アクセスからアーカイブに変換
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<button id='upload'>アップロード</button>
<button id='copy'>オブジェクトのストレージクラスを変換</button>
<!--SDK ファイルをインポートします。-->
<script type="text/javascript" src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"></script>
<script type="text/javascript">
const client = new OSS({
// バケットが配置されているリージョンに yourRegion を設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、yourRegion を oss-cn-hangzhou に設定します。
region: 'yourRegion',
authorizationV4: true,
// STS から取得した一時的な AccessKey ID と AccessKey Secret。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// STS から取得したセキュリティトークン。
stsToken: 'yourSecurityToken',
// バケット名を指定します。 例:examplebucket。
bucket: "examplebucket",
});
const upload = document.getElementById('upload')
const copy = document.getElementById('copy')
// アップロードするファイルの内容を指定します。
const file = new Blob(['examplecontent'])
// examplebucket にアップロードするオブジェクトの完全なパスを指定します。 例:exampledir/exampleobject.txt。
const fileName = 'exampledir/exampleobject.txt'
// ファイルをアップロードします。
upload.addEventListener('click', () => {
client.put(fileName, file).then(r => console.log(r))
})
// copy メソッドを使用してオブジェクトのストレージクラスを変換します。
copy.addEventListener('click', () => {
// 宛先オブジェクトの名前を指定します。 例:newexampleobject.txt。
client.copy('newexampleobject.txt', fileName, {
headers: {
// オブジェクトのストレージクラスをアーカイブに設定します。 ストレージクラスをコールドアーカイブに変更するには、Archive を ColdArchive に置き換えます。
'x-oss-storage-class': 'Archive'
}
}
).then(r => {
console.log(r.res.status)
})
})
</script>
</body>
</html>オブジェクトのストレージクラスをアーカイブから低頻度アクセスまたは標準に変換
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<button id="check">チェック</button>
<button id="restore">解凍</button>
<button id="change">変換</button>
<!--SDK ファイルをインポートします。-->
<script
type="text/javascript"
src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"
></script>
<script type="text/javascript">
const client = new OSS({
// バケットが配置されているリージョンに yourRegion を設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、yourRegion を oss-cn-hangzhou に設定します。
region: 'yourRegion',
// STS から取得した一時的な AccessKey ID と AccessKey Secret。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// STS から取得したセキュリティトークン。
stsToken: 'yourSecurityToken',
// バケット名を指定します。 例:examplebucket。
bucket: "examplebucket",
});
const check = document.getElementById("check");
const change = document.getElementById("change");
const restore = document.getElementById("restore");
check.addEventListener("click", () => {
console.log("オブジェクトタイプをチェック");
// 開発者ツールのヘッダーをチェックして、オブジェクトのストレージクラスを確認します。
client.head("srcobject.txt").then((r) => console.log(r));
});
// オブジェクトを解凍します。
restore.addEventListener("click", () => {
// 解凍するオブジェクトの名前を指定します。 例:srcobject.txt。
client.restore("srcobject.txt").then((r) => {
console.log(r);
console.log("解凍を開始");
});
});
// オブジェクトが解凍された後、そのストレージクラスを変換します。
change.addEventListener("click", () => {
// 解凍時間はオブジェクトのサイズによって異なります。
console.log("変換を開始");
client
// srcobject.txt のコピー先となる宛先オブジェクトの名前として destobject.txt を指定します。
.copy("destobject.txt", "srcobject.txt", {
// オブジェクトのストレージクラスを低頻度アクセス (IA) に設定します。 ストレージクラスを標準に変更するには、IA を Standard に置き換えます。
headers: { "x-oss-storage-class": "IA" },
})
.then((r) => console.log(r))
// 変換エラーの一般的な原因は、オブジェクトがまだ解凍中であることです。
.catch((e) => console.log("変換エラー:", e));
});
</script>
</body>
</html>
関連ドキュメント
オブジェクトのストレージクラスを変換するための完全なサンプルコードについては、「GitHub の例」をご参照ください。
オブジェクトのストレージクラスを変換するために使用される API 操作の詳細については、「CopyObject」をご参照ください。