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