【问题标题】:s3 bucket policy to access object urls3 存储桶策略访问对象 url
【发布时间】:2021-09-20 06:16:56
【问题描述】:

什么是 s3 存储桶策略允许 IAM 用户访问对象 url,它基本上是我上传到 S3 存储桶的对象的 HTTPs url。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ListBucket",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::bucket"
        },
        {
            "Sid": "GetObject",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::bucket/*"
        }
    ]
}

通过上述策略,我可以将对象下载到本地,但我无法使用包含 Https 链接的对象 url 访问它。如果我将 s3 存储桶完全公开,那么只有这样我才能拥有对对象 url 的 https 访问权限。

我不想提供完全的公共访问权限以及如何通过存储桶策略提供对此的访问权限?

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-policies aws-permissions


    【解决方案1】:

    您可以通过为对象生成s3 pre-signed urls 来获取https url。这将允许使用生成的网址进行临时访问。

    除此之外,一个常见的选择是使用 CloudFront 与外部世界共享您的 s3 对象不公开您的存储桶,如下所述:

    【讨论】:

      【解决方案2】:

      默认情况下,Amazon S3 中的对象是私有的。无法通过匿名 URL 访问它们。

      如果您希望特定 IAM 用户能够访问存储桶,那么您可以自己向 IAM 用户添加权限。然后,在访问存储桶时,他们将需要识别自己并证明自己的身份。这最好通过对 Amazon S3 进行 API 调用来完成,其中包括身份验证。

      如果您必须通过 URL 访问私有对象,那么您可以创建一个Amazon S3 pre-signed URL,这是一个提供对私有对象的临时访问的限时 URL。这证明了您的所有权,并将让 S3 为您提供内容。只需几行代码即可生成预签名 URL。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-09
        • 2018-01-10
        • 1970-01-01
        • 2022-01-21
        • 1970-01-01
        • 2011-09-10
        相关资源
        最近更新 更多