AWS Germany – Amazon Web Services in Deutschland

Reparieren von nicht mehr auflistbaren S3 Buckets

Vor kurzem war einer meiner S3 Buckets nicht mehr zugreifbar. In der AWS Konsole erschien nur die Fehlermeldung „An unexpected error has occurred. Please try again later“. Was war passiert?

Wie sich herausstellt gibt es Tools, die beim Hochladen von Dateien nach S3 die Dateinamen nicht korrekt bereinigen. Wenn später ein Programm das S3 Bucket auslesen will enthält der zurückgegebene XML-Strom dann in XML ungültige Zeichen. Bei den meisten Programmen (getestet: AWS Konsole, S3Fox, Python/Boto, Cyberduck) führt das dazu, dass das Bucket gar nicht mehr zugreifbar ist. Wie kann man das Problem nun beheben?

Für die Korrektur des Fehlers, also die Umbenennung des fehlerhaften Keys/Dateinamenslässt sich am Besten das Linux-Kommando s3cmd verwenden. Man braucht also erst einmal ein Linux. Wer nicht gerade Linux auf seinem Arbeitsrechner hat kann sich dazu einfach eine EC2 Micro-Instanz mit Amazon Linux erstellen und dieser eine IAM-Rolle mit Power User Rechten zuweisen. Das vermeidet, dass man in s3cmd die AWS-Credentials angeben muss.

Als nächstes braucht man das aktuelle Paket von s3cmd von Sourceforge. Das kopiert man auf die Linux-Instanz (z.B. mit sftp) und packt es aus (tar xfvz s3cmd-version.tar.gz). Nun kann man mit dem folgenden Kommando das Problem beheben:

./s3cmd fixbucket s3://bucketname

Man bekommt eine Meldung wie die folgende:

File u'Skalierbares Transcoding und Medien-Verarbeitungx0b in der Cloud.pptx' renamed to Skalierbares Transcoding und Medien-Verarbeitung^K in der Cloud.pptx

WARNING: Fixed 1 files' names. Their ACL were reset to Private.

Danach ist der Bucket wieder normal lesbar

Gruß,
Steffen

TAGS: