IBM Cloud Docs
Eliminazione di dati obsoleti con regole di scadenza

Eliminazione di dati obsoleti con regole di scadenza

Una regola di scadenza elimina gli oggetti dopo un periodo definito (dalla data di creazione dell'oggetto).

Puoi configurare il ciclo di vita degli oggetti utilizzando la console web, l'API REST e gli strumenti di terze parti integrati con IBM Cloud Object Storage.

  • Una regola di scadenza può essere aggiunta a un nuovo bucket o a uno esistente.

  • Una regola di scadenza esistente può essere modificata o disabilitata.

  • Una regola di scadenza appena aggiunta o modificata si applica a tutti gli oggetti nuovi ed esistenti nel bucket.

  • L'aggiunta o la modifica delle politiche del ciclo di vita richiedono il ruolo di scrittore (Writer).

  • Puoi definire massimo 1000 regole del ciclo di vita (archiviazione + scadenza) per bucket.

  • Sono consentite fino a 24 ore affinché le modifiche nelle regole di scadenza diventino effettive.

  • L'ambito di ciascuna regola di scadenza può essere limitato definendo un filtro di prefisso facoltativo da applicare a un solo sottoinsieme di oggetti con nomi che corrispondono al prefisso.

  • Una regola di scadenza senza un filtro di prefisso si applicherà a tutti gli oggetti nel bucket.

  • Il periodo di scadenza per un oggetto, specificato in numero di giorni, viene calcolato dal momento della creazione dell'oggetto e viene arrotondato alla mezzanotte UTC del giorno successivo. Ad esempio, se hai una regola di scadenza per un bucket che stabilisce che un insieme di oggetti scade dieci giorni dopo la data di creazione, un oggetto che è stato creato il 15 aprile 2019 05:10 UTC scadrà il 26 aprile 2019 00:00 UTC.

  • Le regole di scadenza per ciascun bucket vengono valutate una volta ogni 24 ore. Qualsiasi oggetto che si qualifica per la scadenza (in base alla data di scadenza degli oggetti) verrà accodato per l'eliminazione. L'eliminazione degli oggetti scaduti inizia il giorno successivo e, di norma, impiegherà meno di 24 ore. Non ti verrà fatturata alcuna archiviazione associata per gli oggetti una volta eliminati.

  • In controllo delle versioni abilitato o bucket sospesi, un regola conserva la versione corrente e crea un indicatore di eliminazione piuttosto che eliminare definitivamente i dati. Per ripulire un bucket abilitato al versioning, è possibile impostare due regole di scadenza. Aggiungere una prima regola che imposta una scadenza per la versione corrente e per la versione non corrente. Poiché il versioning è abilitato, questa regola crea un marcatore di eliminazione per la versione. Aggiungere una seconda regola con la selezione "Pulisci i marcatori di eliminazione degli oggetti scaduti" per eliminare i dati. Se il versioning è sospeso, non verrà visualizzata l'opzione per pulire i marcatori di eliminazione scaduti nella pagina di configurazione delle regole di scadenza. Per questo motivo è necessario abilitare prima il versioning. Quindi aggiungere una prima regola che imposta una scadenza per la versione corrente e per quella non corrente. Poiché il versioning è abilitato, questa regola crea un marcatore di eliminazione per la versione. Aggiungere una seconda regola con la selezione "Pulisci i marcatori di eliminazione degli oggetti scaduti" per eliminare i dati.

  • L'ora di scadenza delle versioni non correnti è determinata dall'ora dell'ultima modifica del successore, arrotondata al giorno successivo a mezzanotte UTC.

  • Se le versioni vengono eliminate manualmente da un oggetto per il quale è prevista la scadenza il giorno successivo, tali scadenze potrebbero non verificarsi.

Le politiche che specificano una data nel passato potrebbero richiedere fino a pochi giorni per essere completate.

Senza prestare attenzione, i dati potrebbero andare definitivamente persi quando si utilizzano le regole di scadenza su un bucket con versione. Nei casi in cui il controllo delle versioni è sospeso ed è presente una versione nulla per l'oggetto scaduto, i dati potrebbero essere definitivamente persi. In tal caso, un indicatore di eliminazione null viene sovrascritto, eliminando definitivamente l'oggetto.

Per gli oggetti che sono soggetti alla politica di conservazione di Immutable Object Storage di un bucket, le azioni di scadenza verranno rimandate fino a quando la politica di conservazione non verrà più applicata.

Attributi delle regole di scadenza

Ogni regola di scadenza ha i seguenti attributi:

ID

Un ID della regola deve essere univoco all'interno della configurazione del ciclo di vita del bucket.

Scadenza

Un blocco di scadenza contiene i dettagli che regolano l'eliminazione automatica degli oggetti. Potrebbe essere una data specifica nel futuro oppure un periodo di tempo successivo a quando sono stati scritti i nuovi oggetti.

NoncurrentVersionExpiration

Il numero di giorni dopo i quali le versioni non correnti degli oggetti vengono eliminate automaticamente.

Prefisso

Una stringa facoltativa verrà messa in corrispondenza con il prefisso del nome oggetto nel bucket. Una regola con un prefisso verrà applicata solo agli oggetti che corrispondono. Puoi utilizzare più regole per azioni di scadenza diverse per prefissi differenti all'interno dello stesso bucket. Ad esempio, all'interno della stessa configurazione del ciclo di vita, una regola potrebbe eliminare tutti gli oggetti che iniziano con logs/ dopo 30 giorni e una seconda regola potrebbe eliminare gli oggetti che iniziano con video/ dopo 365 giorni.

Tag

Un'opzione di filtro che consente di applicare le regole di scadenza agli oggetti che contengono un tag corrispondente. Il filtro dei tag viene fornito come un contenitore che specifica una stringa chiave e una stringa valore. La stringa di chiavi deve essere inferiore a 128 caratteri. La stringa di valori deve essere inferiore a 256 caratteri.

ObjectSizeLessThan

Un filtro che limita le azioni del ciclo di vita agli oggetti inferiori a una dimensione specifica. Deve essere un valore intero superiore a 0.

ObjectSizeGreaterThan

Un filtro che limita le azioni del ciclo di vita agli oggetti superiori a una dimensione specifica. Deve essere un valore intero superiore a 0.

E

Utilizzare il parametro AND per applicare più filtri agli oggetti che devono soddisfare tutte le condizioni specificate.

Condizione

Una regola può essere abilitata e disabilitata. Una regola è attiva solo quando è abilitata.

Configurazioni del ciclo di vita di esempio

Questa configurazione fa scadere tutti i nuovi oggetti dopo 30 giorni.

<LifecycleConfiguration>
	<Rule>
		<ID>delete-after-30-days</ID>
		<Filter />
		<Status>Enabled</Status>
		<Expiration>
			<Days>30</Days>
		</Expiration>
	</Rule>
</LifecycleConfiguration>

Questa configurazione elimina tutti gli oggetti con il prefisso foo/ il 1° giugno 2020.

<LifecycleConfiguration>
	<Rule>
        <ID>delete-on-a-date</ID>
    <Filter>
        <Prefix>foo/</Prefix>
    </Filter>
        <Status>Enabled</Status>
        <Expiration>
            <Date>2020-06-01T00:00:00.000Z</Date>
        </Expiration>
	</Rule>
</LifecycleConfiguration>

Questa configurazione fa scadere tutte le versioni non correnti degli oggetti dopo 100 giorni.

<LifecycleConfiguration>
  <Rule>
    <ID>DeleteAfterBecomingNonCurrent</ID>
    <Filter/>
    <Status>Enabled</Status>
    <NoncurrentVersionExpiration>
      <NoncurrentDays>100</NoncurrentDays>
    </NoncurrentVersionExpiration>
  </Rule>
</LifecycleConfiguration>

Puoi anche combinare le regole di transizione e di scadenza. Questa configurazione archivia tutti gli oggetti 90 giorni dopo la creazione ed elimina tutti gli oggetti con il prefisso foo/ dopo 180 giorni.

<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>
</LifecycleConfiguration>

Questa configurazione fa scadere qualsiasi oggetto con un valore di tag key di environment:production.

<LifecycleConfiguration>
    <Rule>
        <ID>DeleteWithTagsFilter</ID>
    <Filter>
        <TagSet>
            <Tag>
                <Key>environment</Key>
                <Value>production</Value>
            </Tag>
        </TagSet>
    </Filter>
        <Status>Enabled</Status>
        <Expiration>
            <Days>180</Days>
        </Expiration>
    </Rule>
</LifecycleConfiguration>

Questa configurazione esclude qualsiasi oggetto con dimensione dell'oggetto inferiore a 2kb.

<LifecycleConfiguration>
    <Rule>
        <ID>DeleteWithObjectSizeLessThanFilter</ID>
    <Filter>
        <ObjectSizeLessThan>2048</ObjectSizeLessThan>
    </Filter>
        <Status>Enabled</Status>
        <Expiration>
            <Days>180</Days>
        </Expiration>
    </Rule>
</LifecycleConfiguration>

Questa configurazione esclude qualsiasi oggetto con una dimensione dell'oggetto superiore a 1kb.

<LifecycleConfiguration>
    <Rule>
        <ID>DeleteWithObjectSizeGreaterThanFilter</ID>
    <Filter>
        <ObjectSizeGreaterThan>1024</ObjectSizeGreaterThan>
    </Filter>
        <Status>Enabled</Status>
        <Expiration>
            <Days>180</Days>
        </Expiration>
    </Rule>
</LifecycleConfiguration>

Questa configurazione esclude qualsiasi oggetto maggiore di 10mb con valore della chiave tag uguale a environnment:production e valore della chiave tag uguale a environment:development.

<LifecycleConfiguration>
    <Rule>
        <ID>DeleteWithMultipleFilter</ID>
    <Filter>
        <And>
        <TagSet>
            <Tag>
                <Key>environment</Key>
                <Value>production</Value>
            </Tag>
            <Tag>
                <Key>environment</Key>
                <Value>development</Value>
            </Tag>
        </TagSet>
        <ObjectSizeGreaterThan>10485760</ObjectSizeGreaterThan>
        </And>
    </Filter>
        <Status>Enabled</Status>
        <Expiration>
            <Days>180</Days>
        </Expiration>
    </Rule>
</LifecycleConfiguration>

Utilizzo della console

Quando crei un nuovo bucket, seleziona la casella Add expiration rule. Poi, fai clic su Add rule per creare la nuova regola di scadenza. Puoi aggiungere fino a cinque regole durante la creazione del bucket e puoi aggiungere regole supplementari in un secondo momento.

Per un bucket esistente, selezionare Configurazione dal menu di navigazione e fare clic su Aggiungi regola nella sezione Regola di scadenza.

Utilizzo dell'API e degli SDK

Puoi gestire in modo programmatico le regole di scadenza utilizzando l'API REST o gli SDK di IBM COS. Seleziona il formato per gli esempi selezionando una categoria nel commutatore di contesto.

Aggiungi una regola di scadenza alla configurazione del ciclo di vita di un bucket

Guida di riferimento API REST

Questa implementazione dell'operazione PUT utilizza il parametro di query lifecycle per configurare le impostazioni di ciclo di vita per il bucket. Questa operazione consente una singola definizione della politica del ciclo di vita per un bucket. La politica viene definita come un insieme di regole composto dai seguenti parametri: ID, Status, Filter ed Expiration.

Gli utenti Cloud IAM devono avere il ruolo Writer per aggiungere un criterio del ciclo di vita da un bucket.

Gli utenti dell'infrastruttura classica devono avere i permessi Owner sul bucket per aggiungere un criterio del ciclo di vita da un bucket.

Intestazioni facoltative
Intestazione Immettere Descrizione
Content-MD5 Stringa L'hash base64 codificato a 128 bit di MD5 del payload, utilizzato come controllo di integrità per garantire che il payload non sia stato alterato durante il transito.
x-amz-checksum-crc32 Stringa Questa intestazione è il checksum Base64 codificato a 32 bit CRC32 dell'oggetto.
x-amz-checksum-crc32c Stringa Questa intestazione è il checksum Base64 codificato a 32 bit CRC32C dell'oggetto.
x-amz-checksum-crc64nvme Stringa Questa intestazione è il checksum Base64 codificato a 64 bit CRC64NVME dell'oggetto. Il checksum di CRC64NVME è sempre un checksum completo dell'oggetto.
x-amz-checksum-sha1 Stringa Questa intestazione è il digest Base64 codificato a 160 bit SHA1 dell'oggetto.
x-amz-checksum-sha256 Stringa Questa intestazione è il digest Base64 codificato a 256 bit SHA256 dell'oggetto.
x-amz-sdk-checksum-algorithm Stringa Indica l'algoritmo usato per creare il checksum dell'oggetto quando si usa l'SDK.

Un'intestazione Content-MD5 o un'intestazione checksum (comprese x-amz-checksum-crc32, x-amz-checksum-crc32c, x-amz-checksum-crc64nvme, x-amz-checksum-sha1, o x-amz-checksum-sha256) è richiesta come controllo di integrità per il payload.

Il corpo della richiesta deve contenere un blocco XML con il seguente schema:

Elemento Immettere Elemento secondario Predecessore Vincolo
LifecycleConfiguration Container Rule Nessuno Limite 1.
Rule Container ID, Status, Filter, Expiration LifecycleConfiguration Limite 1000.
ID Stringa Nessuno Rule Deve essere composto da (a-z,A-Z,0-9) e dai simboli seguenti: ! _ . * ' ( ) -
Filter Stringa Prefix Rule Deve contenere un elemento Prefix
Expiration Container Days oppure Date Rule Limite 1.
Days Numero interno non negativo Nessuno Expiration Deve essere un valore maggiore di 0.
Date Data Nessuno Expiration Deve essere nel formato ISO 8601.
NoncurrentVersionExpiration Data NoncurrentDays Rule Limite 1.
NoncurrentDays Numero interno non negativo Nessuno NoncurrentVersionExpiration Deve essere un valore maggiore di 0.
ObjectSizeGreaterThan Numero interno non negativo Nessuno Filter,And Deve essere un valore maggiore di 0.
ObjectSizeLessThan Numero interno non negativo Nessuno Filter,And Deve essere un valore maggiore di 0.
Prefix Stringa Nessuno Filter,And Deve essere utilizzato con due o più filtri.
And Container Prefix,ObjectSizeGreaterThan, ObjectSizeLessThan, Tag Filter Può contenere uno o più elementi Tag.
Tag Container Key, Value Filter,And Deve definire sia una chiave che un filtro.
Key Stringa Nessuno Tag La stringa deve essere inferiore a 128 caratteri.
Value Stringa Nessuno Tag La stringa deve essere inferiore a 256 caratteri.

Il corpo della richiesta deve contenere un blocco XML con lo schema trattato nella tabella (vedi Esempio 1).

<LifecycleConfiguration>
	<Rule>
		<ID>id1</ID>
		<Filter />
		<Status>Enabled</Status>
		<Expiration>
			<Days>60</Days>
		</Expiration>
	</Rule>
</LifecycleConfiguration>

Sintassi

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

Richiesta di esempio

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>

Esempio di codice da utilizzare con l'SDK COS NodeJS

L'utilizzo degli SDK IBM Cloud® Object Storage richiede solo il richiamo delle funzioni appropriate con i parametri corretti e la configurazione appropriata.

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 date = new Date('June 16, 2019 00:00:00');

var params = {
  Bucket: 'STRING_VALUE', /* required */
  LifecycleConfiguration: {
    Rules: [ /* required */
      {
        Status: 'Enabled', /* required */
        ID: 'OPTIONAL_STRING_VALUE',
        Filter: {}, /* required */
        Expiration:
        {
          Date: date
        }
      },
    ]
  }
};

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

Esempio di codice da utilizzare con l'SDK COS Python

L'utilizzo degli SDK IBM Cloud® Object Storage richiede solo il richiamo delle funzioni appropriate con i parametri corretti e la configurazione appropriata.

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.client('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.put_bucket_lifecycle_configuration(
    Bucket='string',
    LifecycleConfiguration={
        'Rules': [
            {
                'Status': 'Enabled',
                'Filter': {},
                'Expiration':
                {
                    'Days': 123
                },
            },
        ]
    }
)

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

Esempio di codice da utilizzare con l'SDK COS Java

L'utilizzo degli SDK IBM Cloud® Object Storage richiede solo il richiamo delle funzioni appropriate con i parametri corretti e la configurazione appropriata.

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;
        }
    }

