Eucalyptus: Arbeiten mit Walrus

[ 0 ] Mai 12, 2010 |

Bei Walrus handelt es sich um den Speicherdienst von Eucalyptus, dessen Schnittstelle zu den Simple Storage Services (S3) von Amazon kompatibel ist. Mittels Walrus können Daten persistent in Buckets und Objekten gespeichert und verwaltet werden.

Für die Verwaltung der Eucalytpus Virtual Machine Images innerhalb von Walrus – also dem Speichern, Registrieren und Löschen – können die offiziellen Amazon Tools genutzt werden. Es existieren aber auch Tools von Drittanbietern die in diesem Artikel vorgestellt werden.

S3 curl

S3 Curl kommuniziert mit Walrus, indem Sicherheitsparameter als Curl Header hinzugefügt werden. Mit S3 Curl stehen Funktionen zum Erstellen, Löschen und Auflisten der Buckets, sowie dem Hoch- und Herunterladen von Objekten und der Verwaltung von Zugriffsrechten zu Verfügung.

Für die Nutzung von S3 Curl wird das „perl-Digest-HMAC package“ benötigt. Weiterhin muss in der s3curl.pl der Hostname des „Endpoints“ z.B. wie folgt angepasst werden.

my @endpoints = ( 's3.amazonaws.com' );

nach

my @endpoints = ( 'your-host' );

Bei „your-host“ handelt es sich um die IP-Adresse bzw. dem Hostnamen auf dem Walrus ausgeführt wird. Für die Authentifizierung ist es notwendig, dass es sich bei „your-host“ um den selben Host handelt, der von eucarc für $S3_URL in den Umgebungsvariablen gesetzt wurde.

Beim Anpassen der s3curl.pl darf nur der Hostname, aber nicht die Portnummer oder ein Pfad angegeben werden. Es sollte also nur abc.de und nicht abc.de:8773/services/Walrus verwendet werden!

Bevor die nachfolgenden Befehle ausgeführt werden, sollte sichergestellt sein das „eucarc“ eingebunden ist.

~/.euca/eucarc

Dann kann es losgehen. Zunächst wird der Access Key sowie der Secret Key des Amazon Accounts benötigt. An dieser Stelle wäre es vorteilhaft, diese Daten in die „.s3curl“ Konfigurationsdatei zu schreiben.

s3curl.pl --id $EC2_ACCESS_KEY --key $EC2_SECRET_KEY

Zum Erstellen eines Buckets nutzen wir den nachfolgenden Befehl. Dabei entspricht „bucketName“ dem Namen des Buckets der erstellt werden soll.

s3curl.pl --id $EC2_ACCESS_KEY --key $EC2_SECRET_KEY --put /dev/null -- -s -v $S3_URL/bucketName

Ein Objekt wird mit dem folgenden Befehl erstellt/hochgeladen (put), wobei „objectName“ dem Namen des Objekts entspricht, das erstellt werden soll.

s3curl.pl --id $EC2_ACCESS_KEY --key $EC2_SECRET_KEY --put -- -s -v $S3_URL/bucketName/objectName

Für die Abfrage der MD5 Checksumme, sowie die Größe und das Datum der letzten Änderung an einem Objekt, nutzen wir diesen Befehl.

s3curl.pl --id $EC2_ACCESS_KEY --key $EC2_SECRET_KEY --head -- -s -v $S3_URL/bucketName/objectName > object.head

cat object.head

Hiermit laden (get) wir ein Objekt.

s3curl.pl --id $EC2_ACCESS_KEY --key $EC2_SECRET_KEY --get -- -s -v $S3_URL/bucketName/objectName > object

Ein Objekt kann wie folgt gelöscht werden.

s3curl.pl --id $EC2_ACCESS_KEY --key $EC2_SECRET_KEY --del -- -s -v $S3_URL/bucketName/objectName

Einen Bucket löschen wir mit diesem Befehl. An dieser Stelle ist zu beachten, dass Buckets vollständig leer sein müssen, bevor sie gelöscht werden können.

s3curl.pl --id $EC2_ACCESS_KEY --key $EC2_SECRET_KEY --del -- -s -v $S3_URL/bucketName

Die Zugriffssrechte für einen Bucket erhalten wie folgt.

s3curl.pl --id $EC2_ACCESS_KEY --key $EC2_SECRET_KEY --get -- -s -v $S3_URL/bucketName?acl | xmlindent > bucket.acl

Der Inhalt eines Buckets wird mit diesem Befehl angezeigt.

s3curl.pl --id $EC2_ACCESS_KEY --key $EC2_SECRET_KEY --get -- -s -v $S3_URL/bucketName | xmlindent > bucket.list

