gpt4 book ai didi

shell - 无需身份验证的 AWS S3 ListBucketResult 分页?

转载 作者:行者123 更新时间:2023-12-01 11:40:10 25 4
gpt4 key购买 nike

我希望获取公共(public) S3 存储桶中所有对象的简单列表。

我知道如何获得 listing with curl for upto 1000 results ,虽然我不明白如何对结果进行分页,以获得完整列表。我认为标记是一条线索。

我不想使用 SDK/库或进行身份验证。我正在寻找几行 shell 来执行此操作。

最佳答案

#!/bin/sh

# setting max-keys higher than 1000 is not effective
s3url=http://mr2011.s3-ap-southeast-1.amazonaws.com?max-keys=1000
s3ns=http://s3.amazonaws.com/doc/2006-03-01/

i=0
s3get=$s3url

while :; do
curl -s $s3get > "listing$i.xml"
nextkey=$(xml sel -T -N "w=$s3ns" -t \
--if '/w:ListBucketResult/w:IsTruncated="true"' \
-v 'str:encode-uri(/w:ListBucketResult/w:Contents[last()]/w:Key, true())' \
-b -n "listing$i.xml")
# -b -n adds a newline to the result unconditionally,
# this avoids the "no XPaths matched" message; $() drops newlines.

if [ -n "$nextkey" ] ; then
s3get=$s3url"&marker=$nextkey"
i=$((i+1))
else
break
fi
done

关于shell - 无需身份验证的 AWS S3 ListBucketResult 分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21951372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com