Esamina la configurazione del ciclo di vita di un bucket, inclusa la scadenza

Questa implementazione dell'operazione GET utilizza il parametro di query lifecycle per esaminare le impostazioni di ciclo di vita per il bucket. Verrà restituita una risposta 404 HTTP se non sono presenti configurazioni del ciclo di vita.

Gli utenti Cloud IAM devono avere il ruolo Reader per esaminare un criterio del ciclo di vita da un bucket.

Gli utenti dell'infrastruttura classica devono avere i permessi Read sul bucket per esaminare un criterio del ciclo di vita da un bucket.

Sintassi

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

Richiesta dell'intestazione di esempio

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-MD5: M625BaNwd/OytcM7O5gIaQ==
Content-Length: 305

L'utilizzo degli SDK IBM Cloud® Object Storage richiede solo il richiamo delle funzioni appropriate con i parametri corretti e la configurazione appropriata.

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'utilizzo degli SDK IBM Cloud® Object Storage richiede solo il richiamo delle funzioni appropriate con i parametri corretti e la configurazione appropriata.

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;
        }

    }

Elimina la configurazione del ciclo di vita di un bucket, inclusa la scadenza

Questa implementazione dell'operazione DELETE utilizza il parametro di query lifecycle per esaminare le impostazioni di ciclo di vita per il bucket. Tutte le regole del ciclo di vita associate al bucket verranno eliminate. Le transizioni definite dalle regole non verranno più eseguite per i nuovi oggetti. Tuttavia, le regole di transizione esistenti verranno conservate per gli oggetti che sono stati già scritti nel bucket prima dell'eliminazione delle regole. Le regole di scadenza non esisteranno più. Verrà restituita una risposta 404 HTTP se non sono presenti configurazioni del ciclo di vita.

