Hier ist die Situation: Wir verwenden einen Datenladedienst, um etwa 1 TB von JSON-Dateien aus einem Verzeichnis in s3 aufzunehmen. Wir möchten diese Dateien stapelweise in das Aufnahmeverzeichnis laden, damit unser Ladedienst nicht überlastet wird. Wir machen dieses Batching mit einem lokalen Python-Skript, das die Boto3-Client-Kopiermethode verwendet. Hier ist ein Beispiel von boto3 der docs:Tut boto3 ein GET und dann ein PUT, wenn ein Schlüssel in s3 kopiert wird?
import boto3
s3 = boto3.resource('s3')
copy_source = {
'Bucket': 'mybucket',
'Key': 'mykey'
}
s3.meta.client.copy(copy_source, 'otherbucket', 'otherkey')
Wenn boto3's copy method verwendet wird, gibt es keinen Grund zu glauben, dass der Client die Datei mit dem Schlüssel zugeordnet ist, das Herunterladen und dann eine PUT in die neue otherbucket/otherkey
Lage tun?
Ich weiß, dass es eine Gebühr für alle Operationen in s3 gibt, also versuche ich im Grunde sicherzustellen, dass wir dafür keine Kosten bekommen und dass wir unsere eigene Bandbreite nicht so verschwenden.