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-websiteIls 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.