如何将本地文件夹层级以独立键形式上传至AWS S3?
实现S3层级键的两种方法
当使用aws s3 cp --recursive上传时,S3不会自动生成对应文件夹的空对象(即my-folder/、my-folder/sub-folder/这类键)——因为S3本质上没有真实的目录结构,这些“文件夹”只是对象键的前缀。要生成你需要的三个键,可通过以下两种方式实现:
方法一:使用s3 sync命令
sync命令会自动创建对应层级的前缀空对象,完美匹配你的需求。执行以下命令:
aws s3 sync my-folder/ s3://my_bucket/my-folder/
这条命令会同步本地my-folder下的所有内容到S3的my-folder/前缀下,同时自动生成my-folder/和my-folder/sub-folder/这两个模拟文件夹的键,加上文件本身的键,正好是你需要的三个。
方法二:手动创建文件夹键+上传文件
如果更倾向于用cp命令,可以先手动创建两个文件夹对应的空对象,再上传文件:
- 创建顶级文件夹键:
aws s3api put-object --bucket my_bucket --key my-folder/
- 创建子文件夹键:
aws s3api put-object --bucket my_bucket --key my-folder/sub-folder/
- 上传文件:
aws s3 cp my-folder/sub-folder/file.json s3://my_bucket/my-folder/sub-folder/file.json
这样就能得到三个独立的S3键。
补充说明
如果本地文件夹中存在空目录,cp --recursive也不会上传对应的前缀对象,但sync命令会处理这种情况。另外,有些工具会通过在文件夹中放置空文件(比如.gitkeep)来让cp命令识别并生成对应前缀,不过这种方式不如前两种直接。
内容的提问来源于stack exchange,提问作者Robert Ducan
相关产品推荐
相关产品推荐

