S3 не имеет никакой концепции папок / каталогов. Это следует за плоской структурой. Например, кажется, что в пользовательском интерфейсе вы видите 2 файла внутри test_folder с именами file1.txt и file2.txt, но на самом деле два файла будут иметь ключи как «test_folder / file1.txt» и «test_folder / file2.txt». Каждый файл хранится в соответствии с этим соглашением об именах.
Вы можете использовать приведенный ниже фрагмент кода, чтобы скопировать каждый ключ в какой-либо другой сегмент.
import boto3
s3_client = boto3.client('s3')
resp = s3_client.list_objects_v2(Bucket='mybucket')
keys = []
for obj in resp['Contents']:
keys.append(obj['Key'])
s3_resource = boto3.resource('s3')
for key in keys:
copy_source = {
'Bucket': 'mybucket',
'Key': key
}
bucket = s3_resource.Bucket('otherbucket')
bucket.copy(copy_source, 'otherkey')
Если в исходном блоке содержится много ключей, и это это одноразовое действие, тогда я предлагаю вам проверить эту ссылку .
Если это необходимо сделать для каждого события вставки в вашем сегменте, и вам необходимо скопировать его в другой сегмент, Вы можете оформить заказ этот подход .