2016-08-07 55 views
1

我一直在試圖上傳一個靜態的網站,以下CLI命令到S3:使用AWS CLI將嵌套目錄上傳到S3?

aws s3 sync . s3://my-website-bucket --acl public-read

,成功上傳在根目錄下的所有文件,但有以下失敗的嵌套目錄:

An error occurred (InvalidRequest) when calling the ListObjects operation: Missing required header for this request: x-amz-content-sha256

我在GitHub上發現了對此問題的參考,但沒有明確說明如何解決它。

+0

你可以粘貼你的命令的嵌套目錄?那些子目錄也是空的,或者他們有文件? – error2007s

+0

嵌套目錄中有文件,是的。我認爲上述命令將包含所有子目錄... – hally9k

+0

有趣的是,s3 sync命令應遞歸地將本地文件夾複製到s3對象等文件夾中。你能檢查下面的線程,並確認你是否正確設置區域? https://forums.aws.amazon.com/thread.jspa?threadID=235135。另一個用戶在線程上報告過相同的情況。http://stackoverflow.com/questions/38203011/invalidrequest-s3-ls – Shibashis

回答

2

s3 sync命令以遞歸方式將本地文件夾複製到像s3對象這樣的文件夾中。

即使S3並不真正支持文件夾,sync命令也會創建s3對象,其格式將在其關鍵字中包含文件夾名稱。

正如以下亞馬遜支持主題「forums.aws.amazon.com/thread.jspa?threadID=235135」所報告的,應通過正確設置區域來解決問題。

0

S3沒有目錄的概念。 S3是一個對象存儲,其中每個對象都由一個鍵標識。 此密鑰可能是類似「dir1/dir2/dir3/test.txt」的字符串

S3上的AWS圖形用戶界面將「/」字符解釋爲目錄分隔符,並按「原樣」顯示文件列表它在一個目錄結構中。

但是,內部沒有目錄的概念,S3有一個扁平的命名空間。 有關更多詳細信息,請參閱http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html

這是由於S3上沒有目錄而導致目錄未同步的原因。

此功能要求在https://github.com/aws/aws-cli/issues/912中打開,但尚未添加。

+0

該地區是我的問題在這裏。 'aws configure'沒有驗證我的區域輸入,也沒有錯誤信息標記無效區域,所以它都有點神祕。 – hally9k

+0

是S3實際上不支持目錄。然而,這與被問到的問題無關。 S3同步命令絕對支持將目錄同步到S3。你聲明該命令沒有同步目錄,因爲S3不支持目錄是不正確的。 S3同步命令支持同步目錄,而不是**空**目錄。我不確定爲什麼這被標記爲答案,因爲它是不正確的。 –