我創建了一個只讀訪問S3對象的組,然後在該組中添加了一個新用戶。帶IAM策略的S3
我無法理解該文件的URL是什麼。我有鏈接迄今爲:
https://s3.amazonaws.com/my-bucket/
我需要在某種id
和key
通過讓人們在該組中可以訪問?這些參數是什麼,我在哪裏可以找到價值?
我創建了一個只讀訪問S3對象的組,然後在該組中添加了一個新用戶。帶IAM策略的S3
我無法理解該文件的URL是什麼。我有鏈接迄今爲:
https://s3.amazonaws.com/my-bucket/
我需要在某種id
和key
通過讓人們在該組中可以訪問?這些參數是什麼,我在哪裏可以找到價值?
要讓人們訪問您的文件,您需要將該存儲桶公開,然後通過檢查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;
}
每個IAM用戶將擁有自己的證書和密鑰,他們可以使用他們正在使用的任何S3tools進行設置。只要給他們登錄他們的IAM AWS accont的URL,以及他們的登錄憑據,他們應該很好去。存儲區網址將相同。
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直接下載/上傳等。
所以我不能鏈接到我的-bucket.s3 ...並追加IAM用戶密鑰和如果我理解正確,我能夠通過直接鏈接獲得通過身份驗證的IAM用戶可見的對象的唯一方法是編寫一個腳本,該腳本使用S3 API提供該文件? – doremi 2012-01-20 02:24:56