boto3でファイルを移動しようと思ったんですが、ファイル移動のAPIは提供されていないっぽいですね
なので
- 元ファイルを目的地にコピー
- 元ファイルを削除
というフローでファイル移動を実現しています
認証や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)
こんな感じ