นี่คือเครื่องมือปรับใช้สำหรับการอัปโหลดเว็บไซต์คงที่ไปยัง S3 หากใช้ CloudFront สำหรับโฮสต์เว็บไซต์ไฟล์ที่อัปโหลดสามารถไม่ถูกต้องโดยอัตโนมัติในการแจกแจง CloudFront ต้นไม้นำหน้าใช้เพื่อลดจำนวนของความไม่ถูกต้องเนื่องจากมีเพียงจำนวน จำกัด ของการใช้งานฟรีฟรีต่อเดือน
การกำหนดค่าจะถูกเก็บไว้ในไฟล์ YAML เช่นนี้:
site : _site
s3_bucket : example.com
cloudfront_distribution_id : XXXXXXXXXXX
cache_rules :
- match : " /assets/* "
maxage : 30 days
- match_regexp : ' ^assets/image-d{3}-.*.png$ '
maxage : 90 days
- match : " /css/* "
maxage : 30 days
- match : " * "
maxage : 1 hour
site
เป็นไดเรกทอรีของเว็บไซต์คงที่เทียบกับที่ตั้งของไฟล์กำหนดค่า ตัวอย่างเช่น Jekyll จะสร้างไซต์คงที่ในไดเรกทอรี _site
ตามที่ระบุไว้ข้างต้น หากคุณบันทึกไฟล์การกำหนดค่าเป็น .s3_website.yaml
คุณสามารถเรียกใช้ s3-deploy-website
จากไดเรกทอรีเดียวกัน:
$ cd jekyll-site/
$ ls .s3_website.yaml
.s3_website.yaml
$ s3-deploy-website
ข้อมูลรับรอง AWS สามารถให้ผ่านตัวแปรสภาพแวดล้อม AWS_ACCESS_KEY_ID
และ AWS_SECRET_ACCESS_KEY
$ export AWS_ACCESS_KEY_ID=XXXXXX
$ export AWS_SECRET_ACCESS_KEY=XXXXXX
$ s3-deploy-website
พวกเขายังสามารถให้ผ่านไฟล์การกำหนดค่าต่างๆที่ Boto อ่าน
_site
สำหรับไซต์ Jekyll)s3:GetObject
, s3:PutObject
, s3:DeleteObject
และ s3:ListBucket
บนถังและกุญแจเช่น arn:aws:s3:::example.com
และ arn:aws:s3:::example.com/*
cloudfront:CreateInvalidation
match
ระบุรูปแบบที่กฎใช้กับ สิ่งนี้ใช้การจับคู่สไตล์ลูกโลก (กับ *
และ ?
) การจับคู่สามารถทำได้ด้วยนิพจน์ทั่วไปโดยใช้ match_regexp
เฉพาะกฎแรกที่ตรงกับคีย์ที่กำหนดเท่านั้น คีย์ maxage
ระบุเวลาในการแคชไฟล์ ค่าควรเป็นจำนวนวินาทีหรือสตริงเช่น 30 days
, 5 minutes, 30 seconds
ฯลฯ การกำหนดค่าใน .s3_website.yaml
ได้รับแรงบันดาลใจจาก S3_Website แม้ว่าตัวเลือกที่รองรับโดย S3_Website จะแตกต่างกันเล็กน้อย
MIT