Nettoyage des téléchargements multiparties incomplets

Cette règle de cycle de vie arrête les téléchargements en plusieurs parties si les téléchargements ne sont pas terminés dans un nombre de jours défini après le lancement.

Vous pouvez définir des règles de cycle de vie pour les objets en utilisant la console web, l'API REST et des outils tiers intégrés à IBM Cloud Object Storage.

  • Une nouvelle règle peut être ajoutée à tout moment à un seau nouveau ou existant.
  • Une règle existante peut être modifiée ou désactivée.

Ces téléchargements incomplets n'apparaissent pas dans la console, mais les parties téléchargées continuent d'augmenter les frais d'utilisation et de facturation. La configuration de règles de cycle de vie pour supprimer automatiquement les téléchargements incomplets relève de la responsabilité de l'utilisateur.

Attributs des règles d'expiration

Chaque règle d'expiration comporte les attributs suivants :

ID

L'ID d'une règle doit être unique dans la configuration de cycle de vie du compartiment.

AbortIncompleteMultipartUpload

Le bloc AbortIncompleteMultipartUpload contient les détails qui régissent l'annulation automatique des téléchargements. Le bloc contient une seule zone: DaysAfterInitiation.

Préfixe

Chaîne facultative qui sera mise en correspondance avec le préfixe du nom de l'objet dans le compartiment. Une règle avec un préfixe ne s'applique qu'aux objets concordants. Vous pouvez utiliser plusieurs règles pour des actions différentes pour des préfixes différents dans le même seau.

Statut

Une règle peut être activée ou désactivée. Une règle est active uniquement lorsqu'elle est activée.

Exemples de configuration de cycle de vie

Cette configuration fait expirer tous les téléchargements qui ne se sont pas terminés au bout de 3 jours.

<LifecycleConfiguration>
    <Rule>
        <ID>delete-after-3-days</ID>
        <Filter />
        <Status>Enabled</Status>
        <AbortIncompleteMultipartUpload>
            <DaysAfterInitiation>3</DaysAfterInitiation>
        </AbortIncompleteMultipartUpload>
    </Rule>
</LifecycleConfiguration>

Vous pouvez également combiner des règles. Cette configuration annule les téléchargements inactifs au bout de 5 jours, archive tous les objets 90 jours après leur création et supprime tous les objets portant le préfixe foo/ au bout de 180 jours.

<LifecycleConfiguration>
    <Rule>
        <ID>archive-first</ID>
        <Filter />
        <Status>Enabled</Status>
    <Transition>
        <Days>90</Days>
        <StorageClass>GLACIER</StorageClass>
    </Transition>
    </Rule>
    <Rule>
        <ID>then-delete</ID>
    <Filter>
        <Prefix>foo/</Prefix>
    </Filter>
        <Status>Enabled</Status>
        <Expiration>
            <Days>180</Days>
        </Expiration>
    </Rule>
    <Rule>
        <ID>delete-after-3-days</ID>
        <Status>Enabled</Status>
		<AbortIncompleteMultipartUpload>
		    <DaysAfterInitiation>3</DaysAfterInitiation>
        </AbortIncompleteMultipartUpload>
    </Rule>
</LifecycleConfiguration>

Utilisation de l'API et des SDK

Vous pouvez gérer les règles de cycle de vie de manière programmatique en utilisant l'API REST ou les SDK IBM COS.

Référence de l'interface de programme d'application REST

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 règle est définie comme un ensemble de règles composé des paramètres suivants : ID, Status, Filter et Expiration.

Les utilisateurs de Cloud IAM doivent avoir le rôle Writer pour ajouter une politique de cycle de vie à partir d'un panier.

Infrastructure classique Les utilisateurs doivent avoir les droits Owner sur le seau pour ajouter une politique de cycle de vie à partir d'un seau.

En-têtes facultatifs
En-tête Type Description
Content-MD5 Chaîne MD5 Le hachage base64 codé sur 128 bits de la charge utile, qui est utilisé comme contrôle d'intégrité pour garantir que la charge utile n'a pas été modifiée en cours de route.
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.

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 :

