Archivage et accès aux données les moins sollicitées
IBM Cloud® Object Storage "Archive" et "Archive accélérée" sont des options peu coûteuses pour les données rarement consultées. Vous pouvez stocker des données en passant de n'importe quel niveau de stockage (Standard, Coffre, Coffre froid et Flex) à des archives hors ligne à long terme ou vous pouvez utiliser l'option de stockage en ligne Coffre froid. Avec la nouvelle fonction "Archive accélérée", vous pouvez accéder rapidement aux données dormantes avec une restauration en moins de deux heures.
Cette fonction n'est actuellement pas prise en charge dans Object Storage pour Satellite. En savoir plus.
Les niveaux d'archivage et d'archivage accéléré ont une durée de stockage minimale de 90 jours. Les objets supprimés avant cette date continueront à faire l'objet de frais de stockage pour la durée totale de 90 jours.
Archive et Accelerated Archive ont tous deux une taille minimale d'objet pour la facturation de 128KBs. Les objets plus petits peuvent toujours être archivés, mais ils seront facturés au tarif de 128KB.
Les objets écrits en chambre forte ou en chambre froide seront facturés pour la durée minimale de stockage dans ces niveaux, même si l'objet est archivé avant la durée minimale.
Vous pouvez archiver des objets à l'aide de la console Web, de l'API REST et des outils tiers qui sont intégrés à IBM Cloud Object Storage.
Pour plus d'informations sur les noeuds finaux, voir Noeuds finaux et emplacements de stockage.
Ajout ou gestion d'une règle d'archivage sur un compartiment
Lorsque vous créez ou modifiez une règle d'archivage pour un compartiment, tenez compte des points suivants :
- Une règle d'archivage peut être ajoutée à tout moment à un compartiment nouveau ou existant.
- Une règle d'archivage existante peut être modifiée ou désactivée.
- Une règle d'archivage récemment ajoutée ou modifiée s'applique aux nouveaux objets envoyés par téléchargement et n'affecte pas les objets existants.
Créez un compartiment dans la console après vous être connecté et vous pouvez configurer votre stratégie d'archivage à l'aide des zones de la figure 1.

