我正在使用AWS命令行工具运行一个简单的S3复制命令。我故意输入一个不存在的桶名来测试故障并相应地处理它们。但是,对于成功和不成功的S3副本,我的返回代码都是0(0)。这是正常的行为还是错误?如果这是正常的,那么我如何捕获错误而不必检查(即grep)字符串值的标准输出(即“上传失败”)?
成功复制
[ec2-user@ip-10-0-10-68 ~]$ aws s3 cp puppetmaster-bootstrap.sh s3://puppet-enterprise
upload: ./puppetmaster-bootstrap.sh to s3://puppet-enterprise/puppetmaster-bootstrap.sh
[ec2-user@ip-10-0-10-68 ~]$ echo $?
0
不成功复制
[ec2-user@ip-10-0-10-68 ~]$ aws s3 cp puppetmaster-bootstrap.sh s3://puppe-enterprise | tee -a ${LOGFILE}
upload failed: ./puppetmaster-bootstrap.sh to s3://puppe-enterprise/puppetmaster-bootstrap.sh A client error (NoSuchBucket) occurred when calling the PutObject operation: The specified bucket does not exist
[ec2-user@ip-10-0-10-68 ~]$ echo $?
0
使用CLI版本:
[ec2-user@ip-10-0-10-68 ~]$ aws --version
aws-cli/1.3.17 Python/2.6.9 Linux/3.10.35-43.137.amzn1.x86_64
发布于 2020-06-18 12:19:24
首先,您试图捕获错误的方式是不正确的,请使用管道状态;第二,在AWS上没有直接获取错误的方法,而是可以检查文件存在策略。
https://stackoverflow.com/questions/24371288
复制相似问题