标签: amazon-cloudfront

创建允许访问Cloudfront但限制对其他任何人的访问的S3存储桶策略

我有以下政策:

{
        "Version": "2008-10-17",
        "Id": "PolicyForCloudFrontPrivateContent",
        "Statement": [
            {
                "Sid": "Stmt1395852960432",
                "Action": "s3:*",
                "Effect": "Deny",
                "Resource": "arn:aws:s3:::my-bucket/*",
                "Principal": {
                    "AWS": [
                        "*"
                    ]
                }
            },
            {
                "Sid": "1",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E1IYJC432545JN"
                },
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::my-bucket/*"
            }
        ]
    }
Run Code Online (Sandbox Code Playgroud)

但是,这会拒绝来自所有请求者的请求,甚至是Cloudfront.这样做的正确方法是什么?

问题是客户端使用公共读取创建对象.我目前没有立即控制客户端来更改此设置.所以我想要的是拥有一个覆盖单个对象ACL的策略.所以默认否认这里不起作用.

amazon-s3 amazon-cloudfront

18
推荐指数
3
解决办法
2万
查看次数

在NoScript上全局允许Cloudfront

所以亚马逊的Cloudfront CDN无处不在,作为NoScript用户,在不同的网站上允许每个"########.cloudfront.net"都会有点令人沮丧.现在有人如何在NoScript中创建ABE规则以允许来自*.cloudfront.net域的任何脚本?

firefox noscript amazon-cloudfront

18
推荐指数
2
解决办法
4565
查看次数

Amazon S3重定向规则 - 保留查询参数

我注意到了Amazon S3重定向规则 - 缺少GET数据,但在遵循接受的答案后,我的查询参数仍然没有被保留.

我有一个使用React和React Router的站点,这意味着我有几个URL加载相同的HTML和JS,然后JS根据URL确定要加载的应用程序的哪个部分.

例如:

/ foo,/ bar,/ baz都应该加载index.html,它会加载bundle.js.然后bundle.js观察URL并路由到一些React组件(也在bundle.js中).

但是S3中不存在foo,bar或baz文件,只有index.html.我想要做的是当我得到404,重定向到/#!/ {URL}(例如/ foo重定向到/#!/ foo).这适用于我的重定向规则(下面).但是,我也想带上查询参数(例如/ foo?ping = pong重定向到/#!/ foo?ping = pong)但是/ foo?ping = pong只是重定向到/#!/ foo.

这是我的重定向规则:

<RoutingRules>
    <RoutingRule>
        <Condition>
            <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
        </Condition>
        <Redirect>
            <Protocol>http</Protocol>
            <HostName>www.mydomain.com</HostName>
            <ReplaceKeyPrefixWith>#!/</ReplaceKeyPrefixWith>
        </Redirect>
    </RoutingRule>
</RoutingRules>
Run Code Online (Sandbox Code Playgroud)

我能以某种方式获得任何想法吗?理想情况下,每次添加新页面时都不必在S3/CloudFront中进行更改?

redirect amazon-s3 amazon-web-services amazon-cloudfront react-router

18
推荐指数
2
解决办法
6729
查看次数

CloudFront分发和AWS颁发的证书提供SSL_ERROR_NO_CYPHER_OVERLAP

我使用AWS证书无法使用Internet < - > CloudFront < - > S3 Bucket工作.这就是我做的:

  1. 创建了一个证书,一个通配符,如:*.mydomain.com.
  2. 创建了一个S3存储桶,没有属性的fiddeling.
  3. 创建CloudFront分配,使用创建的S3存储桶URL作为源,从步骤1中选择我的证书,选择HTTP/2,HTTP/1.1,HTTP/1.0,然后选择HTTP到HTTPS重定向.
  4. 在我的托管区域中为颁发证书的域创建了一个A别名,指向我的分发URL.

创建分发后,我的浏览器都告诉我这个:

  • Firefox:SSL_ERROR_NO_CYPHER_OVERLAP
  • Chrome:ERR_SSL_VERSION_OR_CIPHER_MISMATCH
  • Safari:无法建立安全连接.

我不确定我是否错过了设置过程中的一个步骤,我试图摆弄各种参数,但没有任何东西让我通过.

想知道我在这里错过了什么.

UPDATE

阅读此博客文章,说我可能忘记添加备用CNAME.这让我有点困惑,不是吗?在Route 53中,我使用something.mydomain.com配置了我的完整域名,证书是通配符.

其他博客文章和问题答案表明我不应该像我一样使用A记录和CloudFront分发URL /端点.

ssl amazon-web-services amazon-cloudfront amazon-route53

18
推荐指数
2
解决办法
3487
查看次数

更新 CloudFront Distribution (E32RNPFGEUHQ6J) 时出错:InvalidWebACLId:请求者无法访问 Web ACL

我正在使用它terraform创建一个web-aclinaws并希望将其web-acl与 CloudFront 发行版关联起来。

所以,我的代码如下所示:

provider "aws" {
  alias  = "east1"
  region = "us-east-1"
}

# -------------------------------------------
# -------------------------------------------
# Cloud Front
module "front_end_cloudfront" {
  source = "./modules/front-end/CF"

  # CF_ALIASES = ["terraformer-frontend.dev.effi.com.au"]  
  CF_LAMBDA_ARN = module.frontend_lambda.cf_lambda_qualified_arn
  CF_BUCKET_DOMAIN_NAME = module.front_end_bucket.website_endpoint
  CF_BUCKET_ORIGIN_ID = module.front_end_bucket.website_domain
  CF_TAGS_LIST = { "Name" : "terraformer-front-end-cloudfrontv2" }
  CF_CERTFICATE_ARN = var.CLOUDFRONT_US_EAST_1_ACM_ARN
  # WEB_ACL = module.waf.web_acl_id
  WEB_ACL = module.waf_cf.web_acl_id

  depends_on = [module.waf_cf]
}



# -------------------------------------------
# -------------------------------------------
# WAF for CF
module "waf_cf" { …
Run Code Online (Sandbox Code Playgroud)

amazon-cloudfront terraform amazon-waf

18
推荐指数
2
解决办法
8463
查看次数

Django-compressor:如何写入S3,从CloudFront读取?

我想从CloudFront提供我的压缩CSS/JS(他们生活在S3上),但我无法通过settings.py中的压缩器设置来解决这个问题,我有以下内容:

    COMPRESS_OFFLINE = True 
    COMPRESS_URL = 'http://static.example.com/' #same as STATIC_URL, so unnecessary, just here for simplicity
    COMPRESS_STORAGE = 'my_example_dir.storage.CachedS3BotoStorage' #subclass suggested in [docs][1]
    COMPRESS_OUTPUT_DIR = 'compressed_static'
    COMPRESS_ROOT = '/home/dotcloud/current/static/' #location of static files on server
Run Code Online (Sandbox Code Playgroud)

尽管有COMPRESS_URL,我的文件正在从我的s3存储桶中读取:
<link rel="stylesheet" href="https://example.s3.amazonaws.com/compressed_static/css/e0684a1d5c25.css?Signature=blahblahblah;Expires=farfuture;AWSAccessKeyId=blahblahblah" type="text/css" />

我想问题是我想将文件写入S3,但是从CloudFront读取它.这可能吗?

python django amazon-s3 amazon-cloudfront django-compressor

17
推荐指数
2
解决办法
7520
查看次数

CloudFront:成本估算

必须提出将Amazon S3与CloudFront一起用作CDN的建议.其中一个重要的事情是进行成本估算.我阅读了AWS网站和论坛,使用了他们的计算器,但无法得出最终数字(大约),我将对此充满信心.老实说,我对"数据传输","GET和其他请求"等术语感到困惑,以及我是否需要在Amazon S3和Amazon CloudFront上填写详细信息,然后进行总计.

所以在这里需要帮助来估算我的每月账单.

  • 我将使用S3来存储文件(主要是图像)
  • 我将使用我的S3存储桶配置云端以提供内容.
  • 大多数客户群(几乎95%)都在美国.

  • 平均文件大小:500KB

  • S3每月存储的平均文件数:80000(80K)
  • 每月请求文件的总用户数或从CloudFront获取文件的总请求数约:每月30百万
  • 每月会有一些失效请求(比方说1000)

如果我能更好地理解我的每月账单将如何计算以及它将会是什么,那将会很棒.

此外,根据上述数据和估算,如果我使用Akamai或Rackspace,则每月账单的数量是多少.

akamai amazon-s3 amazon-cloudfront

17
推荐指数
2
解决办法
2万
查看次数

预先签名的网址和签名网址有什么区别?

我打算在公共桶中使用私有对象,从而限制对对象的访问,而不是桶中的其他对象.我想设置CloudFront以使用签名URL提供内容.现在在AWS S3文档中,我看到两个不同的术语,一个是用于访问私有对象的预签名URL,另一个是签名URL,需要下载私钥等并执行更多操作.

预签名URL和签名URL有什么区别?我可以PreSigned在CloudFront中使用URL吗?

C#库有方法GetPreSignedURL,是否自动下载私钥等并进行签名或此GetPreSignedURL方法与S3 URL签名不同,需要设置私钥然后签署URL?

c# amazon-s3 amazon-web-services amazon-cloudfront

17
推荐指数
2
解决办法
1万
查看次数

Safari的Angular和cloudfront

我们在cloudfront上设置了一个angularjs应用程序,该应用程序包含s3存储上的所有资产文件,并通过cloudfront用于SSL和性能.

我们的设置与本指南中描述的设置完全相同

https://rossfairbanks.com/2015/01/30/integrating-angular-s3-cloudfront.html

由于我们使用相同的帖子来创建我们自己的设置,似乎这适用于除Safari之外的所有浏览器.

在Safari上,当直接访问给定路径上的URL或刷新任何子页面时,ui-router会将用户页面重定向到登录页面.

但是对于暂存,我们有相同的设置,但直接在S3上运行而没有中间的CloudFront,因此没有SSL.但是,它似乎甚至在Safari上工作

所以,问题似乎是CloudFront和Safari更具体的问题.

任何人都可以建议可能的原因是什么?以及我们如何解决它?

更新:此问题可能与此错误有关https://bugs.webkit.org/show_bug.cgi?id=24175

safari amazon-s3 amazon-cloudfront angularjs

17
推荐指数
1
解决办法
1059
查看次数

CloudFront自定义策略的多个策略声明(签名Cookie)

在为签名cookie(非签名URL)使用CloudFront自定义策略时,是否可以创建具有多个语句的策略?

我已经阅读了文档,尽管所有示例都只有一个语句,但我看不到关于允许的语句数量的明确规则.

如果不可能有多个策略语句,则很难仅使用CloudFront安全性为特定用户提供签名cookie访问,即五个随机文件.任何有关如何做到这一点的提示将不胜感激.

这个问题在这里交叉发布:https://forums.aws.amazon.com/thread.jspa?threadID = 223440&tstart = 0

amazon-web-services amazon-cloudfront

17
推荐指数
1
解决办法
1454
查看次数