Pour archiver immédiatement les nouveaux objets envoyés par téléchargement dans un compartiment, entrez 0 jours dans la règle d'archivage.
La fonction d'archivage n'est disponible que dans certaines régions. Pour plus d'informations, voir Services intégrés.
Restauration d'un objet archivé
Pour pouvoir accéder à un objet archivé, vous devez le restaurer vers le niveau de stockage d'origine. Lorsque vous restaurez un objet, vous pouvez indiquer le nombre de jours pendant lequel l'objet doit être disponible. A la fin de la période ainsi spécifiée, la copie restaurée est supprimée.
Le processus de restauration pour "Accelerated Archive" prend jusqu'à 2 heures, tandis que le processus de restauration pour "Archive" prend jusqu'à 12 heures.
Les sous-états d'objet archivé sont les suivants :
- Archivé : Un objet à l'état Archivé est passé de son niveau de stockage en ligne (Standard, Coffre, Coffre froid et Flex) au niveau d'archivage hors ligne sur la base de la règle d'archivage définie sur le compartiment.
- En cours de restauration : Un objet à l'état En cours de restauration est en train de générer une copie à partir de l'état Archivé vers son niveau de stockage en ligne d'origine.
- Restauré : Un objet de l'état Restauré est une copie de l'objet archivé qui a été restauré vers son niveau de stockage en ligne d'origine pour une durée déterminée. A la fin de la période ainsi spécifiée, la copie de l'objet est supprimée et l'objet archivé est conservé.
Restauration d'un objet à l'aide de l'interface de ligne de commande AWS
Les exemples suivants utilisent des variables d'environnement pour plus de clarté. Ces valeurs doivent être définies sur les valeurs souhaitées, par exemple, $ENDPOINT
doit être défini sur https://s3.us.cloud-object-storage.appdomain.cloud
,
https://s3.eu-de.private.cloud-object-storage.appdomain.cloud
ou toute autre valeur requise.
- Vérifiez le statut de l'objet:
aws --endpoint-url $ENDPOINT s3api head-object --bucket $BUCKET --key $KEY
La classe de stockage s'affiche sous la forme("StorageClass": "GLACIER")
- Restaurez l'objet:
aws --endpoint-url $ENDPOINT s3api restore-object ---bucket $BUCKET --key $KEY --restore-request '{"Days":25,"GlacierJobParameters":{"Tier":"Bulk"}}'
- Vérifiez le statut :
aws --endpoint-url $ENDPOINT s3api head-object --bucket $BUCKET --key $KEY
Limitations
Les règles d'archivage sont implémentée à l'aide d'un sous-ensemble de l'opération d'API S3 PUT Bucket Lifecycle Configuration
.
Les fonctionnalités prises en charge sont notamment les suivantes :
- Spécification d'une date ou d'un nombre de jours situés dans le futur indiquant le moment où les objets passeront à l'état Archivé
- Définition de règles d'expiration pour les objets
Les règles spécifiant une date dans le passé peuvent prendre jusqu'à quelques jours.
Les fonctionnalités non prises en charge sont notamment les suivantes :
- Plusieurs règles de transition par compartiment
- Filtrage des objets à archiver à l'aide d'un préfixe ou d'une clé d'objet
- Hiérarchisation entre les classes de stockage
Les utilisateurs de l'infrastructure classique (non IAM) ne peuvent pas définir la classe de stockage de transition sur ACCELERATED
.
Utilisation de l'API REST et de SDK
Création d'une configuration de cycle de vie de compartiment
Cette implémentation de l'opération PUT
utilise le paramètre de requête lifecycle
pour définir les paramètres de cycle de vie du compartiment. Cette opération permet de créer une définition de règle de cycle de vie
unique pour un compartiment donné. La règle est définie comme une règle composée des paramètres suivants : ID
, Status
et Transition
.
L'action de transition permet de faire passer les objets qui seront écrits dans le compartiment à un état Archivé après une période définie. Les modifications apportées à la règle de cycle de vie d'un compartiment sont appliquées uniquement aux nouveaux objets qui sont écrits dans ce compartiment.
Les utilisateurs Cloud IAM doivent disposer au minimum du rôle Writer
afin de pouvoir ajouter une règle de cycle de vie au compartiment.
Les utilisateurs d'infrastructure classique doivent disposer des droits d'accès Propriétaire et être en mesure de créer des compartiments dans le compte de stockage afin de pouvoir ajouter une règle de cycle de vie au compartiment.
Cette opération n'utilise pas d'autres paramètres de requête propres aux opérations.
En-tête | Type | Description |
---|---|---|
Content-MD5 |
chaîne | Obligatoire : Hachage MD5 128 bits codé en base 64 du contenu, utilisé comme contrôle d'intégrité pour s'assurer que le contenu n'a pas été modifié alors qu'il était en transit. |
Le corps de la demande doit contenir un bloc XML avec le schéma suivant :
Elément | Type | Enfants | Ancêtre | Contrainte |
---|---|---|---|---|
LifecycleConfiguration |
Conteneur | Rule |
Aucun | Limite 1. |
Rule |
Conteneur | ID , Status , Filter , Transition |
LifecycleConfiguration |
Limite 1. |
ID |
Chaîne | Aucun | Rule |
Doit se composer de (a-z ,A-Z , 0-9 ) et des symboles suivants: ! _ . * ' ( ) - |
Filter |
Chaîne | Prefix |
Rule |
Doit contenir un élément Prefix . |
Prefix |
Chaîne | Aucun | Filter |
Doit être réglé sur <Prefix/> . |
Transition |
Container |
Days , StorageClass |
Rule |
Règle de transition de limite 1 et un maximum de 1000 règles au total. |
Days |
Entier non négatif | Aucun | Transition |
Doit être une valeur supérieure ou égale à 0. |
Date |
Date | Aucun | Transistion |
Doit être au format ISO 8601 et la date doit être située dans le futur. |
StorageClass |
Chaîne | Aucun | Transition |
GLACIER ou ACCELERATED |
Syntaxe
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>
Exemples
Exemple de requête
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>
Exemple de réponse
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)
Récapitulatif des méthodes
Méthode | Description |
---|---|
getBucketName() |
Extrait le nom du compartiment dont la configuration de cycle de vie est en cours de définition. |
getLifecycleConfiguration() |
Extrait la nouvelle configuration de cycle de vie pour le compartiment spécifié. |
setBucketName(String bucketName) |
Définit le nom du compartiment dont la configuration de cycle de vie est en cours de définition. |
withBucketName(String bucketName) |
Définit le nom du compartiment dont la configuration de cycle de vie est en cours de définition et renvoie cet objet de sorte que d'autres appels de méthode puissent être enchaînés. |
Extraction d'une configuration de cycle de vie de compartiment
Cette implémentation de l'opération GET
utilise le paramètre de requête lifecycle
pour extraire les paramètres de cycle de vie du compartiment.
Les utilisateurs Cloud IAM doivent disposer au minimum du rôle Reader
afin de pouvoir extraire une règle de cycle de vie pour un compartiment.
Les utilisateurs d'infrastructure classique doivent disposer au minimum des droits d'accès Read
sur le compartiment afin de pouvoir extraire une règle de cycle de vie pour un compartiment.
Cette opération n'utilise pas d'autres en-têtes, paramètres de requête ou contenu propres aux opérations.
Syntaxe
GET https://{endpoint}/{bucket}?lifecycle # path style
GET https://{bucket}.{endpoint}?lifecycle # virtual host style
Exemples
Exemple de requête
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
Exemple de réponse
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)
Suppression d'une configuration de cycle de vie de compartiment
Cette implémentation de l'opération DELETE
utilise le paramètre de requête lifecycle
pour retirer les paramètres de cycle de vie du compartiment. Les transitions définies par les règles ne seront plus effectuées pour
les nouveaux objets.
Remarque : les règles de transition existantes seront conservées pour les objets qui avaient déjà été écrits dans le compartiment avant la suppression des règles.
Les utilisateurs Cloud IAM doivent disposer au minimum du rôle Writer
afin de pouvoir retirer une règle de cycle de vie d'un compartiment.
Les utilisateurs d'infrastructure classique doivent disposer des droits d'accès Owner
sur le compartiment afin de pouvoir retirer une règle de cycle de vie d'un compartiment.
Cette opération n'utilise pas d'autres en-têtes, paramètres de requête ou contenu propres aux opérations.
Syntaxe
DELETE https://{endpoint}/{bucket}?lifecycle # path style
DELETE https://{bucket}.{endpoint}?lifecycle # virtual host style
Exemples
Exemple de requête
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
Exemple de réponse
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)
Restauration temporaire d'un objet archivé
Cette implémentation de l'opération POST
utilise le paramètre de requête restore
pour demander la restauration temporaire d'un objet archivé. L'utilisateur doit commencer par restaurer un objet archivé avant de le
recevoir par téléchargement ou de le modifier. Lorsqu'il restaure un objet, l'utilisateur doit spécifier une période au terme de laquelle la copie temporaire de cet objet sera supprimée. L'objet conserve la classe de stockage du compartiment.
Un délai maximal de 12 heures peut s'écouler avant que la copie restaurée ne soit accessible. Une demande HEAD
peut être utilisée pour vérifier si la copie restaurée est disponible.
Pour pouvoir restaurer définitivement l'objet, l'utilisateur doit copier l'objet restauré dans un compartiment qui ne possède pas de configuration de cycle de vie active.
Les utilisateurs Cloud IAM doivent disposer au minimum du rôle Writer
afin de pouvoir restaurer un objet.
Les utilisateurs d'infrastructure classique doivent disposer au minimum des droits d'accès Write
sur le compartiment et des droits d'accès Read
sur l'objet afin de pouvoir restaurer celui-ci.
Cette opération n'utilise pas d'autres paramètres de requête propres aux opérations.
En-tête | Type | Description |
---|---|---|
Content-MD5 |
chaîne | Obligatoire : Hachage MD5 128 bits codé en base 64 du contenu, utilisé comme contrôle d'intégrité pour s'assurer que le contenu n'a pas été modifié alors qu'il était en transit. |
Le corps de la demande doit contenir un bloc XML avec le schéma suivant :
Elément | Type | Enfants | Ancêtre | Contrainte |
---|---|---|---|---|
RestoreRequest |
Conteneur | Days , GlacierJobParameters |
Aucun | Aucun |
Days |
Entier | Aucun | RestoreRequest |
Spécifie la durée de vie de l'objet temporairement restauré. Le nombre minimal de jours pendant lesquels une copie restaurée de l'objet peut exister est 1. Une fois la période de restauration écoulée, la copie temporaire de l'objet est supprimée. |
GlacierJobParameters |
Chaîne | Tier |
RestoreRequest |
Aucun |
Tier |
Chaîne | Aucun | GlacierJobParameters |
Facultatif. Si cette zone n'est pas renseignée, la valeur associée au niveau de stockage de la règle qui était en vigueur lors de l'écriture de l'objet est utilisée par défaut. Si cette valeur n'est pas laissée vide, elle doit être définie sur Bulk si la classe de stockage de transition pour la règle de cycle de vie du compartiment a été définie sur GLACIER , et doit être définie sur Accelerated si la
classe de stockage de transition a été définie sur ACCELERATED . |
Une réponse réussie renvoie une valeur 202
si l'objet est à l'état Archivé et une valeur 200
si l'objet est déjà à l'état Restauré. Si l'objet est déjà à l'état Restauré et qu'une nouvelle demande de restauration
de l'objet est reçue, l'élément Days
met à jour le délai d'expiration de l'objet restauré.
Syntaxe
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>
Exemples
Exemple de requête
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>
Exemple de réponse
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)
Récapitulatif des méthodes
Méthode | Description |
---|---|
clone() |
Crée un clone superficiel de cet objet pour toutes les zones à l'exception du contexte de gestionnaire. |
getBucketName() |
Renvoie le nom du compartiment contenant la référence à l'objet qui doit être restauré. |
getExpirationInDays() |
Renvoie la durée, exprimée en nombre de jours, entre la création d'un objet et son expiration. |
setExpirationInDays(int expirationInDays) |
Définit la durée, exprimée en nombre de jours, entre l'envoi par téléchargement d'un objet dans le compartiment et son expiration. |
Obtention des en-têtes d'un objet
Une demande HEAD
avec un chemin d'accès à un objet permet d'extraire les en-têtes de cet objet. Cette opération n'utilise pas de paramètres de requête ou d'éléments de contenu propres aux opérations.
Syntaxe
HEAD https://{endpoint}/{bucket-name}/{object-name} # path style
HEAD https://{bucket-name}.{endpoint}/{object-name} # virtual host style
En-têtes de réponse pour les objets archivés
En-tête | Type | Description |
---|---|---|
x-amz-restore |
chaîne | Inclus si l'objet a été restauré ou si une restauration est en cours. Si l'objet a été restauré, la date d'expiration de la copie temporaire est également renvoyée. |
x-amz-storage-class |
chaîne | Renvoie GLACIER ou ACCELERATED s'il est archivé ou temporairement restauré. |
x-ibm-archive-transition-time |
date | Renvoie la date et l'heure planifiées pour la transition de l'objet vers le niveau d'archivage. |
x-ibm-transition |
chaîne | Inclus si l'objet comporte des métadonnées de transition et renvoie le niveau et l'heure d'origine de la transition. |
x-ibm-restored-copy-storage-class |
chaîne | Inclus si un objet se trouve à l'état RestoreInProgress ou Restored et renvoie la classe de stockage du compartiment. |
Exemple de demande
HEAD /images/backup HTTP/1.1
Authorization: {authorization-string}
x-amz-date: 20160825T183244Z
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de réponse
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()
Récapitulatif des méthodes
Méthode | Description |
---|---|
clone() |
Renvoie un clone de cet élément ObjectMetadata . |
getRestoreExpirationTime() |
Renvoie l'heure à laquelle un objet qui a été temporairement restauré à partir d'une archive expirera et devra être restauré à nouveau afin d'être accessible . |
getStorageClass() |
Renvoie la classe de stockage d'origine du compartiment. |
getIBMTransition() |
Renvoie la classe de stockage de transition et l'heure de la transition. |
Etapes suivantes
Outre le stockage à froid, IBM Cloud propose actuellement plusieurs classes de stockage d'objets supplémentaires pour répondre aux différents besoins des utilisateurs, toutes accessibles par le biais de portails Web et d'API RESTful. Pour en savoir plus sur toutes les classes de stockage disponibles à l'adresse IBM Cloud Object Storage.