【发布时间】:2019-10-19 03:03:40
【问题描述】:
我有一个文件夹,其中包含我从服务器获取并分配给变量的一堆子文件夹和文件。我想使用 boto3 将此数据上传到具有相同文件夹结构的 S3 存储桶。 文件夹结构:
└── main_folder
├── folder
│ ├── folder
│ │ ├── folder
│ │ │ └── a.json
│ │ ├── folder
│ │ │ ├── folder
│ │ │ │ └── b.json
│ │ │ ├── folder
│ │ │ │ └── c.json
│ │ │ └── folder
│ │ │ └── d.json
│ │ └── folder
│ │ └── e.json
│ ├── folder
│ │ └── f.json
│ └── folder
│ └── i.json
try:
for dirname in utils['BucketData']:
cmd = ['aws', 's3', 'sync', dirname, 's3://{}/{}/'.format(input_bucket_name, folder_name)]
sp = subprocess.run(cmd)
except Exception as e:
logger.debug('Command error: {}'.format(e))
变量详情:
utils['BucketData'] = It is data(mentioned is folder structure) which fetched from server. It is in dict form
dirname = fetching directories and copying to s3 location
input_bucket_name = Bucket name where my folder is located.
folder_name = where I want copy the data.
当我跑步时,我得到了
The user-provided path 'directory name' does not exist.
如何复制分配给 S3 中变量的具有相同文件夹结构的确切数据? 这里有什么问题?
【问题讨论】:
-
我猜你的问题是'目录名'不是你的子进程当前工作目录中的文件夹(大概是你的主文件夹)。您可能应该使用绝对路径名。
-
你能用
aws s3 sync localdir "s3://yourbucket/dirname"吗?也许您需要添加--region=yourplace。 -
@walter-a,同步命令对我有用...谢谢!
标签: python-3.x amazon-web-services amazon-s3 boto3 aws-cli