Open Telekom Cloud für Geschäftskunden

So greifen Sie aus Java auf den Objekt-Speicher (OBS) zu

Im vorherigen Beitrag haben wir uns damit beschäftigt, wie man über die Befehlszeile auf den Object Storage Service (OBS) zugreifen kann. In diesem Artikel geht es darum, wie der OBS über eine Java-Anwendung aufgerufen werden kann. Da der OBS das S3-Protokoll unterstützt, kann hierzu das AWS SDK für Java verwendet werden. Allerdings müssen vorher noch einige Einstellungen angepasst werden.

Erstellung eines Schlüssels

Zunächst benötigen wir eine Zugriffsschlüssel-ID sowie einen geheimen Zugriffsschlüssel. Diese können über die Open Telekom Cloud-Konsole generiert werden:

java-objektspeicher


Sie erhalten eine *.csv-Datei, die genau zwei Zeilen mit dem geheimen Zugriffsschlüssel und der zugehörigen ID enthält:

User Name,Access Key Id,Secret Access Key
 "12345678 OTC00000000001000000123",IDABCDEFGHIJKLMNOPQR,SECRETKEYABCDEFGHIJKLMNOPQRSTUVWXYZ01234

Erstellung der Anwendung

Anschließend wird mit AWS SDK für Java ein Projekt angelegt. Falls Sie Maven verwenden, brauchen Sie nur diese Abhängigkeit einzufügen:

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-s3</artifactId>
    <version>1.11.31</version>
</dependency> 

Hierbei ist es natürlich ratsam, immer die aktuellste stabile Version anzugeben. Falls Sie nicht Maven verwenden, fügen Sie einfach die Bibliotheken aus der auf https://aws.amazon.com/sdk-for-java/ verfügbaren Zip-Datei in den Klassenpfad ein.

Konfiguration des Clients

Das AWS SDK beinhaltet viele AWS-spezifische Regeln bzgl. des Aufbaus der URLs, die für das S3-Protokoll verwendet werden. Daher müssen einige geringfügige Anpassungen am Client vorgenommen werden, damit die Region „eu_de“ und der Servicename „obs“ unterstützt werden:

public class OtcObsClient extends AmazonS3Client {
     public OtcObsClient(AWSCredentials credentials, ClientConfiguration clientConfiguration) {
         super(credentials, clientConfiguration);
         this.setSignerRegionOverride("eu-de");
         this.setRegion(new Region(new InMemoryRegionImpl("eu-de", "otc.t-systems.com")));
     }
     @Override
     protected String getServiceNameIntern() {
         return "obs";
     }
 } 

Das Kommunikationsprotokoll erwartet bei jeder Anforderung eine Signatur. Anstelle des Namens aus der URL (in diesem Fall: „obs“) enthält diese Signatur den festen Servicenamen „s3“. Folglich brauchen wir zur Verwendung dieses festen Servicenamens auch einen angepassten Signaturgeber:

public class OtcObsSigner extends AWSS3V4Signer {
     public OtcObsSigner() {
         super();
         this.serviceName = "s3";
     }
     @Override
     public void setServiceName(String serviceName) {
         // we ignore other service names
     }
 } 

Beispiel

Jetzt können wir einen Versuch mit den oben generierten Anmeldeinformationen starten. Dabei ist zu beachten, dass hier eine leicht abgeänderte Terminologie verwendet wird. So entspricht „accessKey“ beispielsweise der oben erwähnten „Access Key Id“. Der folgende Code umfasst eine Bucket-Liste:

public class OtcObsExample {
     public static void main(String[] args) {
         String accessKey = "IDABCDEFGHIJKLMNOPQR";
         String secretKey = "SECRETKEYABCDEFGHIJKLMNOPQRSTUVWXYZ01234";
         AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
         ClientConfiguration clientConfig = new ClientConfiguration();
         clientConfig.setProtocol(Protocol.HTTPS);
         clientConfig.setSignerOverride("OtcObsSigner");
         SignerFactory.registerSigner("OtcObsSigner", OtcObsSigner.class);
         AmazonS3 obs = new OtcObsClient(credentials, clientConfig);
         List<Bucket> buckets = obs.listBuckets();
         for (Bucket : buckets) {
             System.out.println(bucket.getName() + "\t" +
                     StringUtils.fromDate(bucket.getCreationDate()));
         }
     }
 } 

In Abhängigkeit von den Buckets in Ihrem OBS wird die Ausgabe in etwa so aussehen:

My first bucket    2016-07-14T15:21:09.262Z

Second bucket    2016-08-31T13:45:42.132Z

Und das war auch schon alles. Der Rest ist nur nettes Beiwerk. Beispielsweise könnte die Initialisierung mithilfe einer Factory-Methode mit der Registrierung des Credential Provider zusammengefasst werden, wie beim Github-Projekt otc-obs-java-client. Hier finden Sie ein vollständiges Beispiel, in dem die Nutzung der wichtigsten OBS-Funktionen zum Erstellen und Löschen von Buckets bzw. Objekten veranschaulicht wird.

Weitere Hintergrundinformationen zur API der Open Telekom Cloud finden Sie in diesem Post.


Daniela Ebert

Daniela Ebert hat die letzen Jahre als AIX Engineer im Bereich Solution Delivery bei T-Systems gearbeitet. Nun ist sie dort als Senior Product Developer tätig. Bis zum Launch der Open Telekom Cloud zur CeBIT 2016 hat sie die technische Implementierung der Plattform vorangetrieben. Aktuell beschäftigt sie sich mit der technischen Weiterentwicklung, Evaluierung technischer Features und Architektur-Themen.

Jetzt direkt buchen und 250 € Startguthaben sichern* (Code: 4UOTC250)
24/7 Service
Nutzen Sie unser Beratungsangebot!

Kostenlos und durch Experten.

Wir beantworten Ihre Fragen zu Testmöglichkeit, Buchung und Nutzung – kostenfrei und individuell. Probieren Sie es aus!
Hotline: 24 Stunden am Tag, 7 Tage die Woche

0800 33 04477 aus Deutschland
00800 44 556 600 aus dem Ausland

* Gutschein ist einlösbar bis zum 30.06.2020. Bitte sprechen Sie uns bei der Buchung auf den Gutscheinbetrag an. Das Rabattvolumen ist nur für Kunden mit Rechnungsanschrift in Deutschland gültig und verfällt 2 Monate nach Abschluss des Vertrages. Das Guthaben wird mit den gültigen Listenpreisen gemäß Leistungsbeschreibung verrechnet. Eine Auszahlung ist ausgeschlossen.

  • Jetzt 250 € Startguthaben sichern

    Jetzt direkt buchen und 250 € Startguthaben sichern*
    Code: 4UOTC250

    Jetzt buchen

  • Telefon

    Kostenfreie Experten-Hotline

    Unsere zertifizierten Cloud-Experten stehen Ihnen mit persönlichem Service zur Seite.

    0800 33 04477 (aus Deutschland)

    24 Stunden am Tag, 7 Tage die Woche

  • E-Mail

    Unser Kunden-Service steht Ihnen per E-Mail-Support kostenlos zur Verfügung.

    E-Mail schreiben

  • Beratungstermin vereinbaren

    Unsere Experten für die Open Telekom Cloud beraten Sie kostenfrei, unverbindlich und individuell. 

    Beratungstermin vereinbaren