Eine Liste aller Buckets von einem Benutzer kann so angezeigt werden.

s3curl.pl --id $EC2_ACCESS_KEY --key $EC2_SECRET_KEY --get -- -s -v $S3_URL | xmlindent > bucketlisting

S3cmd

Mit S3cmd können Daten in Amazon S3 hoch- und heruntergeladen sowie verwaltet werden. Es eignet sich darüber hinaus gut für Skripte und automatisierte Backups die von cron gesteuert werden.

Installation

Zunächst wird python und python-openssl benötigt.

Nach dem Herunterladen und Entpacken von S3cmd muss der Patch unter dem Dateinamen s3cmd-0.9.8.3.patch abgespeichert werden.

Das S3cmd Verzeichnis muss in s3cmd-0.9.8.3 umbenannt und der Patch mittels patch -p1 < s3cmd-0.9.8.3.patch hinzugefügt werden.

Konfiguration

Nun muss eine Konfigurationsdatei mit dem Namen s3cfg.walrus für Walrus erstellt werden, für die folgende Beispielkonfiguration genutzt werden kann.

[default]
access_key = ACCESSKEY
acl_public = False
bucket_location = US
debug_syncmatch = False
default_mime_type = binary/octet-stream
delete_removed = False
dry_run = False
encrypt = False
force = False
gpg_command = /usr/bin/gpg
gpg_decrypt = %(gpg_command)s -d --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_encrypt = %(gpg_command)s -c --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_passphrase =
guess_mime_type = False
host_base = localhost:8773
host_bucket = localhost:8773
service_path = /services/Walrus
human_readable_sizes = False
preserve_attrs = True
proxy_host =
proxy_port = 0
recv_chunk = 4096
secret_key = SECRET
send_chunk = 4096
use_https = False
verbosity = WARNING

Als Beispielkonfiguration für Amazon S3 kann die folgende verwendet werden.

[default]
access_key = ACCESSKEY
acl_public = False
bucket_location = US
debug_syncmatch = False
default_mime_type = binary/octet-stream
delete_removed = False
dry_run = False
encrypt = False
force = False
gpg_command = /usr/bin/gpg
gpg_decrypt = %(gpg_command)s -d --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_encrypt = %(gpg_command)s -c --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_passphrase =
guess_mime_type = False
human_readable_sizes = False
preserve_attrs = True
proxy_host =
proxy_port = 0
recv_chunk = 4096
secret_key = SECRET
send_chunk = 4096
simpledb_host = sdb.amazonaws.com
use_https = False
verbosity = WARNING

Nutzung von S3cmd

Erstellen eines Bucket.

s3cmd -c s3cfg.walrus mb s3://testbucket

Löschen eines Bucket.

s3cmd -c s3cfg.walrus rb s3://testbucket

Auflisten aller Buckets.

s3cmd -c s3cfg.walrus ls

Den Inhalt eines Buckets anzeigen.

3cmd -c s3cfg.walrus ls s3://testbucket

Ein Objekt hochalden (put).

s3cmd -c s3cfg.walrus put s3://testbucket

Ein Objekt laden (get).

s3cmd -c s3cfg.walrus get s3://testbucket/

Löschen eines Objekts.

s3cmd -c s3cfg.walrus del s3://testbucket/

Quelle

Tags: , , , , , , ,

Category: Tutorials

René Büst

About the Author ()

Rene Buest is Senior Analyst and Cloud Practice Lead at Crisp Research, covering cloud computing, IT infrastructure, open source and Internet of Things. Prior to that he was Principal Analyst at New Age Disruption and member of the worldwide Gigaom Research Analyst Network. Rene Buest is top cloud computing blogger in Germany and one of the worldwide top 50 bloggers in this area. In addition, he is one of the world’s top cloud computing influencers and belongs to the top 100 cloud computing experts on Twitter and Google+. Since the mid-90s he is focused on the strategic use of information technology in businesses and the IT impact on our society as well as disruptive technologies. Rene Buest is the author of numerous professional cloud computing and technology articles. He regularly writes for well-known IT publications like Computerwoche, CIO Magazin, LANline as well as Silicon.de and is cited in German and international media – including New York Times, Forbes Magazin, Handelsblatt, Frankfurter Allgemeine Zeitung, Wirtschaftswoche, Computerwoche, CIO, Manager Magazin and Harvard Business Manager. Furthermore Rene Buest is speaker and participant of experts rounds. He is founder of CloudUser.de and writes about cloud computing, IT infrastructure, technologies, management and strategies. He holds a diploma in computer engineering from the Hochschule Bremen (Dipl.-Informatiker (FH)) as well as a M.Sc. in IT-Management and Information Systems from the FHDW Paderborn.

Leave a Reply

You must be logged in to post a comment.