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-websiteTambié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.