如何在travis部署之前清除S3存储桶

Amo*_* Wu 8 amazon-s3 amazon-web-services travis-ci

这是我的.travis.yml:

deploy:
  provider: s3
  access_key_id: $AWS_ACCESS_KEY
  secret_access_key: $AWS_SECRET_KEY
  bucket: domain.com
  skip_cleanup: true
  acl: public_read
  region: ap-northeast-1
  endpoint: domain.com.s3-website-ap-northeast-1.amazonaws.com
  detect_encoding: true
  on:
    branch: master
Run Code Online (Sandbox Code Playgroud)

但它只是将文件上传到存储桶,而不是同步.如何同步或清除S3存储桶文件?

hus*_*elt 2

为了解决这个问题,我从 pip 安装了 AWS cli 并执行了部署前脚本。

这就是您在 .travis.yml 中需要的内容:

before_install:
  - pip install --user awscli
  - export PATH=$PATH:$HOME/.local/bin
before_deploy: bin/deploy.sh
Run Code Online (Sandbox Code Playgroud)

您还需要保护 .travis.yml 中的两个环境变量,该变量已由 aws-cli 准备就绪:

travis encrypt AWS_ACCESS_KEY_ID=YOUR_KEY_HERE --add
travis encrypt AWS_SECRET_ACCESS_KEY=YOUR_SECRET_HERE --add
Run Code Online (Sandbox Code Playgroud)

您的 bin/deploy.sh 应类似于以下内容

#!/bin/sh

echo "Clearing bucket: s3://your-bucket/path/inside/bucket/if/you/want"
aws s3 rm s3://your-bucket/path/inside/bucket/if/you/want --recursive --region eu-central-1
Run Code Online (Sandbox Code Playgroud)

并不是我们指定了区域,这对于 aws cli 来说似乎是强制性的。

希望这可以帮助!