相关疑难解决方法(0)

是否可以使用s3cmd将所有文件从一个S3存储桶复制到另一个存储桶?

我对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)

copy amazon-s3 amazon-web-services

75
推荐指数
5
解决办法
6万
查看次数

如何使用python boto3将s3对象从一个桶复制到另一个桶

我想将文件从一个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)

python amazon-s3 amazon-web-services boto3

9
推荐指数
3
解决办法
3万
查看次数

在现有 S3 映像上运行 AWS lambda 函数

我在 Node.js 中编写了一个 AWS lambda 函数来调整图像大小,并在图像上传时触发它。我的存储桶中已经存在超过 1,000,000 张图像。

我想在该图像上运行这个 lambda 函数,但到目前为止还没有找到任何东西。

如何在 S3 存储桶的现有映像上运行 AWS lamdba 函数?

注意:-我知道这个问题已经在堆栈溢出上提出,但问题是到目前为止还没有给出解决方案

amazon-s3 amazon-web-services aws-lambda

5
推荐指数
1
解决办法
2416
查看次数

如何在某些后缀的s3中从一个桶复制到另一个桶

我有 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

python amazon-s3 amazon-web-services aws-lambda

5
推荐指数
1
解决办法
194
查看次数