AWS S3:如何使用 bash 检查存储桶中是否存在文件

2024-01-12

我想知道是否可以检查某个存储桶中是否有某些文件。

这是我发现的:

使用 s3cmd 检查文件是否位于 S3 存储桶中 https://stackoverflow.com/questions/17455782/checking-if-a-file-is-in-a-s3-bucket-using-the-s3cmd

它应该可以解决我的问题,但由于某种原因,它不断返回该文件不存在,而它确实存在。这个解决方案也有点过时,并且没有使用doesObjectExist method.

Amazon S3 Web 服务中可使用的所有方法摘要 http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3.html#doesObjectExist-java.lang.String-java.lang.String-

这给出了如何使用此方法的语法,但我似乎无法使其工作。

他们是否希望您创建一个布尔变量来保存方法的状态,or该函数是否直接给您输出/抛出错误?

这是我当前在 bash 脚本中使用的代码:

existBool=doesObjectExist(${BucketName}, backup_${DomainName}_${CurrentDate}.zip)

if $existBool ; then
        echo 'No worries, the file exists.'
fi

我仅使用文件名进行测试,而不是给出完整路径。但由于我收到的错误是语法错误,所以我可能只是错误地使用了它。

希望有人可以帮助我并告诉我我做错了什么。

!Edit

自从使用以来我最终寻找另一种方法来做到这一点doesObjectExist不是最快或最简单的。


上次我看到性能比较getObjectMetadata是检查对象是否存在的最快方法。使用 AWS cli 这将是head-object http://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html方法,举例:

aws s3api head-object --bucket www.codeengine.com --key index.html

返回:

{
    "AcceptRanges": "bytes",
    "ContentType": "text/html; charset=utf-8",
    "LastModified": "Sun, 08 Jan 2017 22:49:19 GMT",
    "ContentLength": 38106,
    "ContentEncoding": "gzip",
    "ETag": "\"bda80810592763dcaa8627d44c2bf8bb\"",
    "StorageClass": "REDUCED_REDUNDANCY",
    "CacheControl": "no-cache, no-store",
    "Metadata": {}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AWS S3:如何使用 bash 检查存储桶中是否存在文件 的相关文章

随机推荐