コールド・データのアーカイブとアクセス
IBM Cloud® Object Storage 「アーカイブ」と「高速アーカイブ」は、めったにアクセスされないデータの 低コスト ・オプションです。 ストレージ層 (Standard、Vault、Cold Vault、および Flex) のいずれかから長期間オフライン・アーカイブに遷移させることによってデータを保管するか、またはオンライン Cold Vault オプションを使用することができます。 新しい「高速アーカイブ」機能を使用すると、2 時間以内に復旧することで、休止データに素早くアクセスできます。
この機能は現在、 Object Storage for Satelliteではサポートされていません。 詳細はこちらをご覧ください。
ArchiveおよびAccelerated Archive Tierの最低保存期間は90日です。 この期間より前に削除されたオブジェクトには、90日間の保管料が発生します。
アーカイブとアクセラレーテッド・アーカイブの両方で、課金対象となるオブジェクトの最小サイズは 128KBs です。 これより小さいオブジェクトもアーカイブできますが、 128KB オブジェクトのサイズレートで課金されます。
Vault または Cold Vault に書き込まれたオブジェクトは、そのオブジェクトが最小期間より前にアーカイブされた場合でも、それらの層の最小ストレージ期間全体に対して課金されます。
IBM Cloud Object Storage に組み込まれている Web コンソール、REST API、およびサード・パーティー・ツールを使用して、オブジェクトをアーカイブできます。
エンドポイントについて詳しくは、エンドポイントおよびストレージ・ロケーションを参照してください。
バケットのアーカイブ・ポリシーの追加または管理
バケットのアーカイブ・ポリシーを作成または変更するときには以下の点を考慮してください。
- 新規または既存のバケットにアーカイブ・ポリシーをいつでも追加できます。
- 既存のアーカイブ・ポリシーは変更することも無効にすることもできます。
- 新しく追加されたか、変更されたアーカイブ・ポリシーは、アップロードされた新規オブジェクトに適用され、既存のオブジェクトには影響しません。
ログイン後にコンソールでバケットを作成し、図 1 に示すフィールドを使用してアーカイブ・ポリシーを構成できます。

