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