Esta é uma ferramenta de implantação para fazer upload de sites estáticos para o S3. Se o CloudFront for usado para hospedar o site, os arquivos carregados poderão ser automaticamente invalidados na distribuição CloudFront. Uma árvore de prefixo é usada para minimizar o número de invalidações, pois apenas um número limitado de invalidações gratuitas está disponível por mês.
A configuração é armazenada em um arquivo 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
O site
é o diretório do site estático em relação à localização do arquivo de configuração. Por exemplo, Jekyll gerará o site estático no diretório _site
, conforme especificado acima. Se você salvar o arquivo de configuração como .s3_website.yaml
poderá simplesmente executar s3-deploy-website
do mesmo diretório:
$ cd jekyll-site/
$ ls .s3_website.yaml
.s3_website.yaml
$ s3-deploy-website
As credenciais da AWS podem ser fornecidas através das variáveis de ambiente AWS_ACCESS_KEY_ID
e AWS_SECRET_ACCESS_KEY
.
$ export AWS_ACCESS_KEY_ID=XXXXXX
$ export AWS_SECRET_ACCESS_KEY=XXXXXX
$ s3-deploy-website
Eles também podem ser fornecidos através dos vários arquivos de configuração que o BOTO lê.
_site
para Jekyll).s3:GetObject
, s3:PutObject
, s3:DeleteObject
e s3:ListBucket
no balde e as chaves, por exemplo, arn:aws:s3:::example.com
e arn:aws:s3:::example.com/*
.cloudfront:CreateInvalidation
.match
especifica um padrão ao qual a regra se aplica. Isso usa a correspondência no estilo global (com *
e ?
). A correspondência também pode ser realizada com expressões regulares usando match_regexp
. Somente a primeira regra a corresponder a uma determinada chave será usada. A tecla maxage
especifica o tempo para armazenar em cache o arquivo. O valor deve ser um número de segundos ou uma corda como 30 days
, 5 minutes, 30 seconds
, etc. A configuração em .s3_website.yaml
foi inspirada no s3_website, embora as opções suportadas pelo s3_website sejam um pouco diferentes.
Mit.