Corps du schéma de la demande
Elément Type Enfants Ancêtre Contrainte
LifecycleConfiguration Conteneur Rule Aucun Limite 1.
Rule Conteneur ID, Status, Filter, AbortIncompleteMultipartUpload LifecycleConfiguration Limite 1000.
ID Chaîne Aucun Rule Doit être composé de (a-z,A-Z0-9) et des symboles suivants : ! _ . * ' ( ) -
Filter Chaîne Prefix Rule Doit contenir un élément Prefix ou être auto-fermé (<Filter />).
Prefix Chaîne Aucun Filter La règle s'applique à tous les objets dont les clés correspondent à ce préfixe.
AbortIncompleteMultipartUpload Container DaysAfterInitiation Rule Limite 1.
DaysAfterInitiation Entier non négatif Aucun AbortIncompleteMultipartUpload Doit être une valeur supérieure à 0.

Le corps de la demande doit contenir un bloc XML avec le schéma présenté dans le tableau (voir l'exemple 1).

<LifecycleConfiguration>
	<Rule>
		<ID>delete-after-3-days</ID>
        <Filter />
		<Status>Enabled</Status>
		<AbortIncompleteMultipartUpload>
			<DaysAfterInitiation>3</DaysAfterInitiation>
		</AbortIncompleteMultipartUpload>
	</Rule>
</LifecycleConfiguration>

Syntaxe

PUT https://{endpoint}/{bucket}?lifecycle # path style
PUT https://{bucket}.{endpoint}?lifecycle # virtual host style

Exemple de demande

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>delete-after-3-days</ID>
        <Filter />
		<Status>Enabled</Status>
		<AbortIncompleteMultipartUpload>
			<DaysAfterInitiation>3</DaysAfterInitiation>
		</AbortIncompleteMultipartUpload>
	</Rule>
</LifecycleConfiguration>

Exemple de code à utiliser avec le SDK COS NodeJS

L'utilisation des SDK IBM Cloud® Object Storage nécessite uniquement d'appeler les fonctions appropriées avec les paramètres corrects et la configuration adéquate.

var aws = require('ibm-cos-sdk');
var ep = new aws.Endpoint('s3.us-south.cloud-object-storage.appdomain.cloud');
var config = {
    endpoint: ep,
    apiKeyId: 'ZRZDoNoUseOLL7bRO8SAMPLEHPUzUL_-fsampleyYE',
    ibmAuthEndpoint: 'https://iam.cloud.ibm.com/identity/token',
    serviceInstanceId: 'crn:v1:bluemix:public:cloud-object-storage:global:a/<CREDENTIAL_ID_AS_GENERATED>:<SERVICE_ID_AS_GENERATED>::',
};
var s3 = new aws.S3(config);

var params = {
  Bucket: 'STRING_VALUE', /* required */
  LifecycleConfiguration: {
    Rules: [ /* required */
      {
        Status: 'Enabled', /* required */
        ID: 'OPTIONAL_STRING_VALUE',
        Filter: {}, /* required */
        AbortIncompleteMultipartUpload: {
          DaysAfterInitiation: 'NUMBER_VALUE'
        }
      },
    ]
  }
};

s3.putBucketLifecycleConfiguration(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

Exemple de code à utiliser avec le SDK COS Python

L'utilisation des SDK IBM Cloud® Object Storage nécessite uniquement d'appeler les fonctions appropriées avec les paramètres corrects et la configuration adéquate.

import sys
import ibm_boto3
from ibm_botocore.client import Config

api_key = "ZRZDoNoUseOLL7bRO8SAMPLEHPUzUL_-fsampleyYE"
service_instance_id = "85SAMPLE-eDOb-4NOT-bUSE-86nnnb31eaxx"
auth_endpoint = "https://iam.cloud.ibm.com/identity/token"
service_endpoint = "https://s3.us-south.cloud-object-storage.appdomain.cloud"

cos = ibm_boto3.resource('s3',
                         ibm_api_key_id=api_key,
                         ibm_service_instance_id=service_instance_id,
                         ibm_auth_endpoint=auth_endpoint,
                         config=Config(signature_version='oauth'),
                         endpoint_url=service_endpoint)

response = cos.Bucket('<name-of-bucket>').put_bucket_lifecycle_configuration(
    Bucket='string',
    LifecycleConfiguration={
        'Rules': [
            {
                'Status': 'Enabled',
                'Filter': {},
                'AbortIncompleteMultipartUpload': {
                    'DaysAfterInitiation': <NUMBER_VALUE>
        }
            },
        ]
    }
)

print("Bucket lifecyle: {0}".format(response))

Exemple de code à utiliser avec le SDK COS Java

L'utilisation des SDK IBM Cloud® Object Storage nécessite uniquement d'appeler les fonctions appropriées avec les paramètres corrects et la configuration adéquate.

package com.ibm.cloud;

    import java.sql.Timestamp;
    import java.util.List;
    import java.util.Arrays;

    import com.ibm.cloud.objectstorage.ClientConfiguration;
    import com.ibm.cloud.objectstorage.SDKGlobalConfiguration;
    import com.ibm.cloud.objectstorage.auth.AWSCredentials;
    import com.ibm.cloud.objectstorage.auth.AWSStaticCredentialsProvider;
    import com.ibm.cloud.objectstorage.client.builder.AwsClientBuilder.EndpointConfiguration;
    import com.ibm.cloud.objectstorage.services.s3.AmazonS3;
    import com.ibm.cloud.objectstorage.services.s3.AmazonS3ClientBuilder;
    import com.ibm.cloud.objectstorage.services.s3.model.Bucket;
    import com.ibm.cloud.objectstorage.services.s3.model.BucketLifecycleConfiguration;
    import com.ibm.cloud.objectstorage.services.s3.model.ListObjectsRequest;
    import com.ibm.cloud.objectstorage.services.s3.model.ObjectListing;
    import com.ibm.cloud.objectstorage.services.s3.model.S3ObjectSummary;
    import com.ibm.cloud.objectstorage.oauth.BasicIBMOAuthCredentials;

    public class App
    {
        private static AmazonS3 _cosClient;

        /**
         * @param args
         */
        public static void main(String[] args)
        {
            SDKGlobalConfiguration.IAM_ENDPOINT = "https://iam.cloud.ibm.com/identity/token";
            String bucketName = "<sample-bucket-name>";
            String api_key = "ZRZDoNoUseOLL7bRO8SAMPLEHPUzUL_-fsampleyYE";
            String service_instance_id = "85SAMPLE-eDOb-4NOT-bUSE-86nnnb31eaxx"
            String endpoint_url = "https://s3.us-south.cloud-object-storage.appdomain.cloud";
            String storageClass = "us-south";
            String location = "us";

            _cosClient = createClient(api_key, service_instance_id, endpoint_url, location);

            // Define a rule for expiring items in a bucket
            int days_to_delete = 10;
            BucketLifecycleConfiguration.Rule rule = new BucketLifecycleConfiguration.Rule()
                    .withId("Delete rule")
                    .withExpirationInDays(days_to_delete)
                    .withStatus(BucketLifecycleConfiguration.ENABLED);

                    rule.setFilter(new LifecycleFilter());

            // Add the rule to a new BucketLifecycleConfiguration.
            BucketLifecycleConfiguration configuration = new BucketLifecycleConfiguration()
                    .withRules(Arrays.asList(rule));

            // Use the client to set the LifecycleConfiguration on the bucket.
            _cosClient.setBucketLifecycleConfiguration(bucketName, configuration);
        }

        /**
         * @param bucketName
         * @param clientNum
         * @param api_key
         * @param service_instance_id
         * @param endpoint_url
         * @param location
         * @return AmazonS3
         */
        public static AmazonS3 createClient(String api_key, String service_instance_id, String endpoint_url, String location)
        {
            AWSCredentials credentials;
            credentials = new BasicIBMOAuthCredentials(api_key, service_instance_id);

            ClientConfiguration clientConfig = new ClientConfiguration().withRequestTimeout(5000);
            clientConfig.setUseTcpKeepAlive(true);

            AmazonS3 cosClient = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(credentials))
                    .withEndpointConfiguration(new EndpointConfiguration(endpoint_url, location)).withPathStyleAccessEnabled(true)
                    .withClientConfiguration(clientConfig).build();
            return cosClient;
        }
    }

Examen d'une configuration de cycle de vie d'un compartiment, y compris l'expiration

Cette implémentation de l'opération GET utilise le paramètre de requête lifecycle pour examiner les paramètres de cycle de vie du compartiment. Une réponse HTTP 404 sera renvoyée si aucune configuration de cycle de vie n'est présente.

Les utilisateurs de Cloud IAM doivent avoir le rôle Reader pour examiner une politique de cycle de vie à partir d'un seau.

Infrastructure classique Les utilisateurs doivent disposer des autorisations Read sur le seau pour examiner une politique de cycle de vie à partir d'un seau.

Syntaxe

GET https://{endpoint}/{bucket}?lifecycle # path style
GET https://{bucket}.{endpoint}?lifecycle # virtual host style

Exemple d'en-tête de demande

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
Content-Type: text/plain
Content-Length: 305

L'utilisation des SDK IBM Cloud® Object Storage nécessite uniquement d'appeler les fonctions appropriées avec les paramètres corrects et la configuration adéquate.

var aws = require('ibm-cos-sdk');
var ep = new aws.Endpoint('s3.us-south.cloud-object-storage.appdomain.cloud');
var config = {
    endpoint: ep,
    apiKeyId: 'ZRZDoNoUseOLL7bRO8SAMPLEHPUzUL_-fsampleyYE',
    ibmAuthEndpoint: 'https://iam.cloud.ibm.com/identity/token',
    serviceInstanceId: 'crn:v1:bluemix:public:cloud-object-storage:global:a/<CREDENTIAL_ID_AS_GENERATED>:<SERVICE_ID_AS_GENERATED>::',
};
var s3 = new aws.S3(config);

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
});
import sys
import ibm_boto3
from ibm_botocore.client import Config

