Dies ist ein Bereitstellungstool zum Hochladen statischer Websites auf S3. Wenn CloudFront zum Hosting der Website verwendet wird, können die hochgeladenen Dateien in der CloudFront -Verteilung automatisch ungültig gemacht werden. Ein Präfixbaum wird verwendet, um die Anzahl der Ungültigmachungen zu minimieren, da nur eine begrenzte Anzahl von kostenlosen Ungültigkeiten pro Monat verfügbar sind.
Die Konfiguration wird in einer YAML -Datei wie folgt gespeichert:
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
Die site
ist das Verzeichnis der statischen Website relativ zum Speicherort der Konfigurationsdatei. Beispielsweise generiert Jekyll die statische Site im _site
-Verzeichnis, wie oben angegeben. Wenn Sie die Konfigurationsdatei als .s3_website.yaml
speichern, können Sie einfach s3-deploy-website
aus demselben Verzeichnis ausführen:
$ cd jekyll-site/
$ ls .s3_website.yaml
.s3_website.yaml
$ s3-deploy-website
AWS -Anmeldeinformationen können über die Umgebungsvariablen AWS_ACCESS_KEY_ID
und AWS_SECRET_ACCESS_KEY
bereitgestellt werden.
$ export AWS_ACCESS_KEY_ID=XXXXXX
$ export AWS_SECRET_ACCESS_KEY=XXXXXX
$ s3-deploy-website
Sie können auch über die verschiedenen Konfigurationsdateien bereitgestellt werden, die Boto liest.
_site
).s3:GetObject
, s3:PutObject
, s3:DeleteObject
und s3:ListBucket
auf dem Bucket und den Schlüssel, arn:aws:s3:::example.com
arn:aws:s3:::example.com/*
.cloudfront:CreateInvalidation
.match
-Schlüssel gibt ein Muster an, auf das die Regel gilt. Dies verwendet das Matching im Glob-Stil (mit *
und ?
). Matching kann auch mit regulären Ausdrücken unter Verwendung von match_regexp
durchgeführt werden. Nur die erste Regel, die mit einem bestimmten Schlüssel übereinstimmt, wird verwendet. Der maxage
-Taste gibt die Zeit zum zwischenströmenden Datei an. Der Wert sollte entweder eine Anzahl von Sekunden oder eine Zeichenfolge wie 30 days
, 5 minutes, 30 seconds
usw. betragen. Die Konfiguration in .s3_website.yaml
wurde von S3_Website inspiriert, obwohl die von S3_Website unterstützten Optionen geringfügig unterschiedlich sind.
MIT.