2017-01-06 75 views
53

移行のすべての困難な作業の後で、CNAME(例:media.abc.com)を使用してコンテンツを配信する必要がある場合は、バケット名はmedia.abc.com/S3/amazon.comから始まり、完全に機能するようにする必要があります。AWS S3バケット名の変更方法

S3はコンソールからの直接の名前変更を許可していないことに気付くだけです。

これを回避する方法はありますか?

答えて

29

私は正しい名前で新しいバケットを作成し、古いバケットから新しいバケットにすべてのオブジェクトをコピーすることだと思います。 Aws CLIを使用して実行できます。

+1

@navjotの上記の解決方法にはどのような料金がかかりますか? – pavitran

+0

@pavitranいいえ、まだ道のりは – Tashows

+3

@Tashows pavitranはchaRgesについて質問していました。私が知っている限り、実際にバケツアイテムをコピーするための料金があります、私は各アイテムの1GETと1PUT操作コストと考えています。 – guival

101

ソリューション

aws s3 mb s3://[new-bucket] 
aws s3 sync s3://[old-bucket] s3://[new-bucket] 
aws s3 rb --force s3://[old-bucket] 

説明

技術的にはS3にはフォルダは私たちがバケツ内のすべてのファイルを処理する必要がないがあるので、S3のためのリネームバケット機能はありません。

上記のコードは、1.新しいバケットを作成し、2.ファイルをコピーし、3.古いバケットを削除します。それでおしまい。

あなたのバケットにたくさんのファイルがあり、コストが気になる場合は、次の記事をお読みください。バックグラウンドでは、バケット内のすべてのファイルが最初にコピーされ、次に削除されます。あなたが数千のファイルを持っている場合、それはわずかな費用がかかります。それ以外の場合はthis answerにチェックしてください。

我々が作成し、古いバケツを移入し、新しいものにファイルを同期次の例では。コマンドの出力を調べて、AWSの動作を確認します。

> # bucket suffix so we keep it unique 
> suffix="ieXiy2" # used `pwgen -1 -6` to get this 
> 
> # populate old bucket 
> echo "asdf" > asdf.txt 
> echo "yxcv" > yxcv.txt 
> aws s3 mb s3://old-bucket-$suffix 
make_bucket: old-bucket-ieXiy2 
> aws s3 cp asdf.txt s3://old-bucket-$suffix/asdf.txt 
upload: ./asdf.txt to s3://old-bucket-ieXiy2/asdf.txt 
> aws s3 cp yxcv.txt s3://old-bucket-$suffix/yxcv.txt 
upload: ./yxcv.txt to s3://old-bucket-ieXiy2/yxcv.txt 
> 
> # "rename" to new bucket 
> aws s3 mb s3://new-bucket-$suffix 
make_bucket: new-bucket-ieXiy2 
> aws s3 sync s3://old-bucket-$suffix s3://new-bucket-$suffix 
copy: s3://old-bucket-ieXiy2/yxcv.txt to s3://new-bucket-ieXiy2/yxcv.txt 
copy: s3://old-bucket-ieXiy2/asdf.txt to s3://new-bucket-ieXiy2/asdf.txt 
> aws s3 rb --force s3://old-bucket-$suffix 
delete: s3://old-bucket-ieXiy2/asdf.txt 
delete: s3://old-bucket-ieXiy2/yxcv.txt 
remove_bucket: old-bucket-ieXiy2 
+4

これは受け入れられた回答でなければなりません –

+6

この回答は受け入れられた回答と同じですが、この投稿はそれを行う方法のステップ例で非常に有益なステップを提供します。 (しかし、例を短縮する必要があります。古いバケットの例を示し、接尾辞変数を使用する必要はありません。)この回答の説明部分は私を満足させるものではありません。それはS3のフォルダの欠如は、この厄介な手順が必要な理由です。元の質問にはフォルダは言及されていないので、S3バケットの名前を変更できないことがどのように説明されているのか分かりません。 –

+1

この方法を試してみてください...うまくいくように見えましたが、奇妙な理由でアイテム(画像)を見ることができません。私はs3のダッシュボード上のアイテムをブラウザー経由でナビゲートすることができます...しかし、それらをURLで見るかダウンロードすることはできません。なぜどんなアイデア?許可は同じであるようです。いくつかの特別な権限がありますか? – bmiskie

関連する問題