バケットにアップロードされた新規オブジェクトを即時にアーカイブするには、アーカイブ・ポリシーに 0 日を入力します。
Archive は特定の地域でのみ使用可能です。 詳しくは、統合サービスを参照してください。
アーカイブ済みオブジェクトのリストア
アーカイブされたオブジェクトにアクセスするには、それを元のストレージ層にリストアする必要があります。 オブジェクトをリストアするときに、そのオブジェクトを使用可能な状態にしておきたい日数を指定できます。 指定した期間が終わると、リストアされたコピーは削除されます。
「高速アーカイブ」のリストア・プロセスには最大 2 時間かかり、「アーカイブ」のリストア・プロセスには最大 12 時間かかります。
アーカイブ済みオブジェクトの副状態は以下のとおりです。
- アーカイブ済み: 「アーカイブ済み」状態のオブジェクトは、バケットのアーカイブ・ポリシーに基づいて、オンラインのストレージ層 (Standard、Vault、Cold Vault、および Flex) からオフラインのアーカイブ層に移動済みです。
- リストア中: 「リストア中」状態のオブジェクトは、「アーカイブ済み」状態から元のオンラインのストレージ層へのコピーの生成が進行中です。
- リストア済み: 「リストア済み」状態のオブジェクトは、アーカイブ済みオブジェクトのコピーであり、指定された期間だけ元のオンラインのストレージ層にリストアされたものです。 期間が終了すると、アーカイブ済みオブジェクトは保持されますが、オブジェクトのコピーは削除されます。
AWS CLI を使用したオブジェクトのリストア
以下の例では、分かりやすくするために環境変数を使用しています。 これらは必要な値に設定する必要があります。例えば、 $ENDPOINT
は https://s3.us.cloud-object-storage.appdomain.cloud
、 https://s3.eu-de.private.cloud-object-storage.appdomain.cloud
、またはその他の必要な値に設定します。
- オブジェクト状況の確認:
aws --endpoint-url $ENDPOINT s3api head-object --bucket $BUCKET --key $KEY
ストレージ・クラスは、("StorageClass": "GLACIER")
として表示されます。 - オブジェクトを復元します。
aws --endpoint-url $ENDPOINT s3api restore-object ---bucket $BUCKET --key $KEY --restore-request '{"Days":25,"GlacierJobParameters":{"Tier":"Bulk"}}'
- 状況を確認します。
aws --endpoint-url $ENDPOINT s3api head-object --bucket $BUCKET --key $KEY
制限
アーカイブ・ポリシーは、PUT Bucket Lifecycle Configuration
S3 API 操作のサブセットを使用して実装されます。
サポートされる機能は以下のとおりです。
- オブジェクトがアーカイブ済み状態に遷移する将来の日付または日数を指定する。
- オブジェクトの有効期限ルールを設定する。
過去の日付を指定するポリシーは、完了までに最大で数日かかる場合があります。
サポートされない機能には以下のものがあります。
- バケット当たり複数の遷移ルール。
- 接頭部またはオブジェクト・キーを使用して、アーカイブするオブジェクトをフィルタリングすること。
- ストレージ・クラス間の層。
クラシック・インフラストラクチャー (非 IAM) ユーザーは、移行ストレージ・クラスを ACCELERATED
に設定できません。
REST API および SDK の使用
バケットのライフサイクル構成の作成
PUT
操作のこの実装は、lifecycle
照会パラメーターを使用してバケットのライフサイクル設定を設定します。 この操作では、特定のバケットに対して単一のライフサイクル・ポリシー定義が可能です。 ポリシーは、パラメーター ID
、Status
、および Transition
から構成されるルールとして定義されます。
遷移アクションは、バケットに書き込まれる将来のオブジェクトを、定義された期間が過ぎた後にアーカイブ済み状態にすることができます。 バケットのライフサイクル・ポリシーの変更は、バケットに書き込まれた新規オブジェクトにのみ適用されます。
Cloud IAM ユーザーがバケットにライフサイクル・ポリシーを追加するには、最小限 Writer
役割を持っている必要があります。
クラシック・インフラストラクチャーのユーザーがバケットにライフサイクル・ポリシーを追加するには、所有者許可を持っていて、ストレージ・アカウントにバケットを作成できなければなりません。
この操作では、追加の操作固有の照会パラメーターは使用されません。
ヘッダー | タイプ | 説明 |
---|---|---|
Content-MD5 |
ストリング | 必須: base64 でエンコードされた、ペイロードの 128 ビット MD5 ハッシュ。ペイロードが転送中に変更されなかったことを確認するための保全性検査として使用されます。 |
要求の本体には、以下のスキーマの XML ブロックが含まれている必要があります。
エレメント | タイプ | 子 | 上位 | 制約 |
---|---|---|---|---|
LifecycleConfiguration |
コンテナー | Rule |
なし | 限度 1。 |
Rule |
コンテナー | ID , Status , Filter , Transition |
LifecycleConfiguration |
限度 1。 |
ID |
ストリング | なし | Rule |
(a-z 、A-Z 、 0-9 ) と以下の記号で構成されている必要があります。 ! _ . * ' ( ) - |
Filter |
ストリング | Prefix |
Rule |
Prefix 要素を含んでいる必要があります |
Prefix |
ストリング | なし | Filter |
<Prefix/> に設定する必要がある。 |
Transition |
Container |
Days , StorageClass |
Rule |
1 つの遷移規則を制限し、合計で最大 1000 個の規則を制限します。 |
Days |
負でない整数 | なし | Transition |
0 以上の値でなければなりません。 |
Date |
日付 | なし | Transistion |
ISO 8601 形式である必要があり、将来の日付でなければなりません。 |
StorageClass |
ストリング | なし | Transition |
GLACIER またはACCELERATED |
構文
PUT https://{endpoint}/{bucket}?lifecycle # path style
PUT https://{bucket}.{endpoint}?lifecycle # virtual host style
<LifecycleConfiguration>
<Rule>
<ID>{string}</ID>
<Status>Enabled</Status>
<Filter>
<Prefix/>
</Filter>
<Transition>
<Days>{integer}</Days>
<StorageClass>{StorageClass}</StorageClass>
</Transition>
</Rule>
</LifecycleConfiguration>
例
サンプル要求
PUT /images?lifecycle HTTP/1.1
Host: s3.us.cloud-object-storage.appdomain.cloud
Date: Wed, 7 Feb 2018 17:50:00 GMT
Authorization: authorization string
Content-Type: text/plain
Content-MD5: 1B2M2Y8AsgTpgAmY7PhCfg==
Content-Length: 305
<LifecycleConfiguration>
<Rule>
<ID>my-archive-policy</ID>
<Filter>
<Prefix/>
</Filter>
<Status>Enabled</Status>
<Transition>
<Days>20</Days>
<StorageClass>ACCELERATED</StorageClass>
</Transition>
</Rule>
</LifecycleConfiguration>
サンプル応答
HTTP/1.1 200 OK
Date: Wed, 7 Feb 2018 17:51:00 GMT
Connection: close
var params = {
Bucket: 'STRING_VALUE', /* required */
LifecycleConfiguration: {
Rules: [ /* required */
{
Status: 'Enabled', /* required */
ID: 'STRING_VALUE',
Filter: '', /* required */
Prefix: '',
Transitions: [
{
Date: DATE, /* required if Days not specified */
Days: 0, /* required if Date not specified */
StorageClass: 'STRING_VALUE' /* required */
},
]
},
]
}
};
s3.putBucketLifecycleConfiguration(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
response = client.put_bucket_lifecycle_configuration(
Bucket='string',
LifecycleConfiguration={
'Rules': [
{
'ID': 'string',
'Status': 'Enabled',
'Filter': '',
'Prefix': '',
'Transitions': [
{
'Date': datetime(2015, 1, 1),
'Days': 123,
'StorageClass': 'GLACIER'
},
]
},
]
}
)
public SetBucketLifecycleConfigurationRequest(String bucketName,
BucketLifecycleConfiguration lifecycleConfiguration)
メソッドの要約
メソッド | 説明 |
---|---|
getBucketName() |
ライフサイクル構成が設定されるバケットの名前を取得します。 |
getLifecycleConfiguration() |
指定されたバケットの新しいライフサイクル構成を取得します。 |
setBucketName(String bucketName) |
ライフサイクル構成が設定されるバケットの名前を設定します。 |
withBucketName(String bucketName) |
ライフサイクル構成が設定されるバケットの名前を設定し、追加のメソッド呼び出しをチェーニングできるようにこのオブジェクトを返します。 |
バケットのライフサイクル構成の取得
GET
操作のこの実装は、lifecycle
照会パラメーターを使用してバケットのライフサイクル設定を取得します。
Cloud IAM ユーザーがバケットのライフサイクルを取得するには、最小限 Reader
役割を持っている必要があります。
クラシック・インフラストラクチャーのユーザーがバケットのライフサイクル・ポリシーを取得するには、最小限、バケットに対する Read
許可を持っている必要があります。
この操作では、追加の操作固有のヘッダー、照会パラメーター、およびペイロードは使用されません。
構文
GET https://{endpoint}/{bucket}?lifecycle # path style
GET https://{bucket}.{endpoint}?lifecycle # virtual host style
例
サンプル要求
GET /images?lifecycle HTTP/1.1
Host: s3.us.cloud-object-storage.appdomain.cloud
Date: Wed, 7 Feb 2018 17:50:00 GMT
Authorization: authorization string
サンプル応答
HTTP/1.1 200 OK
Date: Wed, 7 Feb 2018 17:51:00 GMT
Connection: close
<LifecycleConfiguration>
<Rule>
<ID>my-archive-policy</ID>
<Filter />
<Status>Enabled</Status>
<Transition>
<Days>20</Days>
<StorageClass>GLACIER</StorageClass>
</Transition>
</Rule>
</LifecycleConfiguration>
var params = {
Bucket: 'STRING_VALUE' /* required */
};
s3.getBucketLifecycleConfiguration(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
response = client.get_bucket_lifecycle_configuration(Bucket='string')
public GetBucketLifecycleConfigurationRequest(String bucketName)
バケットのライフサイクル構成の削除
DELETE
操作のこの実装は、lifecycle
照会パラメーターを使用してバケットのすべてのライフサイクル設定を削除します。 ルールで定義された遷移は、新規オブジェクトに対しては行われなくなります。
注: 既存の遷移ルールは、ルールが削除される前に既にバケットに書き込まれたオブジェクトのために保持されます。
Cloud IAM ユーザーがバケットからライフサイクル・ポリシーを削除するには、最小限 Writer
役割を持っている必要があります。
クラシック・インフラストラクチャーのユーザーがバケットからライフサイクル・ポリシーを削除するには、バケットに対する「Owner
」許可を持っている必要があります。
この操作では、追加の操作固有のヘッダー、照会パラメーター、およびペイロードは使用されません。
構文
DELETE https://{endpoint}/{bucket}?lifecycle # path style
DELETE https://{bucket}.{endpoint}?lifecycle # virtual host style
例
サンプル要求
DELETE /images?lifecycle HTTP/1.1
Host: s3.us.cloud-object-storage.appdomain.cloud
Date: Wed, 7 Feb 2018 18:50:00 GMT
Authorization: authorization string
サンプル応答
HTTP/1.1 204 No Content
Date: Wed, 7 Feb 2018 18:51:00 GMT
Connection: close
var params = {
Bucket: 'STRING_VALUE' /* required */
};
s3.deleteBucketLifecycle(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
response = client.delete_bucket_lifecycle(Bucket='string')
public DeleteBucketLifecycleConfigurationRequest(String bucketName)
アーカイブ済みオブジェクトの一時的なリストア
POST
操作のこの実装は、restore
照会パラメーターを使用して、アーカイブ済みオブジェクトの一時的なリストアを要求します。 ユーザーは、まずアーカイブ済みオブジェクトをリストアした後で、オブジェクトをダウンロードまたは変更する必要があります。 ユーザーは、オブジェクトをリストアするときに、オブジェクトの一時コピーが削除されるまでの期間を指定する必要があります。 オブジェクトは、バケットのストレージ・クラスを保持します。
リストアされたコピーがアクセス可能になるまでに、最大 12 時間の遅延が生じることがあります。 リストアされたコピーが使用可能かどうかを HEAD
要求で検査できます。
オブジェクトを永続的にリストアするには、ユーザーは、リストアされるオブジェクトを、アクティブなライフサイクル構成がないバケットにコピーする必要があります。
Cloud IAM ユーザーがオブジェクトをリストアするには、最小限 Writer
役割を持っている必要があります。
クラシック・インフラストラクチャーのユーザーがオブジェクトをリストアするには、最小限、バケットに対する Write
許可と、オブジェクトに対する Read
許可を持っている必要があります。
この操作では、追加の操作固有の照会パラメーターは使用されません。
ヘッダー | タイプ | 説明 |
---|---|---|
Content-MD5 |
ストリング | 必須: base64 でエンコードされた、ペイロードの 128 ビット MD5 ハッシュ。ペイロードが転送中に変更されなかったことを確認するための保全性検査として使用されます。 |
要求の本体には、以下のスキーマの XML ブロックが含まれている必要があります。
エレメント | タイプ | 子 | 上位 | 制約 |
---|---|---|---|---|
RestoreRequest |
コンテナー | Days , GlacierJobParameters |
なし | なし |
Days |
整数 | なし | RestoreRequest |
一時的にリストアされたオブジェクトの存続期間を指定します。 オブジェクトの復元されたコピーを存在させることができる最小日数は 1 です。 復元期間が経過すると, オブジェクトの一時コピーが除去されます。 |
GlacierJobParameters |
ストリング | Tier |
RestoreRequest |
なし |
Tier |
ストリング | なし | GlacierJobParameters |
オプション。ブランクのままにすると、デフォルトで、オブジェクトが書き込まれたときに設定されていたポリシーの Storage Tier に関連付けられている値になります。 この値をブランクのままにしない場合、バケットのライフサイクル・ポリシーの遷移ストレージ・クラスが GLACIER に設定されている場合は Bulk に設定する 必要 があり、遷移ストレージ・クラスが ACCELERATED に設定されている場合は Accelerated に設定する 必要 があります。 |
正常な応答では、オブジェクトがアーカイブ済み状態の場合は 202
が返され、オブジェクトが既にリストア済み状態の場合は 200
が返されます。 既にリストア済み状態のオブジェクトをリストアする新しい要求が受信されると、リストアされたオブジェクトの有効期限は Days
要素によって更新されます。
構文
POST https://{endpoint}/{bucket}/{object}?restore # path style
POST https://{bucket}.{endpoint}/{object}?restore # virtual host style
<RestoreRequest>
<Days>{integer}</Days>
<GlacierJobParameters>
<Tier>Bulk</Tier>
</GlacierJobParameters>
</RestoreRequest>
例
サンプル要求
POST /images/backup?restore HTTP/1.1
Host: s3.us.cloud-object-storage.appdomain.cloud
Date: Wed, 7 Feb 2018 19:50:00 GMT
Authorization: {authorization string}
Content-Type: text/plain
Content-MD5: 1B2M2Y8AsgTpgAmY7PhCfg==
Content-Length: 305
<RestoreRequest>
<Days>3</Days>
<GlacierJobParameters>
<Tier>Bulk</Tier>
</GlacierJobParameters>
</RestoreRequest>
サンプル応答
HTTP/1.1 202 Accepted
Date: Wed, 7 Feb 2018 19:51:00 GMT
Connection: close
var params = {
Bucket: 'STRING_VALUE', /* required */
Key: 'STRING_VALUE', /* required */
ContentMD5: 'STRING_VALUE', /* required */
RestoreRequest: {
Days: 1, /* days until copy expires */
GlacierJobParameters: {
Tier: 'STRING_VALUE' /* required */
},
}
};
s3.restoreObject(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
response = client.restore_object(
Bucket='string',
Key='string',
RestoreRequest={
'Days': 123,
'GlacierJobParameters': {
'Tier': 'string'
},
}
)
public RestoreObjectRequest(String bucketName,
String key,
int expirationInDays)
メソッドの要約
メソッド | 説明 |
---|---|
clone() |
ハンドラー・コンテキストを除くすべてのフィールドについて、このオブジェクトのシャロー・クローンを作成します。 |
getBucketName() |
リストアするオブジェクトへの参照を含んでいるバケット名を返します。 |
getExpirationInDays() |
オブジェクトの作成から有効期限切れまでの期間を日数で返します。 |
setExpirationInDays(int expirationInDays) |
オブジェクトがバケットにアップロードされてから有効期限が切れるまでの期間を日数で設定します。 |
オブジェクトのヘッダーの取得
オブジェクトへのパスが指定された HEAD
は、そのオブジェクトのヘッダーを取得します。 この操作では操作固有の照会パラメーターおよびペイロード要素は使用されません。
構文
HEAD https://{endpoint}/{bucket-name}/{object-name} # path style
HEAD https://{bucket-name}.{endpoint}/{object-name} # virtual host style
アーカイブ・オブジェクトのレスポンス・ヘッダ
ヘッダー | タイプ | 説明 |
---|---|---|
x-amz-restore |
ストリング | オブジェクトがリストア済みの場合またはリストアが進行中の場合に含まれます。 オブジェクトがリストア済みの場合、一時コピーの有効期限日付も返されます。 |
x-amz-storage-class |
ストリング | アーカイブまたは一時的に復元された場合は、 GLACIER または ACCELERATED を返す。 |
x-ibm-archive-transition-time |
日付 | アーカイブ層へのオブジェクトの遷移がスケジュールされている日時を返します。 |
x-ibm-transition |
ストリング | オブジェクトに遷移メタデータがある場合に含まれ、遷移の層および元の時刻を返します。 |
x-ibm-restored-copy-storage-class |
ストリング | オブジェクトが RestoreInProgress 状態または Restored 状態の場合に含まれ、バケットのストレージ・クラスを返します。 |
サンプル要求
HEAD /images/backup HTTP/1.1
Authorization: {authorization-string}
x-amz-date: 20160825T183244Z
Host: s3.us.cloud-object-storage.appdomain.cloud
サンプル応答
HTTP/1.1 200 OK
Date: Wed, 7 Feb 2018 19:51:00 GMT
X-Clv-Request-Id: da214d69-1999-4461-a130-81ba33c484a6
Accept-Ranges: bytes
Server: 3.x
X-Clv-S3-Version: 2.5
ETag: "37d4c94839ee181a2224d6242176c4b5"
Content-Type: text/plain; charset=UTF-8
Last-Modified: Thu, 25 Aug 2017 17:49:06 GMT
Content-Length: 11
x-ibm-transition: transition="ARCHIVE", date="Mon, 03 Dec 2018 22:28:38 GMT"
x-amz-restore: ongoing-request="false", expiry-date="Thu, 06 Dec 2018 18:28:38 GMT"
x-amz-storage-class: "GLACIER"
x-ibm-restored-copy-storage-class: "Standard"
response = client.head_object(
Bucket='string',
Key='string'
)
var params = {
Bucket: 'STRING_VALUE', /* required */
Key: 'STRING_VALUE', /* required */
};
s3.headObject(params, function(err,data) {
if (err) console.log(err, err.stack); // an error occurred
else
console.log(data); // successful response
});
public ObjectMetadata()
メソッドの要約
メソッド | 説明 |
---|---|
clone() |
この ObjectMetadata のクローンを返します。 |
getRestoreExpirationTime() |
アーカイブから一時的にリストアされたオブジェクトの有効期限が切れ、アクセスするには再リストアが必要になる時刻を返します。 |
getStorageClass() |
バケットの元のストレージ・クラスを返します。 |
getIBMTransition() |
遷移ストレージ・クラスおよび遷移の時刻を返します。 |
次のステップ
コールド・ストレージに加え、 IBM Cloud は現在、さまざまなユーザー・ニーズに対応するため、いくつかの追加オブジェクト・ストレージ・クラスを提供しており、そのすべてにウェブベースのポータルやRESTful APIを通じてアクセスできる。 すべての ストレージ・クラス について詳しくは、 IBM Cloud Object Storageを参照してください。