代码之家  ›  专栏  ›  技术社区  ›  Vivek Sable

从CloudFront通过签名url从S3 bucket读取S3对象

  •  0
  • Vivek Sable  · 技术社区  · 6 年前

    如何从CloudFront通过签名url从S3 bucket读取S3对象。

    1. 我有S3桶和一些文件,即S3对象。
    2. 我用boto3创建了S3签名的url,有效时间为3600秒。它工作得很好。3600秒后,签名的url无效,这是正确的。

      S3 Signed URL: https://s3.amazonaws.com/BucketName/2018-11-01_19_43_31.pdf?AWSAccessKeyId=XXXXX&Signature=XXXXXX&x-amz-security-token=xxxxxx&Expires=XXXXX

    3. 我创建了CloudFront发行版,其原始设置为S3 bucket。

      CloudFront endpoint: https://qwqwqwqwqw.cloudfront.net/

    4. 我创建签名的url(步骤3)并替换为CloudFront分发的端点。

      https://qwqwqwqwqw.cloudfront.net/2018-11-01_19_43_31.pdf?AWSAccessKeyId=XXXXX&Signature=XXXXXX&x-amz-security-token=xxxxxx&Expires=XXXXX

    但3600秒后我也能 下载文件。测试用例是-不要下载S3对象。

    以下是我的bucket策略:

    {
        "Version": "2008-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity $SDSDSFDAs$"
                },
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::my-bucket-name/*"
            }
        ]
    }
    
    0 回复  |  直到 6 年前