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
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.
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:
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
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.
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 } }
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.
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
* Gutschein ist einlösbar bis zum 31.12.2021. 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.
Die Open Telekom Cloud Community
Hier treffen sich Nutzer, Entwickler und Product Owner um sich zu helfen, auszutauschen und zu diskutieren.
Kostenfreie Experten-Hotline
Unsere zertifizierten Cloud-Experten stehen Ihnen mit persönlichem Service zur Seite.
0800 33 04477 (aus Deutschland)
+800 33 04 47 70 (aus dem Ausland)
24 Stunden am Tag, 7 Tage die Woche
E-Mail schreiben
Unser Kunden-Service steht Ihnen per E-Mail-Support kostenlos zur Verfügung.
Beratungstermin vereinbaren
Unsere Experten für die Open Telekom Cloud beraten Sie kostenfrei, unverbindlich und individuell.