2017-06-06 14 views
0

AWS S3バケット上のあるフォルダから別のフォルダにデータを移動/コピーするためのすべてのメソッドを探しています。AWS S3のあるフォルダから別のフォルダにデータを移動/コピーする


方法1:(ほとんどの簡単な)を介してAWS CLI

ダウンロードして、私はここの窓(64-bit link)を使用していウルインスタンス上awscliインストールし、設定を埋めるために "ASWののconfigure" を実行そしてちょうどすべてのファイルをコピーするためにコピーし、再帰のためにここでcmdを

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

CPにこの単一のコマンドを実行します


方法2:経由AWS CLIのpython

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私のために完璧に


を働いた:経由後のBotoは、Python

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/') 

を使用して私の理解で私は仮定しているEDバケツのための「キーは」私はフォルダのパスを記載しているように、単にフォルダ接頭辞で、ここで

エラー:

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

はさえ、私は「ステージング」が、ノー成功のような単純なバケット名にそれを変更しました。


botoとこのキーの概念を使用してバケットの接続を理解するにはどうすればよいですか?

+0

ドキュメントでは、 's3.meta.client.copy'は単一のオブジェクト以外のものをコピーするとは考えられません。 *「あるS3の場所から別の場所にオブジェクトをコピーする。これは管理された転送で、必要に応じて複数のスレッドでマルチパートコピーを実行する」*「マルチパートコピー」は複数のオブジェクトを意味するものではありません。つまり、1つのオブジェクトが複数のHTTPトランザクションを使用してコピーされ、それぞれ異なるバイト範囲を処理します。 –

答えて

0
import boto3 
s3 = boto3.resource('s3') 
copy_source = { 
    'Bucket': 'staging', 
    'Key': 'AwsTesting/research/filename.csv' 
} 
s3.meta.client.copy(copy_source, 'staging', 'AwsTesting/') 
関連する問題