AWS - 在考虑性能的情况下提供静态文件

AWS - Serving static files with performance in mind

我正在做我的一个项目,我预计每月大约有 500-750k 个独立的 ping。

我很想知道是否有比我下面的想法更好的托管静态网站的方法(就延迟而言)。

想法:

我主持的内容:

另外,如果我上面的想法没问题,你会选择哪个EC2实例?我在想一个微型实例就可以了,我不明白为什么我需要额外的 RAM/CPU.

编辑:或者像 S3 w/ CloudFront 这样更简单的东西怎么样?

适用于您的案例的具有成本效益、高可用性、完全托管、安全和容错的解决方案是 AWS S3

  1. 创建 S3 存储桶 (mybucket) 并在其上启用网站静态属性。

  2. 在该存储桶上创建具有 read/write 权限的 IAM 用户。

        "Version": "2012-10-17",
        "Statement": [
          {
            "Action": "s3:ListAllMyBuckets",
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::*"
          },
          {
            "Sid": "Stmt1487841624000",
            "Effect": "Allow",
            "Action": ["s3:*"],
            "Resource": ["arn:aws:s3:::mybucket/*", "arn:aws:s3:::mybucket"]
          }
        ]
        }
    

    (保留密钥和访问密钥以及您创建存储桶的区域)

  3. 在笔记本电脑中配置您的秘密密钥和访问密钥

      aws configure;
    
  4. 然后上传你的静态网站:

      aws s3 sync /path/to/local/dir s3://mybucket; 
    

恭喜!您的网站托管:http://[BUCKETNAME].s3-website.[REGIONMAME].amazonaws.com

如果你想:

  • 将网站映射到另一个域

  • or/and 使用 SSL

  • or/and 与 WAF 集成。

  • or/and 等等...

还使用 AWS CloudFront

我可以迟到吗,也建议S3。以下是一些实际性能指标

这是一张显示 S3 延迟的图表,负载相当高

如您所见,每小时第一个字节的平均时间范围为 30 到 60 毫秒

我们还发现总流量不会影响延迟,事实上平均延迟和总请求数之间似乎存在反比关系。我认为这是由于 AWS 端的自动缩放 "under the hood"

根据 AWS 文档,静态网站设置的 S3 部分适用于每秒 800 个 GET 请求,请参阅 http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html

抱歉,我没有 ngnix 统计数据可以与之进行比较。我们不将 ngnix 用于此类工作负载