Gli utenti Cloud IAM devono disporre del ruolo di scrittore (Writer) per rimuovere una politica del ciclo di vita da un bucket.

Gli utenti dell'infrastruttura classica devono disporre almeno delle autorizzazioni di proprietario (Owner) per il bucket per rimuovere una politica del ciclo di vita da un bucket.

Sintassi

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

Richiesta dell'intestazione di esempio

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'utilizzo degli SDK IBM Cloud® Object Storage richiede solo il richiamo delle funzioni appropriate con i parametri corretti e la configurazione appropriata.

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'utilizzo degli SDK IBM Cloud® Object Storage richiede solo il richiamo delle funzioni appropriate con i parametri corretti e la configurazione appropriata.

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'utilizzo degli SDK IBM Cloud® Object Storage richiede solo il richiamo delle funzioni appropriate con i parametri corretti e la configurazione appropriata.

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;
        }

    }

```## Passi successivi
{: #expiry-next-steps}

La scadenza è solo uno dei molti concetti del ciclo di vita disponibili per IBM Cloud Object Storage.
Ciascuna delle nozioni trattate in questa panoramica può essere approfondita nella sezione
[PiattaformaIBM Cloud](https://cloud.ibm.com/).

<!-- v2.5.5 : caits-prod-app-clouddocs_cloud-docs-cloud-object-storage_20260325T202549-3_en_it -->