如何从本地计算机搜索存储在s3存储桶中的Json文件?

时间:2020-03-26 16:50:30

标签: amazon-s3 grep command-line-interface

我在s3存储桶中存储了数千个json文件,并且需要对字符串“名称”执行grep搜索。

我已经配置了AWS cli ok,因为我可以打印出存储桶中的所有文件(通过ls命令)。

我尝试了以下两个命令:

1)

aws s3 ls s3://training | grep 'name'

这什么都没发生

2)

aws s3 cp s3://training/*json - | grep 'name'

这给出了错误:

下载失败:s3:// training / * json至-发生错误(404) 调用HeadObject操作时:找不到

我知道字符串名称存在100%,因为它是在每个json中多次声明的字段名称

有什么想法我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

您的第一个示例失败,因为您正在列出对象,而不是打印出对象的内容。

您的第二个示例失败,因为您不能在S3请求中使用通配符。

执行此操作的一种方法是在本地同步文件,然后grep本地文件,然后删除本地文件(或只是留在原处以优化将来的同步)。您可以使用aws s3 sync来完成此操作。

另一种选择是使用Athena查询JSON内容。例如,您可以使用SQL查询。

另一个选择是将文档上载到S3时创建搜索索引。您可以触发Lambda函数,该函数读取对象的内容并将其索引到另一个S3对象,DynamoDB表或什至是Elasticsearch(如果这是一个重要的系统)中。