【问题标题】:run cURL command and save output file to AWS S3 using shell script运行 cURL 命令并使用 shell 脚本将输出文件保存到 AWS S3
【发布时间】:2021-03-13 08:58:17
【问题描述】:

我有一个名为 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:00.gz

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

aws s3 cp /home/user/2020-12-01-13:00:00-14:00: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/

【问题讨论】:

    标签: bash amazon-s3 aws-cli


    【解决方案1】:

    未测试,但可能

    '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/
    

    会有帮助

    【讨论】:

    • 有没有办法直接保存——不先本地保存。
    • 我不知道。 S3 是一个块存储,从技术上讲,它下面是一个简单的键值存储。您可以在命令末尾添加 && rm $date-$1-$2.gz 以在上传后直接删除文件。
    猜你喜欢
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    相关资源
    最近更新 更多