2012-01-18 165 views
1

我創建了一個只讀訪問S3對象的組,然後在該組中添加了一個新用戶。帶IAM策略的S3

我無法理解該文件的URL是什麼。我有鏈接迄今爲:

https://s3.amazonaws.com/my-bucket/ 

我需要在某種idkey通過讓人們在該組中可以訪問?這些參數是什麼,我在哪裏可以找到價值?

回答

2

要讓人們訪問您的文件,您需要將該存儲桶公開,然後通過檢查AWS管理控制檯中每個對象的屬性來訪問每個對象的URL。問題是任何知道這個URL的人都可以訪問這些文件。爲了使其更安全,請使用ACL限制所有用戶的只讀訪問權限。轉到權限併爲「所有人」添加新權限,然後僅選中「打開/下載」複選框。 如果你想限制只有少數用戶的訪問,那麼你將不得不使用IAM策略。使用IAM策略,您將獲得安全密鑰和祕密訪問密鑰。現在,您不能在字符串的末尾附加祕密訪問密鑰以授予用戶訪問權限。祕密用戶密鑰的意思是「祕密」。但你可以做的是通過代碼向用戶提供Presigned URL。這裏是一個C#示例

private void GetWebUrl() 
     { 
      var request = 
       new GetPreSignedUrlRequest().WithBucketName(your bucketName) 
       .WithKey(Your obj KEY); 
      request.WithExpires(DateTime.Now.Add(new TimeSpan(0, 0, 0, 50)));// Time you want URL to be active for 
      var url = S3.GetPreSignedURL(request); 

     } 

捕獲是網址將只在給定時間活動。你可以增加它。 此外,在上面的函數「S3' 是我創建amazonS3客戶端的一個實例:

private AmazonS3Client S3; 
public static AmazonS3Client CreateS3Client() 
     { 

      var appConfig = ConfigurationManager.AppSettings; 
      var accessKeyId = appConfig["AWSAccessKey"]; 
      var secretAccessKeyId = appConfig["AWSSecretKey"]; 
      S3= new AmazonS3Client(accessKeyId, secretAccessKeyId); 
      return S3; 
     } 
0

每個IAM用戶將擁有自己的證書和密鑰,他們可以使用他們正在使用的任何S3tools進行設置。只要給他們登錄他們的IAM AWS accont的URL,以及他們的登錄憑據,他們應該很好去。存儲區網址將相同。

0

S3上文件的URL不會更改。

通常情況下,您不會使用您擁有的表格,而是: https://my-bucket.s3.amazonaws.com/path/to/file.png - 其中path/to/file.png是關鍵。 (請參閱虛擬託管兼容存儲桶名稱)。

問題是,這個URL將導致一個404,除非有人要求它有正確的憑據,或桶是公共可讀的。

您可以使用這樣的URL並使用對文件具有隻讀訪問權限的任何憑據(在某些SDK中使用單個調用)對其進行簽名,這將導致任何人都可以使用的時間受限的URL。當url被簽名時,它會添加一些額外的參數,以便AWS可以告訴它是由URL組成的授權人員。

OR

您可以使用AWS API,並使用你必須直接下載該文件的憑據。

這取決於你在做什麼。

例如,要創建一個鏈接到文件的網頁,您可以創建一組時間受限的URL,每個文件一個。當用戶登錄並擁有某種IAM證書時,此頁面將由服務器上的一些代碼生成。

或者,如果您想編寫一個工具來管理S3回購,您可能直接使用API​​直接下載/上傳等。

+0

所以我不能鏈接到我的-bucket.s3 ...並追加IAM用戶密鑰和如果我理解正確,我能夠通過直接鏈接獲得通過身份驗證的IAM用戶可見的對象的唯一方法是編寫一個腳本,該腳本使用S3 API提供該文件? – doremi 2012-01-20 02:24:56