Amazon CloudFront – Så kommer du igång

Det är nu fyra dagar sedan som Bloggy tog ett första steg till att bli en ”del av molnet”-tjänst. Det första steget innebär att alla statiska objekt ligger på Amazon CloudFront-tjänsten.

Eftersom jag hade gjort en implementation till Bloggy tidigare som använde sig av SimpleCDN så var det trivialt att byta ut två rader kod så att Bloggy istället använde sig av Amazon CloudFront.

Den PHP-implementation jag använder är denna: undesigned.org.za/2007/10/22/amazon-s3-php-class

Och den kod som jag använder mig för att ladda upp ett objekt i PHP är följande:

require_once "S3.class.php";
$s3 = new S3('accessKey', 'secretKey');
$s3->putObjectFile('file.doc', 'cf.bloggy.se', 'docs/file.doc', S3::ACL_PUBLIC_READ);

Detta förutsätter att jag redan innan skapat en CloudFront bucket med hjälp av s3cmd:

$ s3cmd --configure

Tips: Använder du Amazon S3 istället så bör du lägga till raden ”bucket_location = EU” i din ~/.s3cfg om du vill att dina buckets ska skpas i europa.

$ ./s3cmd mb s3://cloudfront.bloggy.se 

 

 

Bucket 's3://cloudfront.bloggy.se/' created
$ ./s3cmd cfcreate s3://cloudfront.bloggy.se 

Distribution created: Origin:         s3://cloudfront.bloggy.se/ 

DistId:         cf://E3VE9DJIVFQYO3 

DomainName:     d1bq8ovpea0j10.cloudfront.net 

CNAMEs: 

Comment:        http://cloudfront.bloggy.se.s3.amazonaws.com/ 

Status:         InProgress 

Enabled:        True Etag:           

E2N0AVZ9F1WJZL 

 

 

$   

Som ovan visar så är Status: InProgress och efter några minuter så visas Status: Deployed.

Om du vill använda ditt eget domännamn exempelvis cloudfront.bloggy.se (DNS != bucketnamn) så måste detta sättas som CNAME parameter på den bucketen eller så använder du

Andra bra kommandon: s3cmd ls samt s3cmd cfinfo för att visa dina buckets samt status.

För att sedan synkronisera statiska objekt såsom CSS-filer så behöver du enbart göra enligt följande:

$ ./s3cmd sync /var/www/bloggy.se/docs/css/ s3://cloudfront.bloggy.se

Efter fyra dagar så ser min förbrukning/dollars ut så här (klicka på bilden):

amazonJag har tidigare jämfört Amazon S3 med CloufFront.

8 reaktioner på ”Amazon CloudFront – Så kommer du igång

  1. Har du gjort några svarstidsmätningar mot SimpleCDN samt vad är huvudanledningen till bytet?

  2. Per: Problemet är att SimpleCDN verkar ha problem med sin routing (anycast) för traceroute från hemmet gör att jag hamnar i USA och från en av mina Co-Locations så hamnar jag rätt: europa

  3. Är det temporärt eller har det alltid varit så? Testade kort igår och som du säger är svarstiderna extremt långa.

    Känner du till om Amazon CloudFront också har Auto Buckets/Mirror Buckets som SimpleCDN?

  4. Tack för det här inlägget, det är jättespännande att läsa.

    Jag undrar om du tittat nåt på hur CF behandlar ETag eller Expires-headrar? När jag tittar på bloggy.se med YSlow så ser jag att 86 av 90 HTTP-requests som måste göras för min förstasida måste repeteras varje gång jag kommer in på sidan, och att allting som ligger i CF inte har nån far-future expire. Är det något man kan påverka själv?

    /M;

    Månss senast blogginlägg..XBMC och Apple TV är som gjorda för varandra

  5. Måns: Det är en bra synpunkt och något som jag har sett att det går att ställa in på SimpleCDN. De headers som CloudFront skickar tillbaka är följande:
    HTTP request sent, awaiting response…
    HTTP/1.0 200 OK
    x-amz-id-2: oZtBSKsJhZbxcINZ9tAD1ldJgAC+xsOwdBp3lFER+Pq7FSy9nHVF7iwFolnYq2Vv
    x-amz-request-id: EB18119CB6C2656A
    Date: Fri, 20 Feb 2009 00:49:23 GMT
    Last-Modified: Fri, 20 Feb 2009 00:49:02 GMT
    ETag: ”43ef6afb420808d54f49fff4c2cbdcb8″
    Content-Type: image/png
    Content-Length: 16140
    Server: AmazonS3
    Age: 37442
    X-Cache: Hit from cloudfront
    Via: 1.0 251880d4b4328e28f9b8f958f10484a6.cloudfront.net:11180 (CloudFront), 1.0 9a2c78ff08ad47db2bb61d22094add8a.cloudfront.net:11180 (CloudFront)
    Connection: keep-alive

    Så både Etag och last-modified finns ju där.

  6. Per: Inte vad jag känner till. SimpleCDN:s routingproblem har varit allmänt kända länge

  7. Japp, expires-headern verkar inte vara satt särskilt långt fram, vilket är standardbeteende, men mindre bra för statiskt innehåll eftersom det innebär extra round-trips mellan klienten och servern, även om svaret från servern blir att innehållet är oförändrat.

    Varje request tar ju några millisekunder, och har man många dokument på sidan (du hade 90) så tar det lite tid ändå eftersom klienten bara kan skicka två requests åt gången till samma server.

  8. Tjo!

    Du fråga mig på twitter för evigheter sedan vad det kostade för oss att köra S3 på Whoa.nu.

    I februari ligger vi på 380 skickade gigabyte och det ligger på typ 70$. Vi använder som sagt det enbart för att hosta zip,mp3 och filmer.

    Känns rätt ok.

    Olas senast blogginlägg..Världens snyggaste bakgrundsbilder

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *

Följande HTML-taggar och attribut är tillåtna: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>