boto3でファイルを移動しようと思ったんですが、ファイル移動のAPIは提供されていないっぽいですね

なので

  1. 元ファイルを目的地にコピー
  2. 元ファイルを削除

というフローでファイル移動を実現しています

認証やclientの作成に関しては、wasabiでも対応できるようにちょっと面倒なことになってます。

s3だけならprofile読み込むだけで多分いけるし、コードもすくなるなると思う

import boto3


session = boto3.Session(profile_name='profile_name')
credentials = session.get_credentials()
aws_access_key_id = credentials.access_key
aws_secret_access_key = credentials.secret_key
s3 = session.client("s3", 
                    region_name="ap-northeast-1", 
                    endpoint_url="endpoint_url",
                    aws_access_key_id=aws_access_key_id,
                    aws_secret_access_key=aws_secret_access_key
)

s3.copy_object(Bucket='target_bucket_name', Key=key, 
               CopySource={'Bucket': source_bucket_name, 'Key': key}
            )
s3.delete_object(Bucket=source_bucket_name, Key=key)

こんな感じ