2014-07-10 18 views
9

Mam zestaw folderów użytkownika o tej samej strukturze folderów, ale o innej zawartości, przechowywanych w S3.AWS S3 RoutingRule z warunkiem wieloznacznym

/user/userA/application/folder/structure/file.xml 
/user/userB/application/folder/structure/file.xml 

Chciałbym przekierować użytkownika do awaryjnej folderu (z awaryjnej treści), jeśli struktura folderów s3 nie istnieją jeszcze dla tego użytkownika.

/user-fallback/application/folder/structure/file.xml 

Próbowałem dodać wieloznaczny parametr do moich reguł przekierowania ale S3 czyta * jako dosłownego

<RoutingRules> 
    <RoutingRule> 
     <Condition> 
      <KeyPrefixEquals>user/*/</KeyPrefixEquals> 
      <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals> 
     </Condition> 
     <Redirect> 
      <ReplaceKeyPrefixWith>user-fallback/</ReplaceKeyPrefixWith> 
     </Redirect> 
    </RoutingRule> 
</RoutingRules> 

Więc tylko adresy URL zaczynające się /user/*/ są poprawnie przekierowany do folderu user-fallback Struktura.

mam więcej niż 20 użytkowników, więc tworzenie indywidualnych RoutingRules nie działa albo (S3 ma limit reguły routingu)

jakieś pomysły?

+0

Czy kiedykolwiek dokonać postępu w tej sprawie? –

+0

Zastanawiasz się także, czy reguły routingu Amazon S3 dopuszczają dowolne znaki wieloznaczne? – evolross

Odpowiedz

1

Reguły routingu nie zezwalają na stosowanie symboli wieloznacznych - ale czy nie można po prostu zastosować niestandardowego przekierowania dla jakichkolwiek błędów 404? Zobacz Przykład # 2 tutaj: Example 2: Redirect requests for a deleted folder to a page wystarczy zmienić warunek:

< HttpErrorCodeReturnedEquals> 404 </HttpErrorCodeReturnedEquals>

Czy to działa?

0

To powinno działać:

<RoutingRules> 
    <RoutingRule> 
     <Condition> 
      <KeyPrefixEquals>user</KeyPrefixEquals> 
      <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals> 
     </Condition> 
     <Redirect> 
      <ReplaceKeyPrefixWith>user-fallback/</ReplaceKeyPrefixWith> 
     </Redirect> 
    </RoutingRule> 
</RoutingRules>