我对s3cmd很满意,但有一个问题:如何将所有文件从一个S3存储桶复制到另一个?它甚至可能吗?
编辑:我发现了一种使用Python与boto在存储桶之间复制文件的方法:
from boto.s3.connection import S3Connection
def copyBucket(srcBucketName, dstBucketName, maxKeys = 100):
conn = S3Connection(awsAccessKey, awsSecretKey)
srcBucket = conn.get_bucket(srcBucketName);
dstBucket = conn.get_bucket(dstBucketName);
resultMarker = ''
while True:
keys = srcBucket.get_all_keys(max_keys = maxKeys, marker = resultMarker)
for k in keys:
print 'Copying ' + k.key + ' from ' + srcBucketName + ' to ' + dstBucketName
t0 = time.clock()
dstBucket.copy_key(k.key, srcBucketName, k.key)
print time.clock() - t0, ' seconds'
if len(keys) < maxKeys:
print 'Done'
break
resultMarker = keys[maxKeys - 1].key …Run Code Online (Sandbox Code Playgroud) 我想将文件从一个s3存储桶复制到另一个存储桶.我收到以下错误:
s3.meta.client.copy(source,dest)
TypeError:copy()至少需要4个参数(给定3个)
我无法通过阅读文档找到解决方案.这是我的代码:
#!/usr/bin/env python
import boto3
s3 = boto3.resource('s3')
source= { 'Bucket' : 'bucketname1','Key':'objectname'}
dest ={ 'Bucket' : 'Bucketname2','Key':'backupfile'}
s3.meta.client.copy(source,dest)
Run Code Online (Sandbox Code Playgroud) 我在 Node.js 中编写了一个 AWS lambda 函数来调整图像大小,并在图像上传时触发它。我的存储桶中已经存在超过 1,000,000 张图像。
我想在该图像上运行这个 lambda 函数,但到目前为止还没有找到任何东西。
如何在 S3 存储桶的现有映像上运行 AWS lamdba 函数?
注意:-我知道这个问题已经在堆栈溢出上提出,但问题是到目前为止还没有给出解决方案
我有 3 个桶1.commonfolder 2.jsonfolder 3.csvfolder。
通用文件夹将同时包含 json 和 csv 文件
需要将所有 csv 文件复制到 csvfolder
需要将所有json文件复制到json文件夹
代码如下,用于从之后commonfolder如何复制中获取所有文件
import boto3
s3 = boto3.client('s3')
def lambda_handler(event, context):
#List all the bucket names
response = s3.list_buckets()
for bucket in response['Buckets']:
print (bucket)
print(f'{bucket["Name"]}')
#Get the files of particular bucket
if bucket["Name"] == 'tests3json':
resp = s3.list_objects_v2(Bucket='commonfolder')
for obj in resp['Contents']:
files = obj['Key']
print(files)
if(filename.split('.')[1].lower()=='json'):
copyjson(bucket,filename)
#copyjson(jsonfolder,filename)
elif(filename.split('.')[1].lower()=='csv'):
copycsv(bucket, filename)
#copycsv(csvfolder,filename)
Run Code Online (Sandbox Code Playgroud)
需要创建一个新函数 copyjson,copycsv 来完成这项工作
需要根据文件扩展名从 common-bucket 复制到 csv-bucket 或 json-bucket