api_key = "ZRZDoNoUseOLL7bRO8SAMPLEHPUzUL_-fsampleyYE"
service_instance_id = "85SAMPLE-eDOb-4NOT-bUSE-86nnnb31eaxx"
auth_endpoint = "https://iam.cloud.ibm.com/identity/token"
service_endpoint = "https://s3.us-south.cloud-object-storage.appdomain.cloud"

cos = ibm_boto3.resource('s3',
                         ibm_api_key_id=api_key,
                         ibm_service_instance_id=service_instance_id,
                         ibm_auth_endpoint=auth_endpoint,
                         config=Config(signature_version='oauth'),
                         endpoint_url=service_endpoint)

response = cos.Bucket('<name-of-bucket>').get_bucket_lifecycle_configuration(
    Bucket='string'
)

print("Bucket lifecyle: {0}".format(response))

L'utilisation des SDK IBM Cloud® Object Storage nécessite uniquement d'appeler les fonctions appropriées avec les paramètres corrects et la configuration adéquate.

package com.ibm.cloud;

    import java.sql.Timestamp;
    import java.util.List;
    import java.util.Arrays;

    import com.ibm.cloud.objectstorage.ClientConfiguration;
    import com.ibm.cloud.objectstorage.SDKGlobalConfiguration;
    import com.ibm.cloud.objectstorage.auth.AWSCredentials;
    import com.ibm.cloud.objectstorage.auth.AWSStaticCredentialsProvider;
    import com.ibm.cloud.objectstorage.client.builder.AwsClientBuilder.EndpointConfiguration;
    import com.ibm.cloud.objectstorage.services.s3.AmazonS3;
    import com.ibm.cloud.objectstorage.services.s3.AmazonS3ClientBuilder;
    import com.ibm.cloud.objectstorage.services.s3.model.Bucket;
    import com.ibm.cloud.objectstorage.services.s3.model.BucketLifecycleConfiguration;
    import com.ibm.cloud.objectstorage.services.s3.model.ListObjectsRequest;
    import com.ibm.cloud.objectstorage.services.s3.model.ObjectListing;
    import com.ibm.cloud.objectstorage.services.s3.model.S3ObjectSummary;
    import com.ibm.cloud.objectstorage.oauth.BasicIBMOAuthCredentials;

    public class App
    {
        private static AmazonS3 _cosClient;

        /**
         * @param args
         */
        public static void main(String[] args)
        {
            SDKGlobalConfiguration.IAM_ENDPOINT = "https://iam.cloud.ibm.com/identity/token";
            String bucketName = "<sample-bucket-name>";
            String api_key = "ZRZDoNoUseOLL7bRO8SAMPLEHPUzUL_-fsampleyYE";
            String service_instance_id = "85SAMPLE-eDOb-4NOT-bUSE-86nnnb31eaxx"
            String endpoint_url = "https://s3.us-south.cloud-object-storage.appdomain.cloud";

            String storageClass = "us-south";
            String location = "us";

            _cosClient = createClient(api_key, service_instance_id, endpoint_url, location);

            // Use the client to read the configuration
            BucketLifecycleConfiguration config = _cosClient.getBucketLifecycleConfiguration(bucketName);

            System.out.println(config.toString());
        }

        /**
         * @param bucketName
         * @param clientNum
         * @param api_key
         * @param service_instance_id
         * @param endpoint_url
         * @param location
         * @return AmazonS3
         */
        public static AmazonS3 createClient(String api_key, String service_instance_id, String endpoint_url, String location)
        {
            AWSCredentials credentials;
            credentials = new BasicIBMOAuthCredentials(api_key, service_instance_id);

            ClientConfiguration clientConfig = new ClientConfiguration().withRequestTimeout(5000);
            clientConfig.setUseTcpKeepAlive(true);

            AmazonS3 cosClient = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(credentials))
                    .withEndpointConfiguration(new EndpointConfiguration(endpoint_url, location)).withPathStyleAccessEnabled(true)
                    .withClientConfiguration(clientConfig).build();
            return cosClient;
        }

    }

