2016-07-12 2 views
2

Weiß jemand, ob es möglich ist, eine Regel oder irgendeine Art von Konfiguration auf S3 Server zu setzen, die Fallback auf einen anderen virtuellen Ordner erlaubt, wenn eine Ressource auf dem angegebenen Pfad nicht gefunden wird ? HierAWS S3 GET-Anfrage Fallback zu einem anderen virtuellen Ordner

ein Beispiel:

URL, die aufgerufen wird, ist https://bucket.s3.domain/virtual-folder/1/res.ext. Wenn res.ext nicht im virtuellen Ordner 1 gefunden werden kann, möchte ich, dass es auf das übergeordnete Element umgeleitet wird. https://bucket.s3.domain/virtual-folder/res.ext Parent enthält Standardversionen von Ressourcen. Also die Idee ist, wenn Sie nicht finden können, spezifische Ressource S3 sollte automatisch die Standard zurückgeben.

Ich habe einige Recherchen gemacht, aber alles, was ich bekomme, ist über Website-Weiterleitungen. Was ich hier brauche, ist eine rohe Ressourcen, die Geräte in einer einzigen Anfrage ziehen, und S3 wird sich um alles kümmern.

Ist das überhaupt möglich?

Danke, Ante.

+0

Zunächst ist S3 kein Server, es ist ein objektbasierter Speicher. Auch S3 kümmert sich nicht um irgendetwas, es speichert nur Objekte, die Sie in Ihrem Skript auf diesen Zustand zurückführen müssen. Die Umleitung für S3 erfolgt, wenn Sie eine statische Website in S3 hosten. – error2007s

+0

@ error2007s Ich dachte, es wäre der Fall, aber ich hatte gehofft, Sie können irgendeine Art von Konfiguration (wie Politik) machen, wo Sie einige Regeln setzen könnten. Trotzdem danke für deinen Kommentar. –

+0

Sie müssten die Ebene schreiben, die Sie beschreiben. – jbird

Antwort

5

Es ist jetzt möglich, mit neuer Funktion ist S3! Sie haben Ihre Eimer setzen eine statische Website zu sein (die Sie benötigen eine URL Sie Esel-Dateien verwenden ändern) und dann eine folgende Umleitungsregel gesetzt:

<RoutingRules> 
    <RoutingRule> 
     <Condition> 
      <KeyPrefixEquals>artist-media/staging</KeyPrefixEquals> 
      <HttpErrorCodeReturnedEquals>403</HttpErrorCodeReturnedEquals> 
     </Condition> 
     <Redirect> 
      <HostName>someotherbucket.s3.amazonaws.com</HostName> 
      <ReplaceKeyPrefixWith>artist-media/production</ReplaceKeyPrefixWith> 
     </Redirect> 
    </RoutingRule> 
</RoutingRules> 

Was wollte ich tun ist, Bilder zu dienen aus einem Entwickler-Bucket, wenn eine Datei hochgeladen wurde und wenn nicht, dann Fallback auf die Produktion. Aus diesem Grund muss ich KeyPrefixEquals und ReplaceKeyPrefixWith verwenden, Sie können es einfach entfernen, wenn dies nicht das ist, was Sie brauchen. Wie für die Umleitung selbst fängt die Regel 403 Fehler (abgelehnt, weil die Datei fehlt. Wenn Sie den Bucket veröffentlichen, müssen Sie wahrscheinlich 40 hier verwenden) und legt dann nur einen neuen Host (Bucket-URL) zu zeigen.

+0

Danke für das Update! – jbird

+1

Großartig, danke Mann. Hier ist Mark als gut und dein +1 –