0

我要儘量縮短這個範圍。如何允許用戶從計算引擎下載Google雲端存儲文件,而不需要公開訪問

我有一個計算引擎實例,它運行Python/Flask。

我在做什麼,是允許用戶從谷歌雲存儲下載文件,但我不希望該文件被公開訪問。有沒有辦法讓我的Compute實例從雲存儲中傳輸文件供用戶下載,然後在用戶完成下載文件後從計算實例中刪除該文件?我希望下載在點擊下載按鈕後立即啓動。

我正在使用默認的應用程序憑據。 子過程不是一個選項。

SideNote: 我想這樣做的另一種方式是允許登錄到網站的每個用戶訪問存儲桶上的特定文件夾。不過,我不確定這是否可以不通過谷歌帳戶登錄。這似乎也是一個實施的痛苦。

回答

1

@ jterrace的答案是你想要的。

已簽名的URL可以有與之相關的時間限制。在您的應用程序中,您將爲該文件創建一個簽名url並對所述文件執行HTTP重定向。

https://cloud.google.com/storage/docs/access-control/create-signed-urls-program

如果您使用的是默認的計算引擎服務帳戶(與您GCE實例相關聯的默認值),你應該能夠登錄就好了。只需按照如何在上面的url中創建密鑰的說明操作即可。

你可以用這種方式做各種各樣的超棒的東西,包括允許用戶直接上傳到谷歌雲存儲! :)

0

與您的計算引擎關聯的服務帳戶將解決該問題。

Service accounts將在您的 虛擬機實例上運行的應用程序驗證到其他Google Cloud Platform服務。對於 示例,如果您編寫的應用程序在Google Cloud Storage上讀取和寫入文件,則必須首先向Google Cloud Storage API進行身份驗證。您可以創建一個服務帳戶並授予服務 帳戶對Cloud Storage API的訪問權限。使用這個電子郵件

由於歷史的原因,所有的項目都與Compute Engine的默認服務帳戶,身份:

[PROJECT_NUMBER][email protected] 

默認情況下,計算引擎的服務帳戶具有隻讀到谷歌雲訪問存儲服務。因此,計算引擎可以使用GCP客戶端庫訪問您的存儲。

gsutil是GCP存儲的命令行工具,在試用存儲提供的各種選項時非常方便。

從您的計算引擎中輸入gsutil ls開始,它列出了您的雲存儲中的所有存儲桶。

+0

感謝您的迴應。我明白這一點。實際上,我已經通過默認憑據訪問了,就像我剛纔提到的那樣。我試圖做的是允許用戶從存儲桶中下載,而無需公開訪問這些文件。因此,我想我正在尋找的是計算引擎下載文件並在點擊下載按鈕後將該文件傳輸給用戶的示例。一旦用戶端的下載完成,計算引擎會刪除下載的文件,但它應該保留在雲存儲中。 – DarkMatter

+0

這個問題並不簡單。它更像是一個小型項目。嘗試快速原型設計,如果你在某處發生故障,請將源代碼發佈到遇到問題的地方,堆棧溢出的開發人員將能夠爲你提供幫助。添加你需要一個你的問題的例子 –

相關問題