Il s'agit d'un outil de déploiement pour télécharger des sites Web statiques sur S3. Si CloudFront est utilisé pour héberger le site Web, les fichiers téléchargés peuvent être automatiquement invalidés dans la distribution CloudFront. Un arbre de préfixe est utilisé pour minimiser le nombre d'invalidations car seul un nombre limité d'invalidations gratuites est disponible par mois.
La configuration est stockée dans un fichier YAML comme ceci:
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
Le site
est le répertoire du site Web statique par rapport à l'emplacement du fichier de configuration. Par exemple, Jekyll générera le site statique dans le répertoire _site
comme spécifié ci-dessus. Si vous enregistrez le fichier de configuration en tant que .s3_website.yaml
vous pouvez simplement exécuter s3-deploy-website
à partir du même répertoire:
$ cd jekyll-site/
$ ls .s3_website.yaml
.s3_website.yaml
$ s3-deploy-website
Les informations d'identification AWS peuvent être fournies via les variables d'environnement AWS_ACCESS_KEY_ID
et AWS_SECRET_ACCESS_KEY
.
$ export AWS_ACCESS_KEY_ID=XXXXXX
$ export AWS_SECRET_ACCESS_KEY=XXXXXX
$ s3-deploy-website
Ils peuvent également être fournis via les différents fichiers de configuration que Boto lit.
_site
pour les sites Jekyll).s3:GetObject
, s3:PutObject
, s3:DeleteObject
et s3:ListBucket
sur le seau et les clés, par exemple arn:aws:s3:::example.com
et arn:aws:s3:::example.com/*
.cloudfront:CreateInvalidation
.match
spécifie un modèle auquel la règle s'applique. Cela utilise une correspondance de style global (avec *
et ?
). La correspondance peut également être effectuée avec des expressions régulières en utilisant match_regexp
. Seule la première règle qui correspond à une clé donnée sera utilisée. La touche maxage
spécifie l'heure pour mettre en cache le fichier. La valeur doit être soit un certain nombre de secondes, soit une chaîne comme 30 days
, 5 minutes, 30 seconds
, etc. La configuration dans .s3_website.yaml
a été inspirée par S3_Website bien que les options prises en charge par S3_Website soient légèrement différentes.
Mit.