Opérations sur les compartiments
Les fonctionnalités modernes d' IBM Cloud® Object Storage sont facilement accessibles via une API RESTful. Les opérations et les méthodes utilisées pour interagir avec les compartiments (où les objets sont stockés) sont documentées ici.
Pour plus d'informations sur les droits et l'accès, voir Bucket permissions.
Remarque sur l'authentification par clé d'accès/clé secrète (HMAC)
Lors de l'authentification auprès de votre instance de IBM Cloud® Object Storage en utilisant les données d'identification HMAC, vous avez besoin des informations représentées dans le tableau 1 lors de la construction d'une signature HMAC.
| Clé | Valeur | Exemple |
|---|---|---|
| {access_key} | Clé d'accès attribuée à vos identifiants de service | cf4965cebe074720a4929759f57e1214 |
| {date} | Date formatée de votre demande (yyyymmdd) |
20180613 |
| {region} | Code d'emplacement de votre noeud final | us-standard |
| {signature} | Hachage créé à l'aide de la clé secrète, de l'emplacement et de la date | ffe2b6e18f9dcc41f593f4dbb39882a6bb4d26a73a04326e62a8d344e07c1a3e |
| {timestamp} | Date et heure formatées de votre demande | 20180614T001804Z |
Création d'une liste de compartiments
Une requête de type « GET » envoyée à la racine du point de terminaison renvoie une liste des compartiments associés à l'instance de service spécifiée. Pour plus d'informations sur les noeuds finaux, voir Noeuds finaux et emplacements de stockage.
| En-tête | Type | Obligatoire ? | Description |
|---|---|---|---|
ibm-service-instance-id |
Chaîne | Oui | Permet de répertorier les compartiments qui ont été créés dans cette instance de service. |
| Paramètre de requête | Valeur | Obligatoire ? | Description |
|---|---|---|---|
extended |
Aucun | Non | Fournit les métadonnées LocationConstraint et CreationTemplateId dans la fiche. |
Syntaxe
GET https://{endpoint}/
Exemple de requête
GET / HTTP/1.1
Authorization: Bearer {token}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
ibm-service-instance-id: {ibm-service-instance-id}
Exemple de requête
GET / HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de réponse
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Owner>
<ID>{account-id}</ID>
<DisplayName>{account-id}</DisplayName>
</Owner>
<Buckets>
<Bucket>
<Name>bucket-27200-lwx4cfvcue</Name>
<CreationDate>2016-08-18T14:21:36.593Z</CreationDate>
</Bucket>
<Bucket>
<Name>bucket-27590-drqmydpfdv</Name>
<CreationDate>2016-08-18T14:22:32.366Z</CreationDate>
</Bucket>
<Bucket>
<Name>bucket-27852-290jtb0n2y</Name>
<CreationDate>2016-08-18T14:23:03.141Z</CreationDate>
</Bucket>
<Bucket>
<Name>bucket-28731-k0o1gde2rm</Name>
<CreationDate>2016-08-18T14:25:09.599Z</CreationDate>
</Bucket>
</Buckets>
</ListAllMyBucketsResult>
Obtention d'une liste étendue
Syntaxe
GET https://{endpoint}/?extended
Exemple de requête
GET /?extended HTTP/1.1
Authorization: Bearer {token}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
ibm-service-instance-id: {ibm-service-instance-id}
Exemple de requête
GET /?extended HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de réponse
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Owner>
<ID>{account-id}</ID>
<DisplayName>{account-id}</DisplayName>
</Owner>
<IsTruncated>false</IsTruncated>
<MaxKeys>1000</MaxKeys>
<Prefix/>
<Marker/>
<Buckets>
<Bucket>
<Name>bucket-27200-lwx4cfvcue</Name>
<CreationDate>2016-08-18T14:21:36.593Z</CreationDate>
<LocationConstraint>us-south-standard</LocationConstraint>
</Bucket>
<Bucket>
<Name>bucket-27590-drqmydpfdv</Name>
<CreationDate>2016-08-18T14:22:32.366Z</CreationDate>
<LocationConstraint>us-standard</LocationConstraint>
</Bucket>
<Bucket>
<Name>bucket-27852-290jtb0n2y</Name>
<CreationDate>2016-08-18T14:23:03.141Z</CreationDate>
<LocationConstraint>eu-standard</LocationConstraint>
</Bucket>
<Bucket>
<Name>bucket-28731-k0o1gde2rm</Name>
<CreationDate>2016-08-18T14:25:09.599Z</CreationDate>
<LocationConstraint>us-cold</LocationConstraint>
</Bucket>
</Buckets>
</ListAllMyBucketsResult>
Créer un compartiment
Une demande PUT envoyée à la racine de noeud final et suivie d'une chaîne crée un compartiment. Pour plus d'informations sur les noeuds finaux, voir Noeuds finaux et emplacements de stockage.
Les noms de compartiments doivent être uniques au niveau mondial et conformes aux normes DNS. Les noms comportant entre 3 et 63 caractères doivent être composés de lettres minuscules, de chiffres, de points (points) et de tirets (traits d'union).
Les noms de compartiment doivent commencer et se terminer par une lettre minuscule ou un chiffre. Les noms de compartiment ne peuvent pas contenir de points ou de tirets consécutifs. Les noms de compartiments qui ressemblent à des adresses
IP ne sont pas autorisés. Cette opération n'utilise pas de paramètres de requête spécifiques à l'opération.
Les noms de compartiment doivent être uniques car tous les compartiments du cloud public partagent un espace de nom global. Cette exigence permet d'accéder à un compartiment sans avoir à fournir d'informations relatives à une instance de service
ou à un compte. En outre, il n'est pas possible de créer un compartiment dont le nom commence par cosv1- ou account- car ces préfixes sont réservés par le système.
| En-tête | Type | Obligatoire ? | Description |
|---|---|---|---|
ibm-service-instance-id |
Chaîne | Oui | Cet en-tête fait référence à l'instance de service sur laquelle le compartiment doit être créé et à laquelle l'utilisation des données peut être facturée. |
x-amz-bucket-object-lock-enabled |
Booléen | Non | Indique si vous souhaitez activer le verrouillage d'objet sur le nouveau compartiment. Cet en-tête active automatiquement la gestion des versions. |
Lorsque vous définissez le verrouillage d'objet sur un nouveau compartiment, assurez-vous qu'aucune erreur typographique ne se trouve dans l'en-tête x-amz-bucket-object-lock-enabled. Si l'en-tête ou la valeur est mal orthographiée,
le compartiment est créé, mais le verrouillage d'objet et la gestion des versions ne sont pas activés.
Informations personnelles identifiables (PII): lors de la création de compartiments ou de l'ajout d'objets, n'utilisez aucune information permettant d'identifier un utilisateur (personne physique) par son nom, son lieu de résidence ou tout autre moyen dans le nom du compartiment ou de l'objet.
Syntaxe
PUT https://{endpoint}/{bucket-name} # path style
PUT https://{bucket-name}.{endpoint} # virtual host style
Exemple de requête
L'exemple suivant crée un compartiment appelé'images'.
PUT /images HTTP/1.1
Authorization: Bearer {token}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
ibm-service-instance-id: {ibm-service-instance-id}
Exemple de requête
PUT /images HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de réponse
HTTP/1.1 200 OK
Date: Wed, 24 Aug 2016 17:45:25 GMT
X-Clv-Request-Id: dca204eb-72b5-4e2a-a142-808d2a5c2a87
Accept-Ranges: bytes
Server: Cleversafe/3.9.0.115
X-Clv-S3-Version: 2.5
x-amz-request-id: dca204eb-72b5-4e2a-a142-808d2a5c2a87
Content-Length: 0
Création d'un compartiment avec une classe de stockage différente
Pour créer un compartiment avec une classe de stockage différente, envoyez un bloc XML spécifiant une configuration de compartiment avec l' LocationConstraint e {provisioning code} dans le corps d'une requête PUT adressée à un point de terminaison de compartiment. Pour plus d'informations sur les noeuds finaux, voir Noeuds finaux et emplacements de stockage. Les
règles de dénomination de compartiment standard s'appliquent. Cette opération n'utilise pas de paramètres de requête spécifiques à l'opération.
| | En-tête | Type | Description | |--------------------------|--------|--------------------------------------------------------------------------------------------------------------------- | ibm-service-instance-id | Chaîne | Cet
en-tête fait référence à l'instance de service sur laquelle le compartiment doit être créé et à laquelle l'utilisation des données peut être facturée. |
Syntaxe
PUT https://{endpoint}/{bucket-name} # path style
PUT https://{bucket-name}.{endpoint} # virtual host style
Le corps de la demande doit contenir un bloc XML avec le schéma suivant :
| Elément | Type | Enfants | Ancêtre | Contrainte |
|---|---|---|---|---|
CreateBucketConfiguration |
Conteneur | LocationConstraint |
|
|
LocationConstraint |
Chaîne |
|
CreateBucketConfiguration |
Code d'emplacement valide |
<CreateBucketConfiguration>
<LocationConstraint>us-vault</LocationConstraint>
</CreateBucketConfiguration>
Une liste de codes de mise à disposition valides pour LocationConstraint peut être référencée dans le guide sur les classes de stockage.
Exemple de requête
L'exemple suivant crée un compartiment appelé'vault-images'.
PUT /vault-images HTTP/1.1
Authorization: Bearer {token}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
ibm-service-instance-id: {ibm-service-instance-id}
Content-Length: 110
Exemple de requête
PUT /vault-images HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
<CreateBucketConfiguration>
<LocationConstraint>us-vault</LocationConstraint>
</CreateBucketConfiguration>
Exemple de réponse
HTTP/1.1 200 OK
Date: Fri, 17 Mar 2017 17:52:17 GMT
X-Clv-Request-Id: b6483b2c-24ae-488a-884c-db1a93b9a9a6
Accept-Ranges: bytes
Server: Cleversafe/3.9.0.115
X-Clv-S3-Version: 2.5
Content-Length: 0
Créer un compartiment à l'aide de clés de chiffrement gérées par Key Protect ou Hyper Protect Crypto Services (SSE-KP)
Pour créer un compartiment dans lequel les clés de chiffrement sont gérées par Key Protect ou Hyper Protect Crypto Services, il est nécessaire d'avoir accès à une instance de service Key Protect ou Hyper Protect Crypto Services active. Cette opération n'utilise pas de paramètres de requête spécifiques à l'opération.
Pour plus d'informations sur l'utilisation d' Key Protect pour gérer vos clés de chiffrement, consultez la documentation disponible à l'adresse Key Protect.
Pour plus d'informations sur Hyper Protect Crypto Services, voir la documentation.
Le chiffrement géré pour un compartiment interrégional doit utiliser une clé racine provenant d'une instance Key Protect située dans l 'emplacement haute disponibilité
le plus proche (us-south ou jp-tok).
| En-tête | Type | Description |
|---|---|---|
ibm-service-instance-id |
Chaîne | Cet en-tête fait référence à l'instance de service sur laquelle le compartiment doit être créé et à laquelle l'utilisation des données peut être facturée. |
ibm-sse-kp-encryption-algorithm |
Chaîne | Cet en-tête sert à spécifier l'algorithme et la taille de la clé à utiliser avec la clé de chiffrement stockée via Key Protect. La chaîne AES256 doit être affectée à cette valeur. |
ibm-sse-kp-customer-root-key-crn |
Chaîne | Cet en-tête sert à référencer la clé racine spécifique utilisée par Key Protect ou Hyper Protect Crypto Services pour chiffrer ce compartiment. Cette valeur doit correspondre au CRN complet de la clé racine. |
Syntaxe
PUT https://{endpoint}/{bucket-name} # path style
PUT https://{bucket-name}.{endpoint} # virtual host style
Exemple de requête
L'exemple suivant crée un compartiment appelé'secure-files'.
PUT /secure-files HTTP/1.1
Authorization: Bearer {token}
Content-Type: text/plain
Host: s3.us-south.objectstorage.s3.us-south.cloud-object-storage.appdomain.cloud.net
ibm-service-instance-id: {ibm-service-instance-id}
ibm-sse-kp-encryption-algorithm: "AES256"
ibm-sse-kp-customer-root-key-crn: {customer-root-key-id}
Exemple de requête
PUT /secure-files HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
ibm-sse-kp-encryption-algorithm: "AES256"
ibm-sse-kp-customer-root-key-crn: {customer-root-key-id}
Exemple de réponse
HTTP/1.1 200 OK
Date: Wed, 24 Aug 2016 17:45:25 GMT
X-Clv-Request-Id: dca204eb-72b5-4e2a-a142-808d2a5c2a87
Accept-Ranges: bytes
Server: Cleversafe/3.9.0.115
X-Clv-S3-Version: 2.5
x-amz-request-id: dca204eb-72b5-4e2a-a142-808d2a5c2a87
Content-Length: 0
Extraction des en-têtes d'un compartiment
Une requête « HEAD » effectuée sur un compartiment renvoie les en-têtes de ce compartiment.
Les demandes HEAD ne renvoient pas de corps, par conséquent, elles ne peuvent pas renvoyer de messages d'erreur spécifiques, tels que NoSuchBucket, mais uniquement NotFound.
Syntaxe
HEAD https://{endpoint}/{bucket-name} # path style
HEAD https://{bucket-name}.{endpoint} # virtual host style
Exemple de requête
L'exemple suivant extrait les en-têtes du compartiment'images'.
HEAD /images HTTP/1.1
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Authorization:Bearer {token}
Exemple de requête
HEAD /images HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de réponse
HTTP/1.1 200 OK
Date: Wed, 24 Aug 2016 17:46:35 GMT
X-Clv-Request-Id: 0c2832e3-3c51-4ea6-96a3-cd8482aca08a
Accept-Ranges: bytes
Server: Cleversafe/3.9.0.115
X-Clv-S3-Version: 2.5
x-amz-request-id: 0c2832e3-3c51-4ea6-96a3-cd8482aca08a
Content-Length: 0
Exemple de requête
HEAD Les requêtes adressées à des compartiments utilisant le chiffrement « Key Protect » renvoient des en-têtes supplémentaires.
HEAD /secure-files HTTP/1.1
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Authorization:Bearer {token}
Exemple de requête
HEAD /secure-files HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de réponse
HTTP/1.1 200 OK
Date: Wed, 24 Aug 2016 17:46:35 GMT
X-Clv-Request-Id: 0c2832e3-3c51-4ea6-96a3-cd8482aca08a
Accept-Ranges: bytes
Server: Cleversafe/3.9.0.115
X-Clv-S3-Version: 2.5
x-amz-request-id: 0c2832e3-3c51-4ea6-96a3-cd8482aca08a
Content-Length: 0
ibm-sse-kp-enabled: True
ibm-sse-kp-crk-id: {customer-root-key-id}
Répertorier les objets d'un compartiment spécifique (version 2)
Une requête de type « GET » adressée à un compartiment renvoie une liste d'objets, limitée à 1 000 à la fois et classée dans un ordre non lexical. La valeur « StorageClass » renvoyée dans la réponse est une valeur par
défaut, car les opérations liées à la classe de stockage ne sont pas implémentées dans Object Storage. Cette opération n'utilise pas d'en-têtes ou d'éléments de contenu spécifiques à l'opération.
Syntaxe
GET https://{endpoint}/{bucket-name}?list-type=2 # path style
GET https://{bucket-name}.{endpoint}?list-type=2 # virtual host style
Paramètres de requête facultatifs
| Nom | Type | Description |
|---|---|---|
list-type |
Chaîne | Indique la version 2 de l'API et la valeur doit être 2. |
prefix |
Chaîne | Limite la réponse aux noms d'objets commençant par « prefix ». |
delimiter |
Chaîne | Regroupe les objets entre prefix et delimiter. |
encoding-type |
Chaîne | Si des caractères Unicode qui ne sont pas pris en charge par XML sont utilisés dans un nom d'objet, ce paramètre peut avoir pour valeur url afin de coder correctement la réponse. |
max-keys |
Chaîne | Limite le nombre d'objets à afficher dans la réponse. La valeur par défaut et maximale est 1000. |
fetch-owner |
Chaîne | La version 2 de l'API n'inclut pas les informations Owner par défaut. Définissez ce paramètre sur « true » si vous souhaitez que la réponse contienne des informations de type « Owner ». |
continuation-token |
Chaîne | Indique l'ensemble suivant d'objets à renvoyer lorsque votre réponse est tronquée (l'élémentIsTruncated renvoie true).Votre réponse initiale contient l'élément « NextContinuationToken ». Utilisez
ce jeton dans la demande suivante comme valeur pour continuation-token. |
start-after |
Chaîne | Renvoie les noms de clé après un objet de clé spécifique. Ce paramètre n'est valable que dans votre requête initiale. Si un paramètre continuation-token est inclus dans votre demande, ce paramètre est ignoré. |
Exemple de demande (simple)
Cette demande répertorie les objets contenus dans le compartiment "apiary" :
GET /apiary?list-type=2 HTTP/1.1
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Authorization: Bearer {token}
Exemple de demande (simple)
GET /apiary?list-type=2 HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de réponse (simple)
HTTP/1.1 200 OK
Date: Wed, 24 Aug 2016 17:36:24 GMT
X-Clv-Request-Id: 9f39ff2e-55d1-461b-a6f1-2d0b75138861
Accept-Ranges: bytes
Server: Cleversafe/3.13.3.57
X-Clv-S3-Version: 2.5
x-amz-request-id: 9f39ff2e-55d1-461b-a6f1-2d0b75138861
Content-Type: application/xml
Content-Length: 814
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>apiary</Name>
<Prefix/>
<KeyCount>3</KeyCount>
<MaxKeys>1000</MaxKeys>
<Delimiter/>
<IsTruncated>false</IsTruncated>
<Contents>
<Key>drone-bee</Key>
<LastModified>2016-08-25T17:38:38.549Z</LastModified>
<ETag>"0cbc6611f5540bd0809a388dc95a615b"</ETag>
<ChecksumAlgorithm>CRC64NVME</ChecksumAlgorithm>
<ChecksumType>FULL_OBJECT</ChecksumType>
<Size>4</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>
<Contents>
<Key>soldier-bee</Key>
<LastModified>2016-08-25T17:49:06.006Z</LastModified>
<ETag>"37d4c94839ee181a2224d6242176c4b5"</ETag>
<ChecksumAlgorithm>CRC64NVME</ChecksumAlgorithm>
<ChecksumType>FULL_OBJECT</ChecksumType>
<Size>11</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>
<Contents>
<Key>worker-bee</Key>
<LastModified>2016-08-25T17:46:53.288Z</LastModified>
<ETag>"d34d8aada2996fc42e6948b926513907"</ETag>
<ChecksumAlgorithm>CRC64NVME</ChecksumAlgorithm>
<ChecksumType>FULL_OBJECT</ChecksumType>
<Size>467</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>
</ListBucketResult>
Exemple de demande (paramètre max-keys)
Cette demande répertorie les objets contenus dans le compartiment "apiary" avec un nombre maximal de clés renvoyées fixé à 1 :
GET /apiary?list-type=2&max-keys=1 HTTP/1.1
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Authorization: Bearer {token}
Exemple de requête (paramètre « max-keys »)
GET /apiary?list-type=2&max-keys=1 HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de réponse (réponse tronquée)
HTTP/1.1 200 OK
Date: Wed, 24 Aug 2016 17:36:24 GMT
X-Clv-Request-Id: 9f39ff2e-55d1-461b-a6f1-2d0b75138861
Accept-Ranges: bytes
Server: Cleversafe/3.13.3.57
X-Clv-S3-Version: 2.5
x-amz-request-id: 9f39ff2e-55d1-461b-a6f1-2d0b75138861
Content-Type: application/xml
Content-Length: 598
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>apiary</Name>
<Prefix/>
<NextContinuationToken>1dPe45g5uuxjyASPegLq80sQsZKL5OB2by4Iz_7YGR5NjiOENBPZXqvKJN6_PgKGVzZYTlws7qqdWaMklzb8HX2iDxxl72ane3rUFQrvNMeIih49MZ4APUjrAuYI83KxSMmfKHGZyKallFkD5N6PwKg</NextContinuationToken>
<KeyCount>1</KeyCount>
<MaxKeys>1</MaxKeys>
<Delimiter/>
<IsTruncated>true</IsTruncated>
<Contents>
<Key>drone-bee</Key>
<LastModified>2016-08-25T17:38:38.549Z</LastModified>
<ETag>"0cbc6611f5540bd0809a388dc95a615b"</ETag>
<ChecksumAlgorithm>CRC64NVME</ChecksumAlgorithm>
<ChecksumType>FULL_OBJECT</ChecksumType>
<Size>4</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>
</ListBucketResult>
Exemple de demande (paramètre continuation-token)
Cette demande répertorie les objets contenus dans le compartiment "apiary" avec un jeton de continuation spécifié :
GET /apiary?list-type=2&max-keys=1&continuation-token=1dPe45g5uuxjyASPegLq80sQsZKL5OB2by4Iz_7YGR5NjiOENBPZXqvKJN6_PgKGVzZYTlws7qqdWaMklzb8HX2iDxxl72ane3rUFQrvNMeIih49MZ4APUjrAuYI83KxSMmfKHGZyKallFkD5N6PwKg HTTP/1.1
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Authorization: Bearer {token}
Exemple de requête (paramètre « continuation-token »)
GET /apiary?list-type=2&max-keys=1&continuation-token=1dPe45g5uuxjyASPegLq80sQsZKL5OB2by4Iz_7YGR5NjiOENBPZXqvKJN6_PgKGVzZYTlws7qqdWaMklzb8HX2iDxxl72ane3rUFQrvNMeIih49MZ4APUjrAuYI83KxSMmfKHGZyKallFkD5N6PwKg HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de réponse (réponse tronquée, paramètre continuation-token)
HTTP/1.1 200 OK
Date: Wed, 24 Aug 2016 17:36:24 GMT
X-Clv-Request-Id: 9f39ff2e-55d1-461b-a6f1-2d0b75138861
Accept-Ranges: bytes
Server: Cleversafe/3.13.3.57
X-Clv-S3-Version: 2.5
x-amz-request-id: 9f39ff2e-55d1-461b-a6f1-2d0b75138861
Content-Type: application/xml
Content-Length: 604
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>apiary</Name>
<Prefix/>
<ContinuationToken>1dPe45g5uuxjyASPegLq80sQsZKL5OB2by4Iz_7YGR5NjiOENBPZXqvKJN6_PgKGVzZYTlws7qqdWaMklzb8HX2iDxxl72ane3rUFQrvNMeIih49MZ4APUjrAuYI83KxSMmfKHGZyKallFkD5N6PwKg</ContinuationToken>
<NextContinuationToken>1a8j20CqowRrM4epIQ7fTBuyPZWZUeA8Epog16wYu9KhAPNoYkWQYhGURsIQbll1lP7c-OO-V5Vyzu6mogiakC4NSwlK4LyRDdHQgY-yPH4wMB76MfQR61VyxI4TJLxIWTPSZA0nmQQWcuV2mE4jiDA</NextContinuationToken>
<KeyCount>1</KeyCount>
<MaxKeys>1</MaxKeys>
<Delimiter/>
<IsTruncated>true</IsTruncated>
<Contents>
<Key>soldier-bee</Key>
<LastModified>2016-08-25T17:49:06.006Z</LastModified>
<ETag>"37d4c94839ee181a2224d6242176c4b5"</ETag>
<ChecksumAlgorithm>CRC64NVME</ChecksumAlgorithm>
<ChecksumType>FULL_OBJECT</ChecksumType>
<Size>11</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>
</ListBucketResult>
Répertorier les objets d'un compartiment spécifique (fonctionnalité obsolète)
Cette API est incluse à des fins de compatibilité avec une version antérieure. Pour connaître la méthode recommandée pour l'extraction des objets contenus dans un compartiment, voir Version 2.
Une requête de type « GET » adressée à un compartiment renvoie une liste d'objets, limitée à 1 000 à la fois et classée dans un ordre non lexical. La valeur « StorageClass » renvoyée dans la réponse est une valeur
par défaut, car les opérations liées à la classe de stockage ne sont pas implémentées dans Object Storage. Cette opération n'utilise pas d'en-têtes ou d'éléments de contenu spécifiques à l'opération.
Syntaxe
GET https://{endpoint}/{bucket-name} # path style
GET https://{bucket-name}.{endpoint} # virtual host style
Paramètres de requête facultatifs pour la méthode d'objet de liste
| Nom | Type | Description |
|---|---|---|
prefix |
Chaîne | Limite la réponse aux noms d'objets commençant par « prefix ». |
delimiter |
Chaîne | Regroupe les objets entre prefix et delimiter. |
encoding-type |
Chaîne | Si des caractères Unicode qui ne sont pas pris en charge par XML sont utilisés dans un nom d'objet, ce paramètre peut avoir pour valeur url afin de coder correctement la réponse. |
max-keys |
Chaîne | Limite le nombre d'objets à afficher dans la réponse. La valeur par défaut et maximale est 1000. |
marker |
Chaîne | Spécifie l'objet à partir duquel le listage doit commencer, selon l'ordre binaire d' UTF-8. |
Exemple de requête
Cette demande répertorie les objets contenus dans le compartiment "apiary" :
GET /apiary HTTP/1.1
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Authorization: Bearer {token}
Exemple de requête
GET /apiary HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de réponse
HTTP/1.1 200 OK
Date: Wed, 24 Aug 2016 17:36:24 GMT
X-Clv-Request-Id: 9f39ff2e-55d1-461b-a6f1-2d0b75138861
Accept-Ranges: bytes
Server: Cleversafe/3.9.0.115
X-Clv-S3-Version: 2.5
x-amz-request-id: 9f39ff2e-55d1-461b-a6f1-2d0b75138861
Content-Type: application/xml
Content-Length: 909
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>apiary</Name>
<Prefix/>
<Marker/>
<MaxKeys>1000</MaxKeys>
<Delimiter/>
<IsTruncated>false</IsTruncated>
<Contents>
<Key>drone-bee</Key>
<LastModified>2016-08-25T17:38:38.549Z</LastModified>
<ETag>"0cbc6611f5540bd0809a388dc95a615b"</ETag>
<ChecksumAlgorithm>CRC64NVME</ChecksumAlgorithm>
<ChecksumType>FULL_OBJECT</ChecksumType>
<Size>4</Size>
<Owner>
<ID>{account-id}</ID>
<DisplayName>{account-id}</DisplayName>
</Owner>
<StorageClass>STANDARD</StorageClass>
</Contents>
<Contents>
<Key>soldier-bee</Key>
<LastModified>2016-08-25T17:49:06.006Z</LastModified>
<ETag>"37d4c94839ee181a2224d6242176c4b5"</ETag>
<ChecksumAlgorithm>CRC64NVME</ChecksumAlgorithm>
<ChecksumType>FULL_OBJECT</ChecksumType>
<Size>11</Size>
<Owner>
<ID>{account-id}</ID>
<DisplayName>{account-id}</DisplayName>
</Owner>
<StorageClass>STANDARD</StorageClass>
</Contents>
<Contents>
<Key>worker-bee</Key>
<LastModified>2016-08-25T17:46:53.288Z</LastModified>
<ETag>"d34d8aada2996fc42e6948b926513907"</ETag>
<ChecksumAlgorithm>CRC64NVME</ChecksumAlgorithm>
<ChecksumType>FULL_OBJECT</ChecksumType>
<Size>467</Size>
<Owner>
<ID>{account-id}</ID>
<DisplayName>{account-id}</DisplayName>
</Owner>
<StorageClass>STANDARD</StorageClass>
</Contents>
</ListBucketResult>
Suppression d'un compartiment
Une requête « DELETE » envoyée à un compartiment vide entraîne la suppression de ce dernier. Le nom du compartiment est conservé en réserve par le système pendant 5 minutes après la suppression. Au bout de 5 minutes, le nom est
libéré et peut être réutilisé. Seuls les compartiments vides peuvent être supprimés.
Si l'instance de service Object Storage est supprimée, tous les noms de compartiment de cette instance sont conservés en réserve par le système pendant 7 jours. Au bout de 7 jours, les noms sont libérés pour être réutilisés.
Syntaxe
DELETE https://{endpoint}/{bucket-name} # path style
DELETE https://{bucket-name}.{endpoint} # virtual host style
En-têtes facultatifs
| Nom | Type | Description |
|---|---|---|
aspera-ak-max-tries |
Chaîne | Indique le nombre de tentatives de suppression. La valeur par |
| défaut est 2. |
Exemple de requête
DELETE /apiary HTTP/1.1
Host: s3.us.cloud-object-storage.appdomain.cloud
Authorization: Bearer {token}
Exemple de requête
DELETE /apiary HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Le serveur émet la réponse 204 No Content.
Si la demande de suppression porte sur un compartiment non vide, le serveur émet la réponse 409 Conflict.
Exemple de réponse
<Error>
<Code>BucketNotEmpty</Code>
<Message>The bucket you tried to delete is not empty.</Message>
<Resource>/apiary/</Resource>
<RequestId>9d2bbc00-2827-4210-b40a-8107863f4386</RequestId>
<httpStatusCode>409</httpStatusCode>
</Error>
Configurer le verrouillage d'objet sur un compartiment existant
Une demande PUT adressée à un compartiment vide avec le paramètre de requête ?object-lock définit une nouvelle configuration de verrouillage d'objet sur un compartiment.
Syntaxe
PUT https://{endpoint}/{bucket-name}?object-lock # path style
PUT https://{bucket-name}.{endpoint}?object-lock # virtual host style
La configuration du verrouillage d'objet est fournie au format XML dans le corps de la demande. Les nouvelles demandes remplacent les règles de réplication existantes présentes dans le compartiment.
Une configuration de verrouillage d'objet doit inclure une règle.
| En-tête | Type | Description |
|---|---|---|
Content-MD5 |
Chaîne | L' Base64, qui contient le hachage de la charge utile calculé selon l'algorithme « MD5 » sur 128 bits, sert de contrôle d'intégrité afin de garantir que la charge utile n'a pas été altérée pendant le transfert. |
x-amz-checksum-crc32 |
Chaîne | Cet en-tête est la somme de contrôle Base64 encodée, 32 bits CRC32 de l'objet. |
x-amz-checksum-crc32c |
Chaîne | Cet en-tête est la somme de contrôle Base64 encodée, 32 bits CRC32C de l'objet. |
x-amz-checksum-crc64nvme |
Chaîne | Cet en-tête est la somme de contrôle Base64 encodée, 64 bits CRC64NVME de l'objet. La somme de contrôle de CRC64NVME est toujours une somme de contrôle d'objet complet. |
x-amz-checksum-sha1 |
Chaîne | SHA1 Cet en-tête est le condensé de 160 bits de l'objet, codé sur Base64. |
x-amz-checksum-sha256 |
Chaîne | Cet en-tête est le code Base64, 256-bit SHA256 digest de l'objet. |
x-amz-sdk-checksum-algorithm |
Chaîne | Indique l'algorithme utilisé pour créer la somme de contrôle de l'objet lors de l'utilisation du SDK. |
Un en-tête Content-MD5 ou un en-tête checksum (y compris x-amz-checksum-crc32, x-amz-checksum-crc32c, x-amz-checksum-crc64nvme, x-amz-checksum-sha1 ou x-amz-checksum-sha256)
est nécessaire pour vérifier l'intégrité de la charge utile.
Le corps de la demande doit contenir un bloc XML avec le schéma suivant :
| Elément | Type | Enfants | Ancêtre | Contrainte |
|---|---|---|---|---|
ObjectLockConfiguration |
Conteneur | ObjectLockEnabled, Rule |
Aucun | Limite 1. |
ObjectLockEnabled |
Chaîne | Aucun | ObjectLockConfiguration |
La seule valeur valide est ENABLED. |
Rule |
Conteneur | DefaultRetention |
ObjectLockConfiguration |
Limite 1 |
DefaultRetention |
Conteneur | Days, Mode, Years |
Rule |
Limite 1. |
Days |
Entier | Aucun | DefaultRetention |
Nombre de jours que vous souhaitez spécifier pour la durée de conservation par défaut. Il ne peut pas être combiné avec Years. |
Mode |
Chaîne | Aucun | DefaultRetention |
COMPLIANCE ou GOVERNANCE. |
Years |
Entier | Aucun | DefaultRetention |
Nombre d'années que vous souhaitez spécifier pour la durée de conservation par défaut. Il ne peut pas être combiné avec Days. |
Exemple de demande
Cette demande répertorie les objets contenus dans le compartiment "apiary" :
GET /apiary HTTP/1.1
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Authorization: Bearer {token}
Exemple de réponse
HTTP/1.1 200 OK
Date: Wed, 24 Aug 2016 17:36:24 GMT
X-Clv-Request-Id: 9f39ff2e-55d1-461b-a6f1-2d0b75138861
Accept-Ranges: bytes
Server: Cleversafe/3.9.0.115
X-Clv-S3-Version: 2.5
x-amz-request-id: 9f39ff2e-55d1-461b-a6f1-2d0b75138861
Content-Type: application/xml
Content-Length: 909
<ObjectLockConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<ObjectLockEnabled>ENABLED</ObjectLockEnabled>
<Rule>
<DefaultRetention>
<Days>30</Days>
<Mode>COMPLIANCE</Mode>
</DefaultRetention>
</Rule>
</ObjectLockConfiguration>
Liste des téléchargements en plusieurs parties annulés ou incomplets pour un compartiment
Une demande GET émise sur un compartiment avec les paramètres appropriés permet d'extraire des informations sur les envois par téléchargement en plusieurs parties qui sont annulés ou incomplets pour un compartiment.
Syntaxe
GET https://{endpoint}/{bucket-name}?uploads= # path style
GET https://{bucket-name}.{endpoint}?uploads= # virtual host style
Paramètres
| Nom | Type | Description |
|---|---|---|
prefix |
Chaîne | Limite la réponse aux noms d'objets commençant par « {prefix} ». |
delimiter |
Chaîne | Regroupe les objets entre prefix et delimiter. |
encoding-type |
Chaîne | Si des caractères Unicode qui ne sont pas pris en charge par XML sont utilisés dans un nom d'objet, ce paramètre peut avoir pour valeur url afin de coder correctement la réponse. |
max-uploads |
Entier | Limite le nombre d'objets à afficher dans la réponse. La valeur par défaut et maximale est 1000. |
key-marker |
Chaîne | Indique à quel endroit la liste doit commencer. |
upload-id-marker |
Chaîne | Ignoré si « key-marker » n'est pas spécifié; sinon, définit un point à partir duquel commencer à répertorier les éléments situés au-dessus de « upload-id-marker ». |
Exemple de requête
L'exemple suivant extrait tous les téléchargements en plusieurs parties en cours annulés et incomplets.
GET /apiary?uploads= HTTP/1.1
Authorization: Bearer {token}
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de requête
GET /apiary?uploads= HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de réponse (aucun envoi par téléchargement en plusieurs parties n'est en cours)
HTTP/1.1 200 OK
Date: Wed, 5 Oct 2016 15:22:27 GMT
X-Clv-Request-Id: 9fa96daa-9f37-42ee-ab79-0bcda049c671
Accept-Ranges: bytes
Server: Cleversafe/3.9.0.129
X-Clv-S3-Version: 2.5
x-amz-request-id: 9fa96daa-9f37-42ee-ab79-0bcda049c671
Content-Type: application/xml
Content-Length: 374
<ListMultipartUploadsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Bucket>apiary</Bucket>
<KeyMarker/>
<UploadIdMarker/>
<NextKeyMarker>multipart-object-123</NextKeyMarker>
<NextUploadIdMarker>0000015a-df89-51d0-2790-dee1ac994053</NextUploadIdMarker>
<MaxUploads>1000</MaxUploads>
<IsTruncated>false</IsTruncated>
<Upload>
<Key>file</Key>
<UploadId>0000015a-d92a-bc4a-c312-8c1c2a0e89db</UploadId>
<Initiator>
<ID>d4d11b981e6e489486a945d640d41c4d</ID>
<DisplayName>d4d11b981e6e489486a945d640d41c4d</DisplayName>
</Initiator>
<Owner>
<ID>d4d11b981e6e489486a945d640d41c4d</ID>
<DisplayName>d4d11b981e6e489486a945d640d41c4d</DisplayName>
</Owner>
<StorageClass>STANDARD</StorageClass>
<Initiated>2017-03-16T22:09:01.002Z</Initiated>
</Upload>
<Upload>
<Key>multipart-object-123</Key>
<UploadId>0000015a-df89-51d0-2790-dee1ac994053</UploadId>
<Initiator>
<ID>d4d11b981e6e489486a945d640d41c4d</ID>
<DisplayName>d4d11b981e6e489486a945d640d41c4d</DisplayName>
</Initiator>
<Owner>
<ID>d4d11b981e6e489486a945d640d41c4d</ID>
<DisplayName>d4d11b981e6e489486a945d640d41c4d</DisplayName>
</Owner>
<StorageClass>STANDARD</StorageClass>
<Initiated>2017-03-18T03:50:02.960Z</Initiated>
</Upload>
</ListMultipartUploadsResult>
Création d'une liste d'éléments de configuration de partage de ressources d'origine croisée pour un compartiment
Une demande GET émise sur un compartiment avec les paramètres appropriés permet d'extraire des informations sur la configuration de partage de ressources d'origine croisée pour un compartiment.
Syntaxe
GET https://{endpoint}/{bucket-name}?cors= # path style
GET https://{bucket-name}.{endpoint}?cors= # virtual host style
Exemple de requête
L'exemple suivant présente une configuration d' CORS ation sur le compartiment « apiary ».
GET /apiary?cors= HTTP/1.1
Authorization: Bearer {token}
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de requête
GET /apiary?cors= HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de réponse: aucune configuration définie pour « CORS »
HTTP/1.1 200 OK
Date: Wed, 5 Oct 2016 15:20:30 GMT
X-Clv-Request-Id: 0b69bce1-8420-4f93-a04a-35d7542799e6
Accept-Ranges: bytes
Server: Cleversafe/3.9.0.129
X-Clv-S3-Version: 2.5
x-amz-request-id: 0b69bce1-8420-4f93-a04a-35d7542799e6
Content-Type: application/xml
Content-Length: 123
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedOrigin>http://www.ibm.com</AllowedOrigin>
</CORSRule>
</CORSConfiguration>
Création d'une configuration de partage de ressources d'origine croisée pour un compartiment
Une demande PUT émise sur un compartiment avec les paramètres appropriés permet de créer ou de remplacer une configuration de partage de ressources d'origine croisée pour un compartiment.
Syntaxe
PUT https://{endpoint}/{bucket-name}?cors= # path style
PUT https://{bucket-name}.{endpoint}?cors= # virtual host style
Eléments de contenu
Le corps de la demande doit contenir un bloc XML avec le schéma suivant :
| Elément | Type | Enfants | Ancêtre | Contrainte |
|---|---|---|---|---|
CORSConfiguration |
Conteneur | CORSRule |
|
|
CORSRule |
Conteneur | AllowedOrigin, AllowedMethod |
Supprimer |
|
AllowedOrigin |
Chaîne |
|
CORSRule |
Chaîne d'origine valide |
AllowedMethod |
Chaîne |
|
CORSRule |
Chaîne de méthode valide |
| En-tête | Type | Description |
|---|---|---|
Content-MD5 |
Chaîne | L' base64, qui contient le hachage de la charge utile calculé selon l'algorithme « MD5 » sur 128 bits, sert de contrôle d'intégrité afin de s'assurer que la charge utile n'a pas été altérée pendant le transfert. |
x-amz-checksum-crc32 |
Chaîne | Cet en-tête est la somme de contrôle Base64 encodée, 32 bits CRC32 de l'objet. |
x-amz-checksum-crc32c |
Chaîne | Cet en-tête est la somme de contrôle Base64 encodée, 32 bits CRC32C de l'objet. |
x-amz-checksum-crc64nvme |
Chaîne | Cet en-tête est la somme de contrôle Base64 encodée, 64 bits CRC64NVME de l'objet. La somme de contrôle de CRC64NVME est toujours une somme de contrôle d'objet complet. |
x-amz-checksum-sha1 |
Chaîne | SHA1 Cet en-tête est le condensé de 160 bits de l'objet, codé sur Base64. |
x-amz-checksum-sha256 |
Chaîne | Cet en-tête est le code Base64, 256-bit SHA256 digest de l'objet. |
x-amz-sdk-checksum-algorithm |
Chaîne | Indique l'algorithme utilisé pour créer la somme de contrôle de l'objet lors de l'utilisation du SDK. |
Un en-tête Content-MD5 ou un en-tête checksum (y compris x-amz-checksum-crc32, x-amz-checksum-crc32c, x-amz-checksum-crc64nvme, x-amz-checksum-sha1 ou x-amz-checksum-sha256)
est nécessaire pour vérifier l'intégrité de la charge utile. L'extrait suivant montre une façon d'obtenir le contenu de l'en-tête Content-MD5, qui est la représentation binaire d'un hachage base64-encoded MD5.
echo -n (XML block) | openssl dgst -md5 -binary | openssl enc -base64
Exemple de requête
L'exemple suivant ajoute une configuration « CORS » qui autorise les requêtes provenant de www.ibm.com à envoyer des requêtes GET, PUT et POST vers le compartiment.
PUT /apiary?cors= HTTP/1.1
Authorization: Bearer {token}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Content-MD5: M625BaNwd/OytcM7O5gIaQ==
Content-Length: 237
Exemple de requête
PUT /apiary?cors= HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Content-MD5: M625BaNwd/OytcM7O5gIaQ==
Content-Length: 237
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>http://www.ibm.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
</CORSRule>
</CORSConfiguration>
Exemple de réponse
HTTP/1.1 200 OK
Date: Wed, 5 Oct 2016 15:39:38 GMT
X-Clv-Request-Id: 7afca6d8-e209-4519-8f2c-1af3f1540b42
Accept-Ranges: bytes
Server: Cleversafe/3.9.0.129
X-Clv-S3-Version: 2.5
x-amz-request-id: 7afca6d8-e209-4519-8f2c-1af3f1540b42
Content-Length: 0
Suppression d'une configuration de partage de ressources d'origine croisée pour un compartiment
Une demande DELETE émise sur un compartiment avec les paramètres appropriés permet de créer ou de remplacer une configuration de partage de ressources d'origine croisée pour un compartiment.
Syntaxe
DELETE https://{endpoint}/{bucket-name}?cors= # path style
DELETE https://{bucket-name}.{endpoint}?cors= # virtual host style
Exemple de requête
L'exemple suivant supprime une configuration « CORS » pour un compartiment.
DELETE /apiary?cors= HTTP/1.1
Authorization: Bearer {token}
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de requête
DELETE /apiary?cors= HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Le serveur émet la réponse 204 No Content.
Création d'une liste d'éléments de contrainte d'emplacement pour un compartiment
Une demande GET émise sur un compartiment avec le paramètre approprié permet d'extraire des informations sur l'emplacement pour un compartiment.
Syntaxe
GET https://{endpoint}/{bucket-name}?location # path style
GET https://{bucket-name}.{endpoint}?location # virtual host style
Exemple de requête
L'exemple suivant extrait l'emplacement du compartiment "apiary".
GET /apiary?location= HTTP/1.1
Authorization: Bearer {token}
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de requête
GET /apiary?location= HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de réponse
HTTP/1.1 200 OK
Date: Tue, 12 Jun 2018 21:10:57 GMT
X-Clv-Request-Id: 0e469546-3e43-4c6b-b814-5ad0db5b638f
Accept-Ranges: bytes
Server: Cleversafe/3.13.3.57
X-Clv-S3-Version: 2.5
x-amz-request-id: 0e469546-3e43-4c6b-b814-5ad0db5b638f
Content-Type: application/xml
Content-Length: 161
<LocationConstraint xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
us-south-standard
</LocationConstraint>
Création d'une configuration de cycle de vie de compartiment
Une opération PUT utilise le paramètre de requête lifecycle pour définir les paramètres de cycle de vie du compartiment. Un en-tête Content-MD5 ou un en-tête checksum (y compris x-amz-checksum-crc32,
x-amz-checksum-crc32c, x-amz-checksum-crc64nvme, x-amz-checksum-sha1 ou x-amz-checksum-sha256) est nécessaire pour vérifier l'intégrité de la charge utile.
L'extrait suivant montre une façon d'obtenir le contenu de l'en-tête Content-MD5, qui est la représentation binaire d'un hachage base64-encoded MD5.
Syntaxe
PUT https://{endpoint}/{bucket-name}?lifecycle # path style
PUT https://{bucket-name}.{endpoint}?lifecycle # virtual host style
Eléments de contenu
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. |
Expiration |
Conteneur | Days, Date, ExpiredObjectDeleteMarker |
Rule |
Limite 1 |
Prefix |
Chaîne | Aucun | Filter |
Si vous utilisez une règle de transition (archive), la valeur doit être définie sur <Prefix/>. Cette limitation ne s'applique pas aux règles d'expiration. |
Transition |
Conteneur | Days, StorageClass |
Rule |
Limite 1 règle de transition et 1000 règles au total. |
Days |
Entier non négatif | Aucun | Transition |
Doit être une valeur supérieure ou égale à 0. |
Date |
Date | Aucun | Transition |
Elle doit être au format ISO 8601 et la date doit se situer dans le futur. |
StorageClass |
Chaîne | Aucun | Transition |
Doit être défini sur GLACIER ou ACCELERATED. |
ExpiredObjectDeleteMarker |
Booléen | Aucun | Expiration |
L'adresse doit être true ou false. |
NoncurrentVersionExpiration |
Conteneur | NoncurrentDays |
NoncurrentVersionExpiration |
Limite 1 |
NoncurrentDays |
Entier positif | Aucun | Transition |
Doit être une valeur supérieure à 0. |
AbortIncompleteMultipartUpload |
Conteneur | DaysAfterInitiation |
Rule |
Limite 1 |
DaysAfterInitiation |
Entier non négatif | Aucun | AbortIncompleteMultipartUpload |
Doit être une valeur supérieure à 0. |
| En-tête | Type | Description |
|---|---|---|
Content-MD5 |
Chaîne | L' base64, qui contient le hachage de la charge utile calculé selon l'algorithme « MD5 » sur 128 bits, sert de contrôle d'intégrité afin de s'assurer que la charge utile n'a pas été altérée pendant le transfert. |
x-amz-checksum-crc32 |
Chaîne | Cet en-tête est la somme de contrôle Base64 encodée, 32 bits CRC32 de l'objet. |
x-amz-checksum-crc32c |
Chaîne | Cet en-tête est la somme de contrôle Base64 encodée, 32 bits CRC32C de l'objet. |
x-amz-checksum-crc64nvme |
Chaîne | Cet en-tête est la somme de contrôle Base64 encodée, 64 bits CRC64NVME de l'objet. La somme de contrôle de CRC64NVME est toujours une somme de contrôle d'objet complet. |
x-amz-checksum-sha1 |
Chaîne | SHA1 Cet en-tête est le condensé de 160 bits de l'objet, codé sur Base64. |
x-amz-checksum-sha256 |
Chaîne | Cet en-tête est le code Base64, 256-bit SHA256 digest de l'objet. |
x-amz-sdk-checksum-algorithm |
Chaîne | Indique l'algorithme utilisé pour créer la somme de contrôle de l'objet lors de l'utilisation du SDK. |
IBM Cloud® Object Storage IaaS Les comptes (non-IAM) ne peuvent pas définir la classe de stockage de transition sur ACCELERATED.
<LifecycleConfiguration>
<Rule>
<ID>{string}</ID>
<Status>Enabled</Status>
<Filter>
<Prefix/>
</Filter>
<Transition>
<Days>{integer}</Days>
<StorageClass>GLACIER</StorageClass>
</Transition>
</Rule>
</LifecycleConfiguration>
Le fragment suivant montre une façon d'obtenir le contenu de cet en-tête particulier.
echo -n (XML block) | openssl dgst -md5 -binary | openssl enc -base64
Exemple de requête
PUT /apiary?lifecycle HTTP/1.1
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Authorization: {authorization-string}
Content-Type: text/plain
Content-MD5: M625BaNwd/OytcM7O5gIaQ==
Content-Length: 305
Exemple de requête
PUT /apiary?lifecycle HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Content-MD5: M625BaNwd/OytcM7O5gIaQ==
Content-Length: 305
Host: s3.us.cloud-object-storage.appdomain.cloud
<LifecycleConfiguration>
<Rule>
<ID>my-archive-policy</ID>
<Filter>
<Prefix/>
</Filter>
<Status>Enabled</Status>
<Transition>
<Days>20</Days>
<StorageClass>GLACIER</StorageClass>
</Transition>
</Rule>
</LifecycleConfiguration>
Le serveur émet la réponse 200 OK.
<LifecycleConfiguration>
<Rule>
<ID>{string}</ID>
<Status>Enabled</Status>
<Filter>
<Prefix/>
</Filter>
<Expiration>
<Days>{integer}</Days>
</Expiration>
</Rule>
</LifecycleConfiguration>
Le fragment suivant montre une façon d'obtenir le contenu de cet en-tête particulier.
echo -n (XML block) | openssl dgst -md5 -binary | openssl enc -base64
Exemple de requête
PUT /cit-test?lifecycle HTTP/1.1
Host: 192.168.35.22
Date: Fri, 28 Feb 2020 14:12:06 +0000
Authorization: AWS MOfXYiHQ9QTyD2ALoiOh:WrlFRE2KMmhutBf3CxIZoNLl/ko=
Content-MD5: To3JYtaVNR3+aGYtl1dlmw==
Content-Length: 321
<LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Rule>
<ID>ID1</ID>
<Status>Enabled</Status>
<Filter>
<Prefix/>
</Filter>
<Expiration>
<Days>100</Days>
</Expiration>
</Rule>
</LifecycleConfiguration>
Exemple de réponse Le serveur répond avec « 200 OK ».
We are completely uploaded and fine
HTTP/1.1 200 OK
Date: Fri, 28 Feb 2020 14:12:06 GMT
X-Clv-Request-Id: 587d909f-4939-41ef-8c16-80aea16a0587
Server: Cleversafe/3.14.9.53
X-Clv-S3-Version: 2.5
x-amz-request-id: 587d909f-4939-41ef-8c16-80aea16a0587
Content-Length: 0
Exemple de requête
PUT /{bucket-name}?lifecycle HTTP/1.1
Authorization: Bearer {token}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
ibm-service-instance-id: {ibm-service-instance-id}
Content-Length: 123
Exemple de requête
PUT /{bucket-name}?lifecycle HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Content-Length: 123
Extraction d'une configuration de cycle de vie de compartiment
Une opération GET utilise le paramètre de requête lifecycle pour extraire les paramètres de cycle de vie du compartiment.
Syntaxe
GET https://{endpoint}/{bucket-name}?lifecycle # path style
GET https://{bucket-name}.{endpoint}?lifecycle # virtual host style
Exemple de requête
GET /apiary?lifecycle HTTP/1.1
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Authorization: {authorization-string}
Exemple de requête
GET /apiary?lifecycle HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Réponse exemple
<LifecycleConfiguration>
<Rule>
<ID>my-archive-policy</ID>
<Filter>
<Prefix/>
</Filter>
<Status>Enabled</Status>
<Transition>
<Days>20</Days>
<StorageClass>GLACIER</StorageClass>
</Transition>
</Rule>
</LifecycleConfiguration>
Exemple de requête
GET /cit_dump-log?lifecycle HTTP/1.1
Host: 192.168.35.22
User-Agent: curl/7.64.1
Accept: */*
Date: Fri, 28 Feb 2020 14:00:43 +0000
Authorization: AWS MOfXYiHQ9QTyD2ALoiOh:iKm2QNetyW740kylP6ja2pze3DM=
Content-MD5: 1B2M2Y8AsgTpgAmY7PhCfg==
Réponse exemple
HTTP/1.1 200 OK
Date: Fri, 28 Feb 2020 14:00:43 GMT
X-Clv-Request-Id: ecbf9294-284d-4169-b2cd-5d52b2450808
Server: Cleversafe/3.14.9.53
X-Clv-S3-Version: 2.5
Accept-Ranges: bytes
x-amz-request-id: ecbf9294-284d-4169-b2cd-5d52b2450808
Content-Type: application/xml
Content-Length: 276
<LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Rule>
<ID>ID1</ID>
<Status>Enabled</Status>
<Filter>
<Prefix/>
</Filter>
<Expiration>
<Days>270</Days>
</Expiration>
</Rule>
</LifecycleConfiguration>
Suppression des données périmées à l'aide de règles d'expiration
Toute action d'expiration pour les objets soumis à la politique de conservation « Immutable Object Storage » (Immutable : ne pas supprimer) d'un compartiment est reportée jusqu'à ce que la politique de conservation ne soit plus appliquée.
Pour plus d'informations sur l'utilisation de la configuration de cycle de vie pour supprimer des objets, consultez la documentation.
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. La politique est définie comme un ensemble de règles comprenant les paramètres suivants : ID, Status, Filter et Expiration.
| En-tête | Type | Description |
|---|---|---|
Content-MD5 |
Chaîne | L' Base64, qui contient le hachage de la charge utile calculé selon l'algorithme « MD5 » sur 128 bits, sert de contrôle d'intégrité afin de garantir que la charge utile n'a pas été altérée pendant le transfert. |
x-amz-checksum-crc32 |
Chaîne | Cet en-tête est la somme de contrôle Base64 encodée, 32 bits CRC32 de l'objet. |
x-amz-checksum-crc32c |
Chaîne | Cet en-tête est la somme de contrôle Base64 encodée, 32 bits CRC32C de l'objet. |
x-amz-checksum-crc64nvme |
Chaîne | Cet en-tête est la somme de contrôle Base64 encodée, 64 bits CRC64NVME de l'objet. La somme de contrôle de CRC64NVME est toujours une somme de contrôle d'objet complet. |
x-amz-checksum-sha1 |
Chaîne | SHA1 Cet en-tête est le condensé de 160 bits de l'objet, codé sur Base64. |
x-amz-checksum-sha256 |
Chaîne | Cet en-tête est le code Base64, 256-bit SHA256 digest de l'objet. |
x-amz-sdk-checksum-algorithm |
Chaîne | Indique l'algorithme utilisé pour créer la somme de contrôle de l'objet lors de l'utilisation du SDK. |
Un en-tête Content-MD5 ou un en-tête checksum (y compris x-amz-checksum-crc32, x-amz-checksum-crc32c, x-amz-checksum-crc64nvme, x-amz-checksum-sha1 ou x-amz-checksum-sha256)
est nécessaire pour vérifier l'intégrité de la charge utile.
L'extrait suivant montre une façon d'obtenir le contenu de l'en-tête Content-MD5, qui est la représentation binaire d'un hachage base64-encoded MD5.
echo -n (XML block) | openssl dgst -md5 -binary | openssl enc -base64
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, Expiration |
LifecycleConfiguration |
Limite 1000. |
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 |
La règle s'applique à tous les objets dont les clés correspondent à ce préfixe. |
Expiration |
Conteneur | Days ou Date |
Rule |
Limite 1. |
Days |
Entier non négatif | Aucun | Expiration |
Doit être une valeur supérieure à 0. |
Date |
Date | Aucun | Expiration |
Doit être au format ISO 8601. |
Syntaxe
PUT https://{endpoint}/{bucket}?lifecycle # path style
PUT https://{bucket}.{endpoint}?lifecycle # virtual host style
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: M625BaNwd/OytcM7O5gIaQ==
Content-Length: 305
<LifecycleConfiguration>
<Rule>
<ID>id1</ID>
<Filter />
<Status>Enabled</Status>
<Expiration>
<Days>60</Days>
</Expiration>
</Rule>
</LifecycleConfiguration>
Suppression de la configuration de cycle de vie d'un compartiment
Une demande DELETE émise sur un compartiment avec les paramètres appropriés permet de retirer des configurations de cycle de vie pour un compartiment.
Syntaxe
DELETE https://{endpoint}/{bucket-name}?lifecycle # path style
DELETE https://{bucket-name}.{endpoint}?lifecycle # virtual host style
Exemple de requête
DELETE /apiary?lifecycle HTTP/1.1
Authorization: {authorization-string}
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de requête
DELETE /apiary?lifecycle HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Le serveur émet la réponse 204 No Content.
Exemple de requête
DELETE /cit-test?lifecycle HTTP/1.1
Host: 192.168.35.22
User-Agent: curl/7.64.1
Accept: */*
Date: Fri, 28 Feb 2020 14:16:47 +0000
Authorization: AWS MOfXYiHQ9QTyD2ALoiOh:n25GU28DiBgkNVgET5hKmLmp938=
Content-MD5: 1B2M2Y8AsgTpgAmY7PhCfg==
Exemple de réponse
HTTP/1.1 204 No Content
Date: Fri, 28 Feb 2020 14:16:47 GMT
X-Clv-Request-Id: 3e8bdf1e-b611-4b83-a404-e7d3e58e60b0
Server: Cleversafe/3.14.9.53
X-Clv-S3-Version: 2.5
x-amz-request-id: 3e8bdf1e-b611-4b83-a404-e7d3e58e60b0
Le serveur émet la réponse 204 No Content.
Ajout d'une règle de conservation à un compartiment existant
La fonction Immutable Object Storage est disponible uniquement dans certaines régions, voir Services intégrés pour obtenir des détails. Ce service nécessite également un forfait « Standard ». Pour plus d'informations, voir la section sur la tarification.
Pour en savoir plus sur Immutable Object Storage, consultez la documentation.
Les valeurs minimales et maximales prises en charge pour les paramètres de durée de conservation MinimumRetention, DefaultRetention et MaximumRetention vont de 0 jour au minimum à 365 243 jours (1 000 ans)
au maximum.
Cette opération n'utilise pas de paramètres de requête supplémentaires. L'en-tête Content-MD5 ou l'en-tête checksum (y compris x-amz-checksum-crc32, x-amz-checksum-crc32c, x-amz-checksum-crc64nvme,
x-amz-checksum-sha1 ou x-amz-checksum-sha256) est nécessaire pour vérifier l'intégrité de la charge utile. L'extrait suivant montre une façon d'obtenir le contenu de l'en-tête Content-MD5, qui est la
représentation binaire d'un hachage base64-encoded MD5.
Les règles sont appliquées jusqu'à la fin d'une période de conservation et ne peuvent pas être modifiées tant que la période de conservation n'est pas arrivée à expiration. Bien que IBM Cloud® Object Storage utilise l'API S3 pour la plupart des opérations, les API utilisées pour configurer les politiques de conservation ne sont pas les mêmes que celles de l'API S3, même si certaines terminologies peuvent être communes. Lisez attentivement cette documentation afin d'empêcher tout utilisateur de votre organisation de créer des objets qui ne peuvent être supprimés, même par les administrateurs d' IBM Cloud.
echo -n (XML block) | openssl dgst -md5 -binary | openssl enc -base64
Syntaxe
PUT https://{endpoint}/{bucket-name}?protection= # path style
PUT https://{bucket-name}.{endpoint}?protection= # virtual host style
Le corps de la demande doit contenir un bloc XML avec le schéma suivant :
| Elément | Type | Enfants | Ancêtre | Contrainte |
|---|---|---|---|---|
ProtectionConfiguration |
Conteneur | Status, MinimumRetention, MaximumRetention, DefaultRetention |
|
|
Status |
Chaîne |
|
ProtectionConfiguration |
Chaîne de statut valide |
MinimumRetention |
Conteneur | Days |
ProtectionConfiguration |
|
MaximumRetention |
Conteneur | Days |
ProtectionConfiguration |
|
DefaultRetention |
Conteneur | Days |
ProtectionConfiguration |
|
Days |
Entier |
|
MinimumRetention, MaximumRetention, DefaultRetention |
Entier de conservation valide |
| En-tête | Type | Description |
|---|---|---|
Content-MD5 |
Chaîne | L' base64, qui contient le hachage de la charge utile calculé selon l'algorithme « MD5 » sur 128 bits, sert de contrôle d'intégrité afin de s'assurer que la charge utile n'a pas été altérée pendant le transfert. |
x-amz-checksum-crc32 |
Chaîne | Cet en-tête est la somme de contrôle Base64 encodée, 32 bits CRC32 de l'objet. |
x-amz-checksum-crc32c |
Chaîne | Cet en-tête est la somme de contrôle Base64 encodée, 32 bits CRC32C de l'objet. |
x-amz-checksum-crc64nvme |
Chaîne | Cet en-tête est la somme de contrôle Base64 encodée, 64 bits CRC64NVME de l'objet. La somme de contrôle de CRC64NVME est toujours une somme de contrôle d'objet complet. |
x-amz-checksum-sha1 |
Chaîne | SHA1 Cet en-tête est le condensé de 160 bits de l'objet, codé sur Base64. |
x-amz-checksum-sha256 |
Chaîne | Cet en-tête est le code Base64, 256-bit SHA256 digest de l'objet. |
x-amz-sdk-checksum-algorithm |
Chaîne | Indique l'algorithme utilisé pour créer la somme de contrôle de l'objet lors de l'utilisation du SDK. |
Exemple de requête
PUT /example-bucket?protection= HTTP/1.1
Authorization: {authorization-string}
x-amz-date: 20181011T190354Z
x-amz-content-sha256: 2938f51643d63c864fdbea618fe71b13579570a86f39da2837c922bae68d72df
Content-MD5: GQmpTNpruOyK6YrxHnpj7g==
Content-Type: text/plain
Host: 67.228.254.193
Content-Length: 299
<ProtectionConfiguration>
<Status>Retention</Status>
<MinimumRetention>
<Days>100</Days>
</MinimumRetention>
<MaximumRetention>
<Days>10000</Days>
</MaximumRetention>
<DefaultRetention>
<Days>2555</Days>
</DefaultRetention>
</ProtectionConfiguration>
Exemple de réponse
HTTP/1.1 200 OK
Date: Wed, 5 Oct 2018 15:39:38 GMT
X-Clv-Request-Id: 7afca6d8-e209-4519-8f2c-1af3f1540b42
Accept-Ranges: bytes
Server: Cleversafe/3.14.1
X-Clv-S3-Version: 2.5
x-amz-request-id: 7afca6d8-e209-4519-8f2c-1af3f1540b42
Content-Length: 0
Configurer un compartiment pour l'hébergement d'un site web statique
Une commande « PUT » envoyée à un compartiment avec les paramètres appropriés permet de créer ou de remplacer la configuration d'un site web statique pour ce compartiment.
Syntaxe
PUT https://{endpoint}/{bucket-name}?website # path style
PUT https://{bucket-name}.{endpoint}?website # virtual host style
Eléments de contenu
Le corps de la demande doit contenir un bloc XML avec le schéma suivant :
| Elément | Type | Enfants | Ancêtre | Remarques |
|---|---|---|---|---|
WebsiteConfiguration |
Conteneur | ErrorDocument, IndexDocument, RedirectAllRequestsTo, RoutingRule |
|
Obligatoire |
ErrorDocument |
Conteneur | Key |
WebsiteConfiguration |
|
Key |
Chaîne |
|
ErrorDocument |
|
IndexDocument |
Conteneur | Suffix |
WebsiteConfiguration |
|
Suffix |
Chaîne |
|
IndexDocument |
|
RedirectAllRequestsTo |
Conteneur | HostName, Protocol |
WebsiteConfiguration |
S'il est indiqué, il doit s'agir du seul élément spécifié |
HostName |
Chaîne |
|
RedirectAllRequestsTo |
|
Protocol |
Chaîne |
|
RedirectAllRequestsTo |
|
RoutingRules |
Conteneur | RoutingRule |
WebsiteConfiguration |
|
RoutingRule |
Conteneur | Condition, Redirect |
RoutingRules |
|
Condition |
Conteneur | HttpErrorCodeReturnedEquals, KeyPrefixEquals |
RoutingRule |
|
HttpErrorCodeReturnedEquals |
Chaîne |
|
Condition |
|
KeyPrefixEquals |
Chaîne |
|
Condition |
|
Redirect |
Conteneur | HostName, HttpRedirectCode, Protocol, ReplaceKeyPrefixWith, ReplaceKeyWith |
RoutingRule |
|
HostName |
Chaîne |
|
Redirect |
|
HttpRedirectCode |
Chaîne |
|
Redirect |
|
Protocol |
Chaîne |
|
Redirect |
|
ReplaceKeyPrefixWith |
Chaîne |
|
Redirect |
|
ReplaceKeyWith |
Chaîne |
|
Redirect |
|
Exemple de demande
L'exemple suivant ajoute une configuration de site Web qui sert un site Web de base qui recherche un fichier index.html dans chaque préfixe. Par exemple, une demande envoyée à /apiary/images/ sert le contenu de /apiary/images/index.html sans qu'il soit nécessaire de spécifier le fichier réel.
PUT /apiary?website HTTP/1.1
Authorization: Bearer {token}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Content-Length: 119
PUT /apiary?website HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Content-Length: 119
<WebsiteConfiguration>
<IndexDocument>
<Suffix>index.html</Suffix>
</IndexDocument>
</WebsiteConfiguration>
Exemple de réponse
HTTP/1.1 200 OK
Date: Wed, 5 Oct 2020 15:39:38 GMT
X-Clv-Request-Id: 7afca6d8-e209-4519-8f2c-1af3f1540b42
Accept-Ranges: bytes
Content-Length: 0
Supprimer une configuration de site Web pour un compartiment
Une demande DELETE envoyée à un compartiment avec les paramètres appropriés supprime la configuration du site Web pour un compartiment.
Syntaxe
DELETE https://{endpoint}/{bucket-name}?website # path style
DELETE https://{bucket-name}.{endpoint}?website # virtual host style
Exemple de requête
L'exemple suivant supprime une configuration de site Web pour un compartiment.
DELETE /apiary?website HTTP/1.1
Authorization: Bearer {token}
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de requête
DELETE /apiary?website HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Le serveur émet la réponse 204 No Content.
Bloquer les listes de contrôle d'accès publiques sur un compartiment
Une demande PUT émise vers un compartiment avec les paramètres appropriés empêche l'ajout de listes de contrôle d'accès d'accès public sur un compartiment. Il peut être défini pour faire échouer les nouvelles demandes de liste de
contrôle d'accès ou pour les ignorer. BlockPublicAcls n'affecte pas les listes de contrôle d'accès existantes, mais IgnorePublicAcls ignore les listes de contrôle d'accès existantes. Cette opération n'affecte pas les règles d'accès public IAM.
Syntaxe
PUT https://{endpoint}/{bucket-name}?publicAccessBlock # path style
PUT https://{bucket-name}.{endpoint}?publicAccessBlock # virtual host style
Eléments de contenu
Le corps de la demande doit contenir un bloc XML avec le schéma suivant :
| Elément | Type | Enfants | Ancêtre | Remarques |
|---|---|---|---|---|
| PublicAccessBlockConfiguration | Conteneur | BlockPublicAcls, IgnorePublicAcls |
|
Obligatoire |
| BlockPublicAcls | Booléen |
|
PublicAccessBlockConfiguration |
|
| IgnorePublicAcls | Booléen |
|
PublicAccessBlockConfiguration |
|
Exemple de demande
PUT /apiary?publicAccessBlock HTTP/1.1
Authorization: Bearer {token}
Host: s3.us.cloud-object-storage.appdomain.cloud
Content-Length: 155
PUT /apiary?publicAccessBlock HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Host: s3.us.cloud-object-storage.appdomain.cloud
Content-Length: 155
<PublicAccessBlockConfiguration>
<BlockPublicAcls>True</BlockPublicAcls>
<IgnorePublicAcls>True</IgnorePublicAcls>
</PublicAccessBlockConfiguration>
Exemple de réponse
HTTP/1.1 200 OK
Date: Mon, 02 Nov 2020 15:39:38 GMT
X-Clv-Request-Id: 7afca6d8-e209-4519-8f2c-1af3f1540b42
Accept-Ranges: bytes
Content-Length: 0
Vérifier un bloc de liste de contrôle d'accès public pour un compartiment
Un GET émis pour un compartiment avec les paramètres appropriés renvoie la configuration de bloc de liste de contrôle d'accès pour un compartiment.
Syntaxe
GET https://{endpoint}/{bucket-name}?publicAccessBlock # path style
GET https://{bucket-name}.{endpoint}?publicAccessBlock # virtual host style
Exemple de requête
L'exemple suivant lit un bloc d'accès public pour un compartiment.
GET /apiary?publicAccessBlock HTTP/1.1
Authorization: Bearer {token}
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de requête
GET /apiary?publicAccessBlock HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
HTTP/1.1 200 OK
Date: Mon, 02 Nov 2020 19:52:56 GMT
X-Clv-Request-Id: 7c9079b1-2833-4abc-ba10-466ef06725b2
Server: Cleversafe/3.15.2.31
X-Clv-S3-Version: 2.5
Accept-Ranges: bytes
Content-Type: application/xml
Content-Length: 248
<PublicAccessBlockConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<BlockPublicAcls>true</BlockPublicAcls>
<IgnorePublicAcls>true</IgnorePublicAcls>
</PublicAccessBlockConfiguration>
Supprimer un bloc de liste de contrôle d'accès public d'un compartiment
Un DELETE émis pour un compartiment avec les paramètres appropriés supprime le bloc de liste de contrôle d'accès public d'un compartiment.
Syntaxe
DELETE https://{endpoint}/{bucket-name}?publicAccessBlock # path style
DELETE https://{bucket-name}.{endpoint}?publicAccessBlock # virtual host style
Exemple de requête
L'exemple suivant supprime un bloc de liste de contrôle d'accès pour un compartiment.
DELETE /apiary?publicAccessBlock HTTP/1.1
Authorization: Bearer {token}
Host: s3.us.cloud-object-storage.appdomain.cloud
Exemple de requête
DELETE /apiary?publicAccessBlock HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Le serveur émet la réponse 204 No Content.
Opérations de la politique de sauvegarde
L'API Backup Policy d' IBM Cloud® Object Storage fournit des opérations permettant de créer, gérer et interagir avec les politiques de sauvegarde. Les politiques de sauvegarde définissent la manière dont les données contenues dans les godets sont sauvegardées dans les espaces de stockage.
Pour plus d'informations sur les autorisations et l'accès, voir Autorisations de la politique de sauvegarde.
Créer une stratégie de sauvegarde
Une requête POST vers le point de terminaison /buckets/{bucket}/backup_policies crée une nouvelle politique de sauvegarde pour un godet.
| En-tête | Type | Obligatoire ? | Description |
|---|---|---|---|
MD5 |
Chaîne | Non | MD5 hachage du contenu. S'il est fourni, le hachage de la demande doit correspondre. |
| Paramètre du chemin d'accès | Type | Obligatoire ? | Description |
|---|---|---|---|
bucket_name |
Chaîne | Oui | Le nom du seau auquel la politique de sauvegarde est appliquée. |
Syntaxe
POST https://{endpoint}/buckets/{bucket}/backup_policies
Corps de demande
{
"policy_name": "myBackupPolicy",
"initial_retention": {
"delete_after_days": 10
},
"backup_type": "continuous",
"target_backup_vault_crn": "crn:v1:bluemix:public:cloud-object-storage:global:a1229395:1a0ec336-f391-4091-a6fb-5e084a4c56f4:backup-vault:backup-vault-name"
}
Exemple de demande
POST /buckets/myBucket/backup_policies HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
Host: config.cloud-object-storage.cloud.ibm.com
{
"initial_retention": {
"delete_after_days": 10
},
"policy_name": "myBackupPolicy",
"target_backup_vault_crn": "crn:v1:bluemix:public:cloud-object-storage:global:2de9d5b5:12b951c9-d4e1-61a4-518c-3acc2034ba30:backup-vault:l4pi16n8rt--ufqb7.r-fw2ziy",
"backup_type": "continuous"
}
Exemple de réponse
{
"policy_name": "myBackupPolicy",
"initial_retention": {
"delete_after_days": 10
},
"backup_type": "continuous",
"policy_id": "44d3dd41-d616-4d25-911a-9ef7fbf28aef",
"policy_status": "pending",
"target_backup_vault_crn": "crn:v1:bluemix:public:cloud-object-storage:global:a1229395:1a0ec336-f391-4091-a6fb-5e084a4c56f4:backup-vault:backup-vault-name"
}
Liste des politiques de sauvegarde
Une requête GET vers le point de terminaison /buckets/{bucket}/backup_policies permet de récupérer toutes les politiques de sauvegarde d'un seau.
| Paramètre du chemin d'accès | Type | Obligatoire ? | Description |
|---|---|---|---|
bucket_name |
Chaîne | Oui | Le nom du seau pour lequel la liste des politiques de sauvegarde doit être établie. |
Syntaxe
GET https://{endpoint}/buckets/{bucket}/backup_policies
Exemple de demande
GET /buckets/myBucket/backup_policies HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
Host: config.cloud-object-storage.cloud.ibm.com
Exemple de réponse
[
{
"policy_name": "myBackupPolicy",
"initial_retention": {
"delete_after_days": 10
},
"backup_type": "continuous",
"policy_id": "44d3dd41-d616-4d25-911a-9ef7fbf28aef",
"policy_status": "active",
"target_backup_vault_crn": "crn:v1:bluemix:public:cloud-object-storage:global:a1229395:8dfbcba4e6a740e3866020847e525436:backup-vault:backup-vault-name"
}
]
Obtenir les détails de la politique de sauvegarde
Une requête GET vers le point de terminaison /buckets/{bucket}/backup_policies/{policy_id} permet de récupérer les détails d'une politique de sauvegarde spécifique.
| Paramètre du chemin d'accès | Type | Obligatoire ? | Description |
|---|---|---|---|
bucket_name |
Chaîne | Oui | Nom du compartiment. |
policy_id |
Chaîne | Oui | L'identifiant de la stratégie de sauvegarde. |
Syntaxe
GET https://{endpoint}/buckets/{bucket}/backup_policies/{policy_id}
Exemple de demande
GET /buckets/myBucket/backup_policies/44d3dd41-d616-4d25-911a-9ef7fbf28aef HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
Host: config.cloud-object-storage.cloud.ibm.com
Exemple de réponse
{
"policy_name": "myBackupPolicy",
"backup_type": "continuous",
"policy_id": "44d3dd41-d616-4d25-911a-9ef7fbf28aef",
"policy_status": "active",
"target_backup_vault_crn": "crn:v1:bluemix:public:cloud-object-storage:global:a1229395:1a0ec336-f391-4091-a6fb-5e084a4c56f4:backup-vault:backup-vault-name",
"initial_retention": {
"delete_after_days": 10
}
}
Supprimer une politique de sauvegarde
Une requête DELETE adressée au point de terminaison /buckets/{bucket}/backup_policies/{policy_id} supprime une politique de sauvegarde spécifique.
| Paramètre du chemin d'accès | Type | Obligatoire ? | Description |
|---|---|---|---|
bucket_name |
Chaîne | Oui | Nom du compartiment. |
policy_id |
Chaîne | Oui | L'identifiant de la stratégie de sauvegarde. |
Syntaxe
DELETE https://{endpoint}/buckets/{bucket}/backup_policies/{policy_id}
Exemple de demande
DELETE /buckets/myBucket/backup_policies/44d3dd41-d616-4d25-911a-9ef7fbf28aef HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
Host: config.cloud-object-storage.cloud.ibm.com
Exemple de réponse
HTTP/1.1 204 No Content
Pour plus d'informations sur les opérations de politique de sauvegarde, voir Gestion de l'espace de stockage.
Etapes suivantes
Pour plus d'informations, voir Opérations d'objet.