2015-04-05 78 views

回答

26

S3不支持符號鏈接的概念,其中一個對象鍵被視爲另一個對象鍵的別名。 (你可能以前聽過這個:S3不是文件系統,它是一個對象存儲)。

如果您使用的是靜態的網站主機的功能,有這個能力的部分仿真,與對象級別的重定向:

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

這將導致「對象是」要請求迴應爲301 Moved PermanentlyLocation:標題中的「object-b」的URL用於類似目的,但當然仍然完全不同。它僅在請求到達網站端點(而不是REST端點)時起作用。

如果您在EC2中使用反向代理(haproxy,nginx等)來處理傳入請求並將它們轉發到存儲桶,那麼您當然可以在代理層選擇重寫請求URL,然後轉發到S3,所以您可以將傳入的請求路徑轉換爲您需要呈現給S3的任何內容。這是多麼實際取決於您的應用程序和動機,但這是我用來修改某個對象出現的位置與其實際存儲位置之間的策略之一,允許我根據其他屬性重寫路徑在請求中。

3

我有一個類似的問題,需要一個解決方案,我在下面描述。雖然S3不支持符號鏈接,你可以在某種程度上具有以下這樣做:

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) 

什麼這實際上做的是得到該文件,這實際上只是一個指針到目標文件的內容,然後將它傳遞給wget(curl也可以用來重定向到一個文件而不是wget)。

這實際上只是一個工作,因爲它不是一個真正的符號鏈接,而是一個模擬符號鏈接的創造性解決方案。