运行cURL命令并使用shell脚本将输出文件保存到AWS S3



我有一个名为getData.sh的shell脚本,用于执行cURL POST命令。

$1
$2
date=$(date '+%Y-%m-%d')
if [[ -n $1 ]] && [[ -n $2 ]] ; then
curl -4 -X POST 
-H "Content-Type:application/json" 
-H "Authorization:Basic xxxxxxxxxxx" 
-H "X-Async:false" 
-d 
'{   
"variables": {    
"start_ts"    : "2020-11-03 '"${1}"'",
"end_ts"      : "2020-11-03 '"${2}"'",
"select_columns" : "*",
"where": "content is NOT NULL"
}  
}
' 
'http://xxxx:8080/app/v1/app/sQuery' > $date-$1-$2.gz
else
exit 1

fi

当我运行这个。。。./getData.sh 13:00:00 14:00:00

这会输出一个类似于的文件

2020-12-01-13:00:00-14:00.gz

现在我想把这个文件上传到S3。我可以运行这样的命令:

aws s3 cp/home/user/2020-22-01-13:00:00-14:00.gz s3://my-test-s3-bucket-2020-aws/

它是有效的,所以我想知道如何将其组合在一个脚本中,在这个脚本中它会自动运行aws s3复制命令并将其复制到s3。尝试了一些事情,但它是在文件cURL完成之前执行的,所以上传了文件的一部分

我尝试了以下操作,但它并没有赋予我以给定文件名上传的权力,因为它只是以名称"上传-">

curl xxx | aws s3 cp - s3://my-test-s3-bucket-2020-aws/

未测试,但可能是

'http://xxxx:8080/app/v1/app/sQuery' > $date-$1-$2.gz && aws s3 cp $date-$1-$2.gz s3://my-test-s3-bucket-2020-aws/

将有助于

最新更新