1

我创建了一个对 S3 对象具有只读访问权限的组,然后在该组中添加了一个新用户。

我无法理解文件的 url 是什么。到目前为止,我有链接:

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

我是否需要通过某种方式idkey该组中的人获得访问权限?这些参数是什么,我在哪里可以找到值?

4

3 回答 3

2

要让人们访问您的文件,您需要公开存储桶,然后访问每个对象的 URL,您可以通过在 AWS 管理控制台中检查每个对象的属性来找到这些 URL。问题是任何知道此 URL 的人都可以访问这些文件。为了使其更安全,请使用 ACL 限制所有用户的只读访问权限。转到权限并为“所有人”添加新权限并仅选中“打开/下载”复选框。如果您只想限制少数用户访问,那么您将不得不使用 IAM 策略。使用 IAM 策略,您将获得一个安全密钥和秘密访问密钥。现在,您不能在字符串末尾附加秘密访问密钥以授予用户访问权限。秘密用户密钥是“秘密”。但您可以做的是通过代码向您的用户提供预签名 URL。

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);

        }

问题是 URL 只会在给定时间内有效。你可以增加它。此外,在上述函数中,“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;
        }
于 2012-05-28T07:05:19.423 回答
0

每个 IAM 用户都将拥有自己的证书和密钥,他们可以使用他们使用的任何 S3tools 设置这些证书和密钥。只需向他们提供登录 IAM AWS 帐户的 url 和登录凭据,他们就可以开始使用了。存储桶 URL 将相同。

于 2012-01-18T23:34:41.770 回答
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 的授权人。

或者

您可以使用 AWS API,并使用您必须直接下载文件的凭证。

这取决于你在做什么。

例如,要制作一个包含文件链接的网页,您可以创建一组有时间限制的 URL,每个文件一个。此页面将由您服务器上的某些代码在用户登录并拥有某种 IAM 凭证时生成。

或者,如果您想编写一个工具来管理 S3 存储库,您可能只需使用 API 直接下载/上传等。

于 2012-01-19T13:33:01.987 回答