如何获取现有的 s3 存储桶(子目录)?

How to get existing s3 bucket(subdirectory)?

对于我正在开发的 CDK 应用程序,尝试获取现有的 s3 存储桶路径,然后将一些本地文件复制到该存储桶。但是,当代码尝试搜索存储桶时出现此错误, Failed to create resource. Command '['python3', '/var/task/aws', 's3', 'sync', '--delete', '/tmp/tmpew0gwu1w/contents', 's3://dir/subdir/']' returned non-zero exit status 1. 使用下面的代码,

如果有人能帮我解决这个问题,那就太好了,不确定 'bucket-name' 参数是否可以采用存储桶路径。

一行代码如下, IBucket byName = Bucket.fromBucketName(this, "bucket-name", "dir/subdir");

注意:如果我尝试将文件复制到主目录(在本例中为 dir),它工作正常。

“路径”不是存储桶名称的一部分,而是对象键(文件名)的一部分。 Amazon S3 是一个对象存储,没有像文件系统那样的目录。

从技术上讲,存储桶中的每个对象都位于顶层,“路径”作为其名称的前缀。

所以如果你有类似 s3://bucket/path/sub-path/file.txt 的东西,bucket 名称是 bucketobject key (类似于文件名)是 path/sub-path/file.txtpath/sub-path/ 前缀

使用 aws s3 sync CLI 命令时,前缀会转换为本地驱动器上的目录结构,反之亦然。

详情请参考How do I use folders in an S3 bucket?