55import boto3
66from smart_open import open
77
8+ EXPECTED_BUCKET_OWNER_ACCOUNT = os .getenv ("ACCOUNT_ID" )
89DESTINATION_BUCKET_NAME = os .getenv ("DESTINATION_BUCKET_NAME" )
910
1011logging .basicConfig (level = logging .INFO )
@@ -80,9 +81,15 @@ def move_file(source_bucket: str, source_key: str, destination_bucket: str, dest
8081 s3_client .copy_object (
8182 CopySource = {"Bucket" : source_bucket , "Key" : source_key },
8283 Bucket = destination_bucket ,
83- Key = destination_key
84+ Key = destination_key ,
85+ ExpectedBucketOwner = EXPECTED_BUCKET_OWNER_ACCOUNT ,
86+ ExpectedSourceBucketOwner = EXPECTED_BUCKET_OWNER_ACCOUNT
87+ )
88+ s3_client .delete_object (
89+ Bucket = source_bucket ,
90+ Key = source_key ,
91+ ExpectedBucketOwner = EXPECTED_BUCKET_OWNER_ACCOUNT
8492 )
85- s3_client .delete_object (Bucket = source_bucket , Key = source_key )
8693
8794
8895def transfer_multipart_content (bucket_name : str , file_key : str , boundary : bytes , filename : str ) -> None :
@@ -122,7 +129,11 @@ def process_record(record: dict) -> None:
122129 file_key = record ["s3" ]["object" ]["key" ]
123130 logger .info (f"Processing { file_key } " )
124131
125- response = s3_client .head_object (Bucket = bucket_name , Key = file_key )
132+ response = s3_client .head_object (
133+ Bucket = bucket_name ,
134+ Key = file_key ,
135+ ExpectedBucketOwner = EXPECTED_BUCKET_OWNER_ACCOUNT
136+ )
126137 content_type = response ['ContentType' ]
127138 media_type , content_type_params = parse_header_value (content_type )
128139 filename = response ["Metadata" ].get ("mex-filename" ) or file_key
@@ -136,7 +147,9 @@ def process_record(record: dict) -> None:
136147 s3_client .copy_object (
137148 Bucket = DESTINATION_BUCKET_NAME ,
138149 CopySource = {"Bucket" : bucket_name , "Key" : file_key },
139- Key = filename
150+ Key = filename ,
151+ ExpectedBucketOwner = EXPECTED_BUCKET_OWNER_ACCOUNT ,
152+ ExpectedSourceBucketOwner = EXPECTED_BUCKET_OWNER_ACCOUNT
140153 )
141154
142155 logger .info (f"Transfer complete for { file_key } " )
0 commit comments