如何从shell脚本中检查给定的AmazonS3密钥是否存在



我想从shell脚本中检查给定的s3键是否存在。

S3 Path:
========
s3://Bucket/test/names/12345/names-ca/one.txt
s3://Bucket/test/names/12346/names-ec/two.txt

我想检查s3://Bucket/test/names/12345是否存在。从shell中检查这个可能是更好的方法。

您可以使用awscli来测试S3中是否存在对象。例如:

aws s3api head-object --bucket mybucket --key dogs/snoopy.png

如果对象存在(并且您有权针对它发布HeadObject(,您将获得一个JSON响应和一个零返回代码。

下面是一个bash脚本示例:

#!/bin/bash
aws s3api head-object --bucket mybucket --key dogs/snoopy.png 1>/dev/null 2>&1
if [[ $? -eq 0 ]]; then
echo "S3 object exists"
else
echo "S3 object does not exist"
fi

要测试给定的S3前缀(如dogs/(下是否有对象,可以发出:

aws s3 ls mybucket/dogs/ --recursive | grep -v "/$" | wc -l

输出将是S3对象的计数,例如0或2。你可以用正常的方式捕捉,例如:

COUNT=$(aws s3 ls mybucket/dogs/ --recursive | grep -v "/$" | wc -l | tr -d ' ')
if [[ $COUNT -eq "0" ]]; then
echo "No objects under dogs/"
else
echo "Some ($COUNT) objects under dogs/"
fi

如果使用默认以外的AWS凭据配置文件,请将--profile myprofile附加到awscli命令。

相关内容

  • 没有找到相关文章

最新更新