用于在AWS s3中部署的Shell脚本

时间:2017-05-17 13:18:33

标签: linux shell amazon-web-services amazon-s3 amazon-ec2

我们在Angular 2中有一个静态网站构建,它在s3上托管。 该网站使用在AWS Gateway + Lambda Function中编写的API。

对于我们的前端部署,我们希望在Linux上使用EC2实例,我们在其中启动Shell脚本,该脚本将处理我们的构建并从EC2上传到我们的S3。

#!/bin/bash

#pull from branch
git checkout --force "$1"
git pull 

#build the app
ng build --production 
cd dist

#uplaod to S3

$counter = find dist -type f | wc -l

#staging parameter
 if ["$1" = "staging"]
  then aws s3 cp dist s3://STAGINBUCKET --recursive
  #[1]

#live parameter
 if ["$1" = "live"]
  then aws s3 cp dist s3://LIVEBUCKT --recursive
  #[1]

#Errorhandler
else echo "parameter $1 error"

我们的问题是我们无法将整个文件夹上传到S3,因此我们需要一个for / while循环,它会将evry文件上传到我们的Bucket。

我尝试过:[1]

for i in `seq 1 $counter`
 do
  #upload to file on position $i in folder dist
done

哪个不适合我。

如果有人知道在AWS中处理部署的更好方法,我将不胜感激。

感谢您提前帮助!

1 个答案:

答案 0 :(得分:2)

当然,您可以复制整个目录。来自aws s3 sync help

NAME
       sync -

DESCRIPTION
       Syncs  directories  and S3 prefixes. Recursively copies new and updated
       files from the source directory to the destination. Only creates  fold-
       ers in the destination if they contain one or more files.