gpt4 book ai didi

amazon-web-services - 如何在部署 travis 之前清除 S3 存储桶

转载 作者:行者123 更新时间:2023-12-04 08:06:47 26 4
gpt4 key购买 nike

这是我的 .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

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

最佳答案

该更新帮助我找到了解决方案。谢谢!它比 hussfelt 提出的答案更清晰。

使用 awscli

由于使用列出的命令需要进行一些研究,因此我将解释如何更改 .travis.yml对于找到此帖子的任何其他人。

before_deploy: pip install --user awscli

首次安装 awscli启用与您的 S3 存储桶同步。要在 Travis 基于容器的架构上运行,我们不能使用 sudo , 所以用 --user 安装到主目录.在 Linux(Travis 的默认操作系统)上,使用此选项安装的二进制文件位于 ~/.local/bin/ ——
deploy:
provider: script

接下来,使用 script provider 运行自定义命令作为部署方法。
  script: ~/.local/bin/aws s3 sync dist s3://example.com --region=eu-central-1 --delete

这一行是您的文件已上传。 aws s3 sync用于在本地机器和存储桶之间同步文件。完整文档可用 here .

在我的例子中 dist是我们要上传到 S3 的构建文件夹。您的构建系统可能会调用它 build或者是其他东西。 “example.com”是您的存储桶的名称。需要 region 参数来唯一标识您的存储桶。

这个命令中真正有趣的部分是 --delete switch 这是我们问题的解决方案。设置后, aws将删除在您的存储桶中找到但不在您的构建目录中的任何文件。
  skip_cleanup: true
on:
branch: master
skip_cleanup应该设置,否则您的任何文件都不会上传。我个人喜欢让 Travis 只部署提交到 master ,但这里可以进行任何配置。见 the docs了解更多信息。

环境

我们需要给 aws我们的 AWS 凭证来授权任何交互。 aws 使用的环境变量是 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY . hussfelt 写了如何在他们的回答中提供这些。 Travis 文档中也描述了该过程: encryptionAWS specifics .

完整解决方案
# Deploy using awscli to enable pruning of removed files
before_deploy: pip install --user awscli
deploy:
provider: script
script: ~/.local/bin/aws s3 sync dist s3://example.com --region=eu-central-1 --delete
skip_cleanup: true
on:
branch: master

关于amazon-web-services - 如何在部署 travis 之前清除 S3 存储桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30808227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com