检索 S3 对象元数据的最快方法(Node JS API)
Fatest way to retrieve S3 objects metadata (NodeJS API)
我在 S3 对象中存储了自定义元数据(我在元 x-amz-metadata-description 中存储了文件的描述)。
我想检索具有 S3 对象属性(包括元数据)的文件列表。
我认为s3.listObjectsV2
可以帮助我,但似乎这种方法无法检索元数据(参见官方文档here)
我看到我可以用 getObjects 检索那些元数据,但是它会增加很多调用次数和请求的延迟。
您是否知道批量检索对象列表的元数据?
谢谢,
罗曼.
你需要aws s3api head-object
,它正是你想要的
The HEAD operation retrieves metadata from an object without returning the object itself. This operation is useful if you're only interested in an object's metadata. To use HEAD, you must have READ access to the object.
aws s3api head-object --bucket <mybucket> --key <value>
在 nodeJS API 中也可用,参见 http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#headObject-property
该方法每个键调用一次,如果您需要调用多个项目,您需要使用其他方法来解决这个问题,举个例子,您需要存储桶中所有 csv 文件的所有元数据,您会 运行
aws s3 ls --recursive <mybucket> \
| grep ".csv$" | cut -c 32- \
| xargs -I {} aws s3api head-object --bucket <mybucket> --key {}
命令的第一部分列出了您存储桶中的所有文件,您仅针对特定扩展名进行 grep,删除字符以便您仅获得密钥,并将此密钥作为 head-object 命令的参数传递
S3 不是为批量查询对象元数据而设计的。如果您的存储桶中的文件数量较少,您需要遵循@Frédéric Henri 的回答,否则您需要将元数据存储在其他数据存储中,例如 DynamoDB, whenever you put a file in the S3 bucket you can trigger Lambda 以将元数据复制到 DynamoDB table 然后您可以以您想要的任何方式查询 DynamoDB 的元数据。
我在 S3 对象中存储了自定义元数据(我在元 x-amz-metadata-description 中存储了文件的描述)。
我想检索具有 S3 对象属性(包括元数据)的文件列表。
我认为s3.listObjectsV2
可以帮助我,但似乎这种方法无法检索元数据(参见官方文档here)
我看到我可以用 getObjects 检索那些元数据,但是它会增加很多调用次数和请求的延迟。
您是否知道批量检索对象列表的元数据?
谢谢, 罗曼.
你需要aws s3api head-object
,它正是你想要的
The HEAD operation retrieves metadata from an object without returning the object itself. This operation is useful if you're only interested in an object's metadata. To use HEAD, you must have READ access to the object.
aws s3api head-object --bucket <mybucket> --key <value>
在 nodeJS API 中也可用,参见 http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#headObject-property
该方法每个键调用一次,如果您需要调用多个项目,您需要使用其他方法来解决这个问题,举个例子,您需要存储桶中所有 csv 文件的所有元数据,您会 运行
aws s3 ls --recursive <mybucket> \
| grep ".csv$" | cut -c 32- \
| xargs -I {} aws s3api head-object --bucket <mybucket> --key {}
命令的第一部分列出了您存储桶中的所有文件,您仅针对特定扩展名进行 grep,删除字符以便您仅获得密钥,并将此密钥作为 head-object 命令的参数传递
S3 不是为批量查询对象元数据而设计的。如果您的存储桶中的文件数量较少,您需要遵循@Frédéric Henri 的回答,否则您需要将元数据存储在其他数据存储中,例如 DynamoDB, whenever you put a file in the S3 bucket you can trigger Lambda 以将元数据复制到 DynamoDB table 然后您可以以您想要的任何方式查询 DynamoDB 的元数据。