2

私はS3bucketurl.com/foo/index.htmlからウェブサイトを提供するamazon S3バケットを持っています。AWS S3のバケットルートからサブディレクトリへのリダイレクト方法は?

私は次のようにそれが自動的にURLを書き換え、redirection ruleを設定したいと思います:S3bucketurl.comが自動的S3bucketurl.com/fooにリダイレクト、およびサブフォルダfooに含まれるindex.htmlファイルを提供する必要がありますへのアクセス

私は、次のようなリダイレクトルール設定してみました:

<RoutingRules> 
    <RoutingRule> 
    <Condition> 
     <KeyPrefixEquals>/</KeyPrefixEquals> 
    </Condition> 
    <Redirect> 
     <ReplaceKeyWith>api</ReplaceKeyWith> 
    </Redirect> 
    </RoutingRule> 
</RoutingRules> 

404になり:

404 Not Found 

Code: NoSuchKey 
Message: The specified key does not exist. 
Key: index.html 

私も無駄に<ReplaceKeyWith>/api</ReplaceKeyWith><ReplaceKeyWith>api/</ReplaceKeyWith><ReplaceKeyWith>/api/</ReplaceKeyWith>の順列を試してみました。

答えて

1

<KeyPrefixEquals>/</KeyPrefixEquals>

二つの問題がここにあります:最初、これは暗黙の*が最後にあります意味、接頭と一致します。それはあなたが望むものではありません。また、S3バケットのキーには通常、接頭辞/があります。オブジェクトキーは先頭のスラッシュの後の文字で始まります。接頭辞testが決して一致しないので、<ReplaceKeyWith>は無視されます。しかし、ここでルールは最善の解決策ではありません。あなたがやりたい

方法がこれです:

は通常index.html、あなたのインデックス文書に使用する任意の名前という名前のバケットのルートに新しいオブジェクトを作成するために空のファイルをアップロードします。あなたのバケツポリシーがすべてのものを公開するまで公開します。

このオブジェクトのオブジェクトメタデータでは、x-amz-website-redirect-location/api/(または/foo/、または任意のパス)に設定します。

+1

ありがとう、これは実際に私が思いついた解決策です。このアプローチが確認されたことを確認するのは素晴らしいことです:) – jottr

関連する問題