Suppression d'une configuration de cycle de vie d'un compartiment, y compris l'expiration

Cette implémentation de l'opération DELETE utilise le paramètre de requête lifecycle pour examiner les paramètres de cycle de vie du compartiment. Toutes les règles de cycle de vie associées au compartiment seront supprimées. Les transitions définies par les règles ne seront plus effectuées pour les nouveaux objets. Toutefois, 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 règles d'expiration n'existeront plus. Une réponse HTTP 404 sera renvoyée si aucune configuration de cycle de vie n'est présente.

Les utilisateurs Cloud IAM doivent disposer 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.

Syntaxe

DELETE https://{endpoint}/{bucket}?lifecycle # path style
DELETE https://{bucket}.{endpoint}?lifecycle # virtual host style

Exemple d'en-tête de demande

DELETE /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-Length: 305

L'utilisation des SDK IBM Cloud® Object Storage nécessite uniquement d'appeler les fonctions appropriées avec les paramètres corrects et la configuration adéquate.

var aws = require('ibm-cos-sdk');
var ep = new aws.Endpoint('s3.us-south.cloud-object-storage.appdomain.cloud');
var config = {
    endpoint: ep,
    apiKeyId: 'ZRZDoNoUseOLL7bRO8SAMPLEHPUzUL_-fsampleyYE',
    ibmAuthEndpoint: 'https://iam.cloud.ibm.com/identity/token',
    serviceInstanceId: 'crn:v1:bluemix:public:cloud-object-storage:global:a/<CREDENTIAL_ID_AS_GENERATED>:<SERVICE_ID_AS_GENERATED>::',
};
var s3 = new aws.S3(config);

