我创建了一个只读访问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