amazon-s3-icon

AWS

S3バケット内のファイル名を変更・別のS3バケットに移動・コピーする方法

2024年5月12日

S3バケットを作成しファイルを配置後に別のバケットにファイルを移動したい・そのファイル名を変更したいと思ったことがある人もいるかと思う。

自分がS3バケット内のファイル名を変更したい・ファイルを移動・コピーしたいと思った際に調査したことをまとめる。

「サボチン」です。AWSパートナー企業でエンジニアとして働いています。
お問い合わせ自己紹介

ファイルを移動

コンソール、CLI共にMoveオペレーションを使用している。

移動元バケット:s3://source-thaimai
移動先バケット:s3://dest-thaimai

コンソール

移動したいファイルにチェックを入れ、「アクション > 移動」をクリック。

移動先バケットを選択の上、移動をクリック。

移動されたファイルは移動元S3バケットには残らないことが確認できる。その他の注意点は下記。

オブジェクトロック設定がされている場合、移動先ではその設定が保持されない。
暗号化キー (SSE-C) で暗号化されたオブジェクトは、CLI、SDK、S3 REST APIを使用する必要がある。

CLI

aws s3 mv <移動元S3 URI> <移動先S3 URI> で移動可能。

正常にファイルの移動が成功すると下記表示となる。

$ aws s3 mv s3://source-thaimai/index.html s3://dest-thaimai/index.html
move: s3://source-thaimai/index.html to s3://dest-thaimai/index.html

この場合も同じく移動元S3バケットにファイルは残らない。

ファイルをコピー

コンソール、CLI共にCopyオペレーションを使用している。

コピー元バケット:s3://source-thaimai
コピー先バケット:s3://dest-thaimai

コンソール

コピーしたいファイルにチェックを入れ、「アクション > コピーする」をクリック。

コピー先バケットを選択の上、コピーするをクリック。

この場合はコピー元、コピー先どちらもファイルが存在する状態となる。注意点は下記。

AWS KMS キーで暗号化されたオブジェクトを S3 コンソールを使用して別のリージョンにコピーすることはできない。
AWS KMS キーを使用して暗号化されたオブジェクトを別のリージョンにコピーするには、AWS CLI、AWS SDK、または Amazon S3 REST API を使用する必要がある。

CLI

aws s3 cp <コピー元S3 URI> <コピー先S3 URI> でコピー可能。

正常にファイルのコピーが成功すると下記表示となる。

$ aws s3 cp s3://source-thaimai/index.html s3://dest-thaimai/index.html
copy: s3://source-thaimai/index.html to s3://dest-thaimai/index.html

ファイル名を変更

コンソール

変更したいファイルにチェックを入れ、「アクション > オブジェクトの名前変更」をクリック。

新しい名前を入力し、変更の保存をクリック。

CLI

mv, cp どちらを使用しても名前を変更することが可能。

mvコマンド

Linuxのmvコマンドと同様のイメージ

$ aws s3 mv s3://source-thaimai/index.html s3://source-thaimai/index2.html
move: s3://source-thaimai/index.html to s3://source-thaimai/index2.html

$ aws s3 ls s3://source-thaimai/
2024-05-12 08:38:42          6 index2.html

cpコマンド

お分かりかと思うが、元のファイルを保持したまま希望したファイル名のオブジェクトを作成可能

$ aws s3 cp s3://source-thaimai/index.html s3://source-thaimai/index2.html                                                                                    
copy: s3://source-thaimai/index.html to s3://source-thaimai/index2.html

$ aws s3 ls s3://source-thaimai/
2024-05-12 08:33:54          6 index.html
2024-05-12 08:36:04          6 index2.html

その他

上記で紹介した s3://source-thaimai s3://dest-thaimaiについては本記事公開時点で削除済みとなっている。

悪意のある操作などは無効になっているため念のため記載しておく。心配してくれる方がいるかもしれない。。

少し前に「S3バケットが空なのに高額な料金が請求された」という記事を踏まえて上記対応としている。

気になる人は調べてみてほしい。不要なリソースは削除するべきだと痛感させられる。

参考

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/copy-object.html?icmpid=docs_amazons3_console#CopyingObjectsExamples

-AWS
-