Amazon web services 用于查询S3存储桶的AWS CLI命令

Amazon web services 用于查询S3存储桶的AWS CLI命令,amazon-web-services,amazon-s3,boto3,aws-cli,Amazon Web Services,Amazon S3,Boto3,Aws Cli,我有一个水桶,我将在这里显示一些图片。我试图让我的命令返回所有键值以数字开头的对象。以下是我正在使用的代码: cmd = "aws s3api list-objects --bucket some-images --query \"Contents[?starts_with(Key, '10000'\"" push = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) print(push.returncode) 我得到'没有

我有一个水桶,我将在这里显示一些图片。我试图让我的命令返回所有键值以数字开头的对象。以下是我正在使用的代码:

cmd = "aws s3api list-objects --bucket some-images --query \"Contents[?starts_with(Key, '10000'\""
push = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
print(push.returncode) 
我得到'没有'回来,我知道我有物体在那里

我最终要做的是返回一个匹配文件的JSON对象数组。下面的代码具有所需的输出,但速度太慢

import boto3
import json

urls=[]
s3=boto3.resource('s3')
bucket=s3.Bucket('some-images')
for obj in bucket.objects.all():
    if obj.key.startswith('100001'):
        urls.append(obj.key)
        json_ready=[{"url":u} for u in zip(urls)]
print(json.dumps(json_ready))
python代码的输出:[{“url”:[“100001.JPG”]}]


提前感谢您

查看以下AWS CLI命令是否适用于您

aws s3 ls s3://bucket_name/key 

了解有关“aws s3 ls”的更多信息

[更新:1]

要使用低级别s3api
您可以使用以下命令

aws s3api list-objects-v2 --bucket my_images_bucket --max-items 10 --prefix Ariba_ --output json
阅读更多关于“aws s3api list-objects-v2”的信息。

我推荐。它的功能非常强大,而且可能比运行多个请求来检索数据更便宜

它本质上允许您像查询数据库一样查询s3(s3有点像数据库,但这是一个不同的讨论)


有人写了一个要点来说明如何使用s3 select。

谢谢@Raeviman,这是一个非常有用的简洁的解决方案