2012-01-18 112 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