2017-10-27 7 views
0

状況: データロードサービスを使用して、s3のディレクトリから約1TBのjsonファイルを取り込みます。これらのファイルをバッチでingestionディレクトリにロードして、ローディングサービスが圧倒されないようにします。私たちは、boto3クライアントのコピーメソッドを使用するローカルのpythonスクリプトを使ってそのバッチ処理を行っています。s3の中で鍵をコピーするときにboto3はGETしてからPUTを行いますか?

import boto3 
s3 = boto3.resource('s3') 
copy_source = { 
    'Bucket': 'mybucket', 
    'Key': 'mykey' 
} 
s3.meta.client.copy(copy_source, 'otherbucket', 'otherkey') 

boto3's copy methodを使用して、クライアントがキーに関連付けられたファイルをダウンロードして、新しいotherbucket/otherkey場所にPUTをやっていることを考える何らかの理由がある:ここではboto3のドキュメントからのサンプルがですか?

s3での操作には料金がかかりますので、私は基本的にそれらの料金を請求させないようにしています。

答えて

4

これはPUT+Copyです。ソースバケットとオブジェクトを指定して、ターゲットバケットに送信される単一のリクエストです。

ダウンロード/アップロードではありませんが、ターゲットバケットに対するPUTリクエストと、ターゲットバケットがコンテンツを取得するためにソースバケットに送信するというGETリクエストについては依然として課金されます。

データはS3内で内部的に転送されるため、インターネット帯域幅は使用されませんが、送信元バケットとターゲットバケットが異なる領域にある場合、送信元バケットには領域間帯域幅が課金されます。これは、「インターネットに接続する」帯域幅料金よりも低い料金で課金されます。

参照:Copying Objects in a Single Operation

関連する問題