根据https://stackoverflow.com/a/65675842/569976,您可以使用AWS S3 CLI客户端按最后修改日期对list-objects-v2
的结果进行排序,如下所示:
aws s3api list-objects --bucket bucketname --query 'sort_by(Contents, &LastModified)[-1].Key' --output text
字符串
我的问题是.如何使用PHP客户端/Aws\S3\S3Client::listObjects
实现这一点?
https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#listobjects提到了一堆你可以传递给它的选项,没有一个是“query”:
$result = $client->listObjects([
'Bucket' => '<string>', // REQUIRED
'Delimiter' => '<string>',
'EncodingType' => 'url',
'ExpectedBucketOwner' => '<string>',
'Marker' => '<string>',
'MaxKeys' => <integer>,
'OptionalObjectAttributes' => ['<string>', ...],
'Prefix' => '<string>',
'RequestPayer' => 'requester',
]);
型
是不是PHP API客户端就不可能呢?
2条答案
按热度按时间fbcarpbf1#
--query
是AWS CLI支持的客户端参数。它不属于API。您需要在PHP代码中对结果进行排序。
此参数使用JMESPath作为修改输出结果的脚本语言。如果您想完全模拟其行为,可以使用JMESPath库,如this。
0aydgbwb2#
正如其他人所说,
query
不是API参数的一部分;相反,您可以使用JMESPath
,它使您能够以声明方式指定如何从JSON文档中提取元素。AWS SDK for PHP已经依赖于jmespath.php。Aws\ResultInterface
接口有一个search($expression)
方法,该方法基于JMESPath表达式从结果模型中提取数据。字符串