Отдельная лямбда-функция будет запускаться для каждого создаваемого объекта.
Следовательно, лямбда-функция должна перемещать только объект, который запустил функцию.
Вот код, который будет переместить объект:
import boto3
import urllib
TARGET_BUCKET = 'dev'
TARGET_PATH = 'source_metadata/'
def lambda_handler(event, context):
# Get incoming bucket and key
source_bucket = event['Records'][0]['s3']['bucket']['name']
source_key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'])
# Extract filename without path
filename = ('/' + source_key).rsplit('/', 1)[1]
# Copy object to different bucket
s3_resource = boto3.resource('s3')
copy_source = {
'Bucket': source_bucket,
'Key': source_key
}
s3_resource.Bucket(TARGET_BUCKET).Object(TARGET_PATH + filename).copy(copy_source)