我有一个带有 IP 白名单策略的存储桶,我希望能够 s3 cp,或递归获取该存储桶的"子文件夹"中的所有内容。有没有办法做到这一点?wget 在单个文件上工作正常。
我尝试过:
-
AWS cp 没有设置依赖于 IP 白名单的配置文件,此操作失败并显示 403。
-
递归 wget,这在 403 时失败。
-
一个带有通配符的wget,这在HTTP中实际上不是一回事。
IP白名单非常有用,最好获得整个"文件夹"而不仅仅是单个对象。
您可以使用 AWS 命令行界面 (CLI( 复制文件,其中之一:
aws s3 cp --recursive s3://bucket/path/* localdir
或
aws s3 sync s3://bucket/path/ localdir
这将需要一组 AWS 凭证,因为 API 调用经过身份验证,而您的wget
方法似乎未经身份验证。如果存储桶策略授予对存储桶的公有访问权限(List 和 Get(,则凭证实际上不需要其他权限。
显然,就我而言,问题是我们在 GET 上被列入白名单而不是 LIST,如果其他人遇到这个问题,请确保您两者都有。
为了先"悄悄地"执行递归 GET,AWS CLI 会列出存储桶中的对象。这就是为什么能够通过 S3 获得单个项目但不能获得多个项目的原因。
我遇到的第二件事是,您需要有效的凭据(所以不是空字符串等(,正如@john-rotenstein在他的答案评论中指出的那样。