2015-04-05 16 views

Antwort

26

S3 unterstützt nicht den Begriff eines Symlinks, bei dem ein Objektschlüssel als Alias ​​für einen anderen Objektschlüssel behandelt wird. (Sie haben das wahrscheinlich schon einmal gehört: S3 ist kein Dateisystem. Es ist ein Objektspeicher).

Wenn Sie die statischen Website-Hosting-Funktion verwenden, gibt es eine partielle Emulation dieser Fähigkeit, mit dem Objekt-Level-Umleitungen:

http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html

Dies bewirkt, dass die Anforderung von „Objekt-a“ zu sein Begrüßt mit einer 301 Moved Permanently Antwort, mit der URL für "object-b" in der Location: Header, die einen ähnlichen Zweck dient, aber ist natürlich immer noch ganz anders. Es funktioniert nur, wenn die Anfrage am Website-Endpunkt eingeht (nicht am REST-Endpunkt).

Wenn Sie einen Reverse-Proxy verwenden (haproxy, nginx, etc.) in EC2 eingehende Anfragen zu verarbeiten und sie an den Eimer weiterleiten, dann natürlich haben Sie die Möglichkeit, an der Proxy-Schicht der Anfrage URL-Rewriting vor der Weiterleitung an S3, so dass Sie den eingehenden Anfragepfad auf das übertragen können, was Sie für S3 benötigen. Wie praktisch das ist, hängt von Ihrer Anwendung und Motivation ab, aber dies ist eine der Strategien, die ich verwende, um zu ändern, wo in einem bestimmten Bucket ein Objekt im Vergleich zu dem, wo es tatsächlich gespeichert ist, erlaubt Pfade auf anderen Attributen neu zu schreiben in der Anfrage.

3

Ich hatte eine ähnliche Frage und brauchte eine Lösung, die ich unten beschreiben. Während S3 Symlinks nicht unterstützt, können Sie dies in einer Art und Weise mit der folgenden tun:

echo "https://s3.amazonaws.com/my.bucket.name/path/to/a/targetfile" > file 
aws s3 cp file s3://my.bucket.name/file 
wget $(curl https://s3.amazonaws.com/my.bucket.name/file) 

Was dies tatsächlich tut, wird der Inhalt der Datei erhalten, die wirklich nur ein Zeiger auf die Zieldatei ist, dann Übergeben Sie das an wget (curl kann auch verwendet werden, um in eine Datei statt wget umzuleiten).

Dies ist wirklich nur eine Arbeit um, aber es ist kein echter Symlink, sondern eine kreative Lösung, um Symlinks zu simulieren.