在AWS S3上将数据从一个文件夹移动/复制到另一个文件夹

2024-05-13 22:14:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找在AWS S3 bucket上将数据从一个文件夹移动/复制到另一个文件夹的所有方法。


方法1:通过AWS CLI(最简单)

在您的实例上下载并安装awscli,我使用这里的windows(64-bit link)并运行“asw configure”来填充您的配置,只需在cmd上运行这个命令

aws s3 cp s3://from-source/ s3://to-destination/ --recursive

这里的cp用于复制和递归以复制所有文件


方法2:使用python通过AWS CLI

import os
import awscli
if os.environ.get('LC_CTYPE', '') == 'UTF-8':
    os.environ['LC_CTYPE'] = 'en_US.UTF-8'

from awscli.clidriver import create_clidriver
driver = create_clidriver()
driver.main('s3 mv s3://staging/AwsTesting/research/    s3://staging/AwsTesting/research_archive/ --recursive'.split())

即使这样对我也很管用


方法3:使用python通过Boto

import boto3
s3 = boto3.resource('s3')
copy_source = {
    'Bucket': 's3://staging/',
    'Key': 'AwsTesting/research/'
}
s3.meta.client.copy(copy_source, ''s3://staging/'', 'AwsTesting/research_archive/')

根据我的理解,我假设bucket的“key”只是folder前缀,所以我在这里提到了folder路径

错误:

Invalid bucket name "s3://staging": Bucket name must match the regex "^[a-zA-Z0-9.-_]{1,255}$"

甚至我把它改成了简单的bucket名称“staging”,但没有成功。


如何通过boto了解bucket连接和这个密钥的概念?


Tags: 方法import文件夹awssourceclis3bucket
1条回答
网友
1楼 · 发布于 2024-05-13 22:14:12
import boto3
s3 = boto3.resource('s3')
copy_source = {
    'Bucket': 'staging',
    'Key': 'AwsTesting/research/filename.csv'
}
s3.meta.client.copy(copy_source, 'staging', 'AwsTesting/')

相关问题 更多 >