var params = {
  Bucket: 'STRING_VALUE' /* required */
};

s3.deleteBucketLifecycleConfiguration(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

L'utilisation des SDK IBM Cloud® Object Storage nécessite uniquement d'appeler les fonctions appropriées avec les paramètres corrects et la configuration adéquate.

import sys
import ibm_boto3
from ibm_botocore.client import Config

api_key = "ZRZDoNoUseOLL7bRO8SAMPLEHPUzUL_-fsampleyYE"
service_instance_id = "85SAMPLE-eDOb-4NOT-bUSE-86nnnb31eaxx"
auth_endpoint = "https://iam.cloud.ibm.com/identity/token"
service_endpoint = "https://s3.us-south.cloud-object-storage.appdomain.cloud"

cos = ibm_boto3.resource('s3',
                         ibm_api_key_id=api_key,
                         ibm_service_instance_id=service_instance_id,
                         ibm_auth_endpoint=auth_endpoint,
                         config=Config(signature_version='oauth'),
                         endpoint_url=service_endpoint)

response = cos.Bucket('<name-of-bucket>').delete_bucket_lifecycle_configuration(
    Bucket='string'
)

print("Bucket lifecyle: {0}".format(response))

L'utilisation des SDK IBM Cloud® Object Storage nécessite uniquement d'appeler les fonctions appropriées avec les paramètres corrects et la configuration adéquate.

package com.ibm.cloud;

    import java.sql.Timestamp;
    import java.util.List;
    import java.util.Arrays;

    import com.ibm.cloud.objectstorage.ClientConfiguration;
    import com.ibm.cloud.objectstorage.SDKGlobalConfiguration;
    import com.ibm.cloud.objectstorage.auth.AWSCredentials;
    import com.ibm.cloud.objectstorage.auth.AWSStaticCredentialsProvider;
    import com.ibm.cloud.objectstorage.client.builder.AwsClientBuilder.EndpointConfiguration;
    import com.ibm.cloud.objectstorage.services.s3.AmazonS3;
    import com.ibm.cloud.objectstorage.services.s3.AmazonS3ClientBuilder;
    import com.ibm.cloud.objectstorage.services.s3.model.Bucket;
    import com.ibm.cloud.objectstorage.services.s3.model.BucketLifecycleConfiguration;
    import com.ibm.cloud.objectstorage.services.s3.model.ListObjectsRequest;
    import com.ibm.cloud.objectstorage.services.s3.model.ObjectListing;
    import com.ibm.cloud.objectstorage.services.s3.model.S3ObjectSummary;
    import com.ibm.cloud.objectstorage.oauth.BasicIBMOAuthCredentials;

    public class App
    {
        private static AmazonS3 _cosClient;

        /**
         * @param args
         */
        public static void main(String[] args)
        {
            SDKGlobalConfiguration.IAM_ENDPOINT = "https://iam.cloud.ibm.com/identity/token";
            String bucketName = "<sample-bucket-name>";
            String api_key = "ZRZDoNoUseOLL7bRO8SAMPLEHPUzUL_-fsampleyYE";
            String service_instance_id = "85SAMPLE-eDOb-4NOT-bUSE-86nnnb31eaxx"
            String endpoint_url = "https://s3.us-south.cloud-object-storage.appdomain.cloud";

            String storageClass = "us-south";
            String location = "us";

            _cosClient = createClient(api_key, service_instance_id, endpoint_url, location);

            // Delete the configuration.
            _cosClient.deleteBucketLifecycleConfiguration(bucketName);

            // Verify that the configuration has been deleted by attempting to retrieve it.
            config = _cosClient.getBucketLifecycleConfiguration(bucketName);
            String s = (config == null) ? "Configuration has been deleted." : "Configuration still exists.";
            System.out.println(s);
        }

        /**
         * @param bucketName
         * @param clientNum
         * @param api_key
         * @param service_instance_id
         * @param endpoint_url
         * @param location
         * @return AmazonS3
         */
        public static AmazonS3 createClient(String api_key, String service_instance_id, String endpoint_url, String location)
        {
            AWSCredentials credentials;
            credentials = new BasicIBMOAuthCredentials(api_key, service_instance_id);

            ClientConfiguration clientConfig = new ClientConfiguration().withRequestTimeout(5000);
            clientConfig.setUseTcpKeepAlive(true);

            AmazonS3 cosClient = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(credentials))
                    .withEndpointConfiguration(new EndpointConfiguration(endpoint_url, location)).withPathStyleAccessEnabled(true)
                    .withClientConfiguration(clientConfig).build();
            return cosClient;
        }

    }

Etapes suivantes

L'expiration n'est qu'un des nombreux concepts de cycle de vie disponibles pour IBM Cloud Object Storage. Chacun des concepts abordés dans cette vue d'ensemble peut être exploré plus en détail dans la rubrique PlateformeIBM Cloud.