如何实现Git推送至Bitbucket后自动部署静态网站到AWS S3
实现Bitbucket代码推送自动部署到AWS S3静态网站
我之前帮团队配置过一模一样的流程,给你梳理下完整的配置步骤,照着来就能搞定:
1. 准备AWS权限(最小化原则)
首先得给Bitbucket Pipelines分配一个能操作目标S3桶的权限,推荐用IAM用户(别用root账号):
- 登录AWS控制台,创建一个新IAM用户,比如叫
bitbucket-s3-deployer - 给这个用户附加自定义权限策略,只开放必要的S3操作权限,示例策略如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:DeleteObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::你的存储桶名称", "arn:aws:s3:::你的存储桶名称/*" ] } ] }
- 生成该用户的Access Key ID和Secret Access Key,保存好,后面要用到。
2. 配置Bitbucket仓库变量
进入你的Bitbucket仓库,找到Settings > Pipelines > Repository variables,添加两个加密变量:
AWS_ACCESS_KEY_ID:填入刚才生成的IAM用户Access KeyAWS_SECRET_ACCESS_KEY:填入对应的Secret Access Key,记得勾选Secured选项加密存储
3. 编写Bitbucket Pipelines配置文件
在代码仓库根目录创建bitbucket-pipelines.yml文件,内容可参考下面的模板(根据你的静态网站情况调整):
image: python:3.9 pipelines: default: - step: name: 自动部署到S3静态网站 script: # 安装AWS CLI工具 - pip install awscli # 同步本地代码到S3,--delete会删除S3上本地已不存在的文件,按需开启 - aws s3 sync ./ s3://你的存储桶名称 --delete --exclude ".git/*" --exclude "bitbucket-pipelines.yml"
额外说明:
如果你的静态网站需要构建(比如Vue/React项目生成dist目录),可以在同步前加构建步骤,比如:
script: - npm install - npm run build - pip install awscli - aws s3 sync ./dist/ s3://你的存储桶名称 --delete --exclude ".git/*"
4. 开启Bitbucket Pipelines功能
回到Bitbucket仓库的Settings > Pipelines,开启Pipelines开关。之后每次推送代码到仓库,都会自动触发部署流程。
验证部署
推送一次测试代码到Bitbucket,然后查看仓库的Pipelines标签页,确认流程执行成功。之后访问你的S3静态网站URL,就能看到最新的内容了。
如果遇到权限报错,先检查IAM用户的策略是否正确,或者Bitbucket的变量有没有填错;如果同步内容不全,看看--exclude规则是不是误排除了需要上传的文件。
内容的提问来源于stack exchange,提问作者Huang
相关产品推荐
相关产品推荐

