S3バケットを作成しファイルを配置後に別のバケットにファイルを移動したい・そのファイル名を変更したいと思ったことがある人もいるかと思う。
自分がS3バケット内のファイル名を変更したい・ファイルを移動・コピーしたいと思った際に調査したことをまとめる。
ファイルを移動
コンソール、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バケットが空なのに高額な料金が請求された」という記事を踏まえて上記対応としている。
気になる人は調べてみてほしい。不要なリソースは削除するべきだと痛感させられる。