2017-04-03 22 views
0

我有一個公開不可用的S3 object。如果你點擊那個鏈接,你應該得到<code>Access Denied</code>錯誤。爲什麼沒有公共權限的S3對象可以通過Node.js中的http.get()訪問?

但是,如果我在我的Mac節點服務器上本地運行下面的腳本,我能夠下載文件 -

var s3file = fs.createWriteStream("s3posts.json.gz"); 
http.get("http://s3.amazonaws.com/cloudfront.s3post.cf/posts.json.gz", function(response) { 
    response.pipe(s3file); 
}); 

我經歷了所有我的桶和對象的配置去;沒有任何東西可以讓對象公開訪問。

如果AWS的策略默認爲私有策略,並且我沒有明確授予任何權限,爲什麼該對象可供下載,但瀏覽器不可用?

我能做些什麼來防止對象被下載?

回答

2

您是否看過該腳本實際下載的內容?

當我在我的機器上運行節點例子,這裏是s3posts.json.gz的內容:

<?xml version="1.0" encoding="UTF-8"?> 
<Error> 
<Code>AccessDenied</Code><Message>Access Denied</Message> 
<RequestId>946B9510D519E44B</RequestId> 
<HostId>eMlB8tG95Ur5fjIHo/NxfI6Ucjs/b4vcMNKYiZPZk94Db6BgrekTRVoaJTccxmQqN1eb91O673A=</HostId> 
</Error> 

看來,一切都很好,除非確實是文件的真實內容是你想保護。

+0

感謝您指出。我發現了一個全新的下載壓縮JSON S3文件並解壓縮它們的問題,但這有助於我開始解決問題。 –

相關問題