Are there use cases that lend themselves better to Amazon cloudfront over s3 or the other way around? I'm trying to understand the difference between the 2 through examples.
相关问题
- How to generate 12 digit unique number in redshift
- Use awslogs with kubernetes 'natively'
- JQ: Select when attribute value exists in a bash a
- Assume/switch role in aws toolkit for eclipse 2.0
- 'no SavedModel bundles found!' on tensorfl
相关文章
- Right way to deploy Rails + Puma + Postgres app to
- how many objects are returned by aws s3api list-ob
- AWS S3 in rails - how to set the s3_signature_vers
- Passthrough input to output in AWS Step Functions
- I cannot locate production log files on Elastic Be
- ImportError: cannot import name 'joblib' f
- PUT to S3 with presigned url gives 403 error
- Static IP for Auto Scale in AWS
Amazon S3 is a Simple Storage Service, this can be used large amount of information i.e. Videos, Images, PDF etc.
CloudFront is a Content Delivery Network, which is closer to the end user and is used to make the information available on Amazon S3 in the least possible time.
A sample use case is Video on Demand.
Some advantages of using CloudFront for right use case:
Other possible use cases:
CloudFront and S3 Bucket is not the same. In layman's terms: CloudFront enables you to accelerate content delivery of your web contents via Content Delivery Network (CDN) in edge locations, whereas S3 Buckets are where you store your actual files. CloudFront sources may not necessarily be from S3 but for easier visualization of S3 integration with CloudFront:
Amazon S3 is designed for large-capacity, low-cost file storage in one specific geographical region.* The storage and bandwidth costs are quite low.
Amazon CloudFront is a Content Delivery Network (CDN) which proxies and caches web data at edge locations as close to users as possible.
The data served by CloudFront may or may not come from S3. Since it is more optimized for delivery speed, the bandwidth costs a little more.
If your user base is localized, you won't see too much difference working with S3 or CloudFront (but you have to choose the right location for your S3 bucket: US, EU, APAC). If your user base is spread globally and speed is important, CloudFront may be a better option.
Both S3 and CloudFront allow domain aliases, however CloudFront allows multiple aliases so that
d1.mystatics.com
,d2.mystatics.com
andd3.mystatics.com
could all point to the same location increasing the capacity for parallel downloads (this used to be recommended by Google but with the introduction of SPDY and HTTP/2 is of lesser importance).CloudFront also supports CORS as of 2014 (thanks sergiopantoja).
* Note: S3 can now automatically replicate to additional regions as of 2015.
You can see some Comparison between Amazon S3 and Amazon Cloudfront from here : http://www.bucketexplorer.com/documentation/cloudfront--amazon-s3-vs-amazon-cloudfront.html
[Disclosure : Bucket Explorer]
One aspect missed here is:
Amazon Cloudfront also offers lower prices than Amazon S3 at higher usage tiers.
Cloudfront CDN is for distribution of content across multiple servers geographically distributed (CSS, JS)
Whereas s3 is more of a per user less used resources store (user images, PDFs).
You can serve your Cloudfront resources from an s3 bucket completely bypassing your web server.
(Useful in situations where your web server pre-compiles and stores images and java-script. storing them on s3 means your server memory footprint is reduced )
Ex: On Heroku Slugs (complied application sizes can be reduced by using s3 and wrapping it with cloud-front CDN will improve throughput)
Another major difference is that CloudFront allows you to mirror the site on your server. Cloudfront then caches the files such as images, mp3 or video using its content delivery network.
This saves you having to duplicate your assets as you would when you use Amazon S3.
However, after a file expires, CloudFront will fetch it again from your live site (at cost). So cloud front is best for frequently accessed files, and less so for infrequently accessed ones.
One way to set the file expiry for apache is in .htaccess. For example