Esta es una herramienta de implementación para cargar sitios web estáticos a S3. Si CloudFront se usa para alojar el sitio web, los archivos cargados se pueden invalidar automáticamente en la distribución de CloudFront. Se utiliza un árbol de prefijo para minimizar el número de invalidaciones, ya que solo hay un número limitado de invalidaciones gratuitas disponibles por mes.
La configuración se almacena en un archivo YAML como este:
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
El site
es el directorio del sitio web estático en relación con la ubicación del archivo de configuración. Por ejemplo, Jekyll generará el sitio estático en el directorio _site
como se especificó anteriormente. Si guarda el archivo de configuración como .s3_website.yaml
simplemente puede ejecutar s3-deploy-website
desde el mismo directorio:
$ cd jekyll-site/
$ ls .s3_website.yaml
.s3_website.yaml
$ s3-deploy-website
Las credenciales de AWS se pueden proporcionar a través de las variables de entorno AWS_ACCESS_KEY_ID
y AWS_SECRET_ACCESS_KEY
.
$ export AWS_ACCESS_KEY_ID=XXXXXX
$ export AWS_SECRET_ACCESS_KEY=XXXXXX
$ s3-deploy-website
También se pueden proporcionar a través de los diversos archivos de configuración que Boto lee.
_site
para sitios Jekyll).s3:GetObject
, s3:PutObject
, s3:DeleteObject
y s3:ListBucket
en el cubo y las llaves, por ejemplo, arn:aws:s3:::example.com
y arn:aws:s3:::example.com/*
.cloudfront:CreateInvalidation
.match
especifica un patrón al que se aplica la regla. Esto usa coincidencia de estilo global (con *
y ?
). La coincidencia también se puede realizar con expresiones regulares utilizando match_regexp
. Solo se utilizará la primera regla para que coincida con una clave dada. La tecla maxage
especifica el tiempo para almacenar en caché el archivo. El valor debe ser varios segundos o una cadena como 30 days
, 5 minutes, 30 seconds
, etc. La configuración en .s3_website.yaml
se inspiró en S3_Website, aunque las opciones admitidas por S3_Website son ligeramente diferentes.
Mit.