Unvollständige mehrteilige Uploads bereinigen
Diese Lebenszyklusregel stoppt alle mehrteiligen Uploads, wenn die Uploads nicht innerhalb einer definierten Anzahl von Tagen nach der Initialisierung abgeschlossen sind.
Sie können Lebenszyklusregeln für Objekte festlegen, indem Sie die Webkonsole, die REST-API und Tools von Drittanbietern, die in IBM Cloud Object Storage integriert sind, verwenden.
- Eine neue Regel kann jederzeit zu einem neuen oder bestehenden Eimer hinzugefügt werden.
- Eine bestehende Regel kann geändert oder deaktiviert werden.
Diese unvollständigen Uploads werden nicht in der Konsole angezeigt, aber für die hochgeladenen Teile fallen weiterhin Nutzungs-und Abrechnungsgebühren an. Die Einrichtung von Lebenszyklusregeln zum automatischen Löschen unvollständiger Uploads liegt in der Verantwortung des Benutzers.
Attribute für Ablaufregeln
Jede Ablaufregel verfügt über die folgenden Attribute:
ID
Die ID einer Regel muss innerhalb der Lebenszykluskonfiguration des Buckets eindeutig sein.
AbortIncompleteMultipartUpload
Der Block AbortIncompleteMultipartUpload enthält die Details, die die automatische Stornierung von Uploads regeln. Der Block enthält ein einzelnes Feld: DaysAfterInitiation.
Präfix
Eine optionale Zeichenfolge, die mit dem Präfix des Objektnamens im Bucket abgeglichen wird. Eine Regel mit einem Präfix gilt nur für die Objekte, für die eine Übereinstimmung festgestellt wurde. Sie können mehrere Regeln für verschiedene Aktionen für verschiedene Präfixe innerhalb desselben Buckets verwenden.
Status
Eine Regel kann entweder aktiviert oder inaktiviert werden. Eine Regel ist nur aktiv, wenn sie aktiviert wurde.
Beispiele für Lebenszykluskonfigurationen
Diese Konfiguration verfällt alle Uploads, die nach 3 Tagen nicht abgeschlossen wurden.
<LifecycleConfiguration>
<Rule>
<ID>delete-after-3-days</ID>
<Filter />
<Status>Enabled</Status>
<AbortIncompleteMultipartUpload>
<DaysAfterInitiation>3</DaysAfterInitiation>
</AbortIncompleteMultipartUpload>
</Rule>
</LifecycleConfiguration>
Sie können auch Regeln kombinieren. Diese Konfiguration bricht inaktive Uploads nach 5 Tagen ab, archiviert alle Objekte 90 Tage nach ihrer Erstellung und löscht alle Objekte mit dem Präfix foo/ nach 180 Tagen.
<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>
API und SDKs verwenden
Sie können Lebenszyklusregeln programmatisch verwalten, indem Sie die REST-API oder die IBM COS SDKs verwenden.
Referenz zur REST-API
Bei dieser Implementierung der PUT-Operation wird der Abfrageparameter lifecycle verwendet, um die Lebenszykluseinstellungen für das Bucket festzulegen. Diese Operation ermöglicht die Verwendung einer einzigen Lebenszyklusrichtliniendefinition
für ein Bucket. Die Richtlinie wird als Regelgruppe definiert, die die folgenden Parameter umfasst: ID, Status, Filter und Expiration (Ablauf).
Cloud IAM-Benutzer müssen über die Rolle Writer verfügen, um eine Lebenszyklusrichtlinie aus einem Bucket hinzuzufügen.
Klassische Infrastruktur Benutzer müssen über die Berechtigung Owner für den Bucket verfügen, um eine Lebenszyklusrichtlinie aus einem Bucket hinzuzufügen.
| Überschrift | Typ | Beschreibung |
|---|---|---|
Content-MD5 |
Zeichenfolge | Der base64 verschlüsselte 128-Bit-Hash MD5 der Nutzdaten, der als Integritätsprüfung verwendet wird, um sicherzustellen, dass die Nutzdaten während der Übertragung nicht verändert wurden. |
x-amz-checksum-crc32 |
Zeichenfolge | Dieser Header ist die Base64 kodierte, 32-Bit CRC32 Prüfsumme des Objekts. |
x-amz-checksum-crc32c |
Zeichenfolge | Dieser Header ist die Base64 kodierte, 32-Bit CRC32C Prüfsumme des Objekts. |
x-amz-checksum-crc64nvme |
Zeichenfolge | Dieser Header ist die Base64 kodierte, 64-Bit CRC64NVME Prüfsumme des Objekts. Die Prüfsumme CRC64NVME ist immer eine vollständige Objektprüfsumme. |
x-amz-checksum-sha1 |
Zeichenfolge | Dieser Header ist der Base64 verschlüsselte 160-Bit-Digest des Objekts SHA1. |
x-amz-checksum-sha256 |
Zeichenfolge | Dieser Header ist der Base64 kodierte, 256-Bit SHA256 Digest des Objekts. |
Ein Content-MD5-Header oder ein checksum-Header (einschließlich x-amz-checksum-crc32, x-amz-checksum-crc32c, x-amz-checksum-crc64nvme, x-amz-checksum-sha1 oder x-amz-checksum-sha256)
ist als Integritätsprüfung für die Nutzdaten erforderlich.
Der Hauptteil der Anforderung muss einen XML-Block mit dem folgenden Schema enthalten:
| Element | Typ | Untergeordnete Elemente | Vorfahre | Einschränkung |
|---|---|---|---|---|
LifecycleConfiguration |
Container | Rule |
Keine | Grenzwert 1. |
Rule |
Container | ID, Status, Filter, AbortIncompleteMultipartUpload |
LifecycleConfiguration |
Grenzwert 1000. |
ID |
Zeichenfolge | Keine | Rule |
Muss aus (a-z,A-Z0-9) und den folgenden Symbolen bestehen: ! _ . * ' ( ) - |
Filter |
Zeichenfolge | Prefix |
Rule |
Muss ein Element Prefix enthalten oder selbst geschlossen sein (<Filter />). |
Prefix |
Zeichenfolge | Keine | Filter |
Die Regel gilt für alle Objekte mit Schlüsseln, die mit diesem Präfix übereinstimmen. |
AbortIncompleteMultipartUpload |
Container |
DaysAfterInitiation |
Rule |
Grenzwert 1. |
DaysAfterInitiation |
Nicht negative Ganzzahl | Keine | AbortIncompleteMultipartUpload |
Muss ein Wert größer als '0' sein. |
Der Hauptteil der Anforderung muss einen XML-Block mit dem Schema enthalten, auf das in der Tabelle (siehe Beispiel 1) verwiesen wird:
<LifecycleConfiguration>
<Rule>
<ID>delete-after-3-days</ID>
<Filter />
<Status>Enabled</Status>
<AbortIncompleteMultipartUpload>
<DaysAfterInitiation>3</DaysAfterInitiation>
</AbortIncompleteMultipartUpload>
</Rule>
</LifecycleConfiguration>
Syntax
PUT https://{endpoint}/{bucket}?lifecycle # path style
PUT https://{bucket}.{endpoint}?lifecycle # virtual host style
Beispielanforderung
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>
Codebeispiel zur Verwendung des Node.js-COS-SDK
Zur Nutzung der IBM Cloud® Object Storage-SDKs ist lediglich ein Aufruf der entsprechenden Funktionen mit den korrekten Parametern und der richtigen Konfiguration erforderlich.
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
});
Codebeispiel zur Verwendung des Python-COS-SDK
Zur Nutzung der IBM Cloud® Object Storage-SDKs ist lediglich ein Aufruf der entsprechenden Funktionen mit den korrekten Parametern und der richtigen Konfiguration erforderlich.
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))
Codebeispiel zur Verwendung des Java-COS-SDK
Zur Nutzung der IBM Cloud® Object Storage-SDKs ist lediglich ein Aufruf der entsprechenden Funktionen mit den korrekten Parametern und der richtigen Konfiguration erforderlich.
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;
}
}
Lebenszykluskonfiguration eines Buckets (einschließlich Ablauf) überprüfen
Bei dieser Implementierung der GET-Operation wird der Abfrageparameter lifecycle verwendet, um die Lebenszykluseinstellungen für das Bucket zu überprüfen. Wenn keine Lebenszykluskonfiguration vorhanden ist, wird die
HTTP-Antwort 404 zurückgegeben.
Cloud IAM-Benutzer müssen über die Rolle Reader verfügen, um eine Lebenszyklusrichtlinie aus einem Bucket zu prüfen.
Klassische Infrastruktur Benutzer müssen über die Berechtigung Read für den Bereich verfügen, um eine Lebenszyklusrichtlinie aus einem Bereich zu prüfen.
Syntax
GET https://{endpoint}/{bucket}?lifecycle # path style
GET https://{bucket}.{endpoint}?lifecycle # virtual host style
Beispielheaderanforderung
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
Zur Nutzung der IBM Cloud® Object Storage-SDKs ist lediglich ein Aufruf der entsprechenden Funktionen mit den korrekten Parametern und der richtigen Konfiguration erforderlich.
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))
Zur Nutzung der IBM Cloud® Object Storage-SDKs ist lediglich ein Aufruf der entsprechenden Funktionen mit den korrekten Parametern und der richtigen Konfiguration erforderlich.
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;
}
}
Lebenszykluskonfiguration eines Buckets (einschließlich Ablauf) löschen
Bei dieser Implementierung der DELETE-Operation wird der Abfrageparameter lifecycle verwendet, um die Lebenszykluseinstellungen für das Bucket zu überprüfen. Alle Lebenszyklusregeln, die dem Bucket zugeordnet sind,
werden gelöscht. Übergänge, die anhand der Regeln definiert wurden, werden für neue Objekte nicht mehr angewendet. Vorhandene Übergangsregeln werden für Objekte beibehalten, die bereits in das Bucket geschrieben wurden, bevor die Regeln
gelöscht wurden. Die Ablaufregeln sind nicht mehr vorhanden. Wenn keine Lebenszykluskonfiguration vorhanden ist, wird die HTTP-Antwort 404 zurückgegeben.
Cloud IAM-Benutzer müssen über die Rolle Writer verfügen, um eine Lebenszyklusrichtlinie aus einem Bucket zu entfernen.
Benutzer der klassischen Infrastruktur müssen mindestens über die Berechtigungen für Owner für das Bucket verfügen, um eine Lebenszyklusrichtlinie aus einem Bucket zu entfernen.
Syntax
DELETE https://{endpoint}/{bucket}?lifecycle # path style
DELETE https://{bucket}.{endpoint}?lifecycle # virtual host style
Beispielheaderanforderung
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
Zur Nutzung der IBM Cloud® Object Storage-SDKs ist lediglich ein Aufruf der entsprechenden Funktionen mit den korrekten Parametern und der richtigen Konfiguration erforderlich.
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
});
Zur Nutzung der IBM Cloud® Object Storage-SDKs ist lediglich ein Aufruf der entsprechenden Funktionen mit den korrekten Parametern und der richtigen Konfiguration erforderlich.
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))
Zur Nutzung der IBM Cloud® Object Storage-SDKs ist lediglich ein Aufruf der entsprechenden Funktionen mit den korrekten Parametern und der richtigen Konfiguration erforderlich.
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;
}
}
Nächste Schritte
Der Ablauf der Gültigkeit ist nur eines der zahlreichen Lebenszykluskonzepte, die für IBM Cloud Object Storage zur Verfügung stehen. Jedes der Konzepte, die wir in diesem Überblick behandelt haben, kann in den folgenden Abschnitten näher untersucht werden IBM Cloud Plattform.