簡體   English   中英

S3 - 匿名上傳 - 密鑰前綴

[英]S3 - Anonymous Upload - Key prefix

我試圖准確理解如何設置一個通常是私有的存儲桶,但允許匿名上傳有限制。 具體標准是:

  • 存儲桶主要是私有的,需要我的密鑰/秘密來添加/刪除/更新/列出文件。
  • 有一個名為“incoming”的“目錄”(即密鑰前綴),允許匿名用戶上傳內容但不上傳。
  • 存儲桶的所有內容都有一天到期。 作為獎勵,我希望“傳入”目錄有30分鍾到期,但如果不可能,整個存儲桶的一天到期將會這樣做。
  • 具有“傳入”前綴的文件將限制每個對象的大小。
  • 我可能還希望將帶有“incoming”前綴的對象限制為僅限於某些內容類型。

我的問題是:

  1. 簡單地創建兩個桶會更好嗎? 一個用於我的傳入文件,一個用於我自己的個人處理和存儲?
  2. 對於要上傳到傳入目錄的文件,代碼看起來是什么樣的。 理想情況下,我想避免依賴於S3庫,只使用HTTP調用。 如果你能在Ruby上向我展示正確的方向,那就是獎勵積分。 :)

到期時間似乎可以通過S3 Management Console設置,但最短到期時間限制為1天。 我可以在該字段中輸入小數嗎? 權限似乎適用於整個存儲桶而不僅僅是前綴。 這讓我覺得我只需要兩個水桶。 如果我保留一個存儲桶,我認為我需要創建一個IAM策略並將其應用到存儲桶中,但這超出了我對S3的有限知識,我想確保我不會在允許人們做的權限中留下漏洞比我想要他們更多。

我已經找到很多關於通過HTTP表單帖子匿名上傳到S3的文檔。 我可以將其改編成代碼,但我想知道,因為我在應用程序代碼(而不是HTTP表單帖子)是否有更簡單的方法?

您描述的內容可以在一個桶中實現。 您可以通過存儲桶策略允許匿名訪問特定文件夾,檢查示例或使用AWS Policy Generator 在你的情況下,它可能看起來像這樣:

{
    "Version": "2008-10-17",
    "Id": "Policy1346097257207",
    "Statement": [
        {
            "Sid": "Allow anonymous upload to /incoming",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::[your_bucket]/incoming/*"
        }
    ]
}

也可以使用簡單的html表單匿名上傳文件到您的存儲桶:

<form action="http://[your_bucket].s3.amazonaws.com/" method="post" enctype="multipart/form-data">
    <input type="hidden" name="acl" value="public-read" />
    Name: <input type="text" name="key" value="incoming/[filename]" /><br/>
    File: <input type="file" name="file" /> <br />
    <input type="submit" name="submit" value="Upload" />
</form>​

這里詳細描述基於S3瀏覽器的上傳。

我最近花了一些時間來弄清楚匿名上傳到S3的來龍去脈,並且也遇到了這個問題。 我在一段時間內寫了一篇關於ME的解決方案:

https://gist.github.com/jareware/d7a817a08e9eae51a7ea

基本上你可以實現你想要的,除了經過驗證的管理請求不起作用(或者至少我不知道解決方案)。

我知道這是一個較舊的問題,但只是在這里記錄它,以防它幫助其他人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM