はじめに
教材でAWS演習をこなして学習している中、
S3のバケット名を曖昧に決めてしまったことが原因で
Route53でドメイン名を取得できないことに気づく。
「じゃあ、S3を作り直すか…」と思っていたが、
AWS CLIを使ってバケット名を変更する方法がある
と情報をゲット。
(学習教材にもその場合はググって調べたら何とかなると書いてあった。)
そこで、学習がてらネットで情報収集して
解決できたので対応記録としてまとめる。
OS:MAC
教材
・ゼロからわかる Amazon Web Services超入門
そもそもAWS CLIって?
AWSは、マネジメントコンソールからGUI(ボタン操作など)で
EC2やS3などのインスタンス作成したり、VPCのネットワークを構成したりなど
インフラ構成ができる。
それに対して、CLIはターミナル内で
コマンドを入力して、各種インフラ構成をすることと
ざっくり認識しておく。
おそらく、細かく言うとできることも異なると思う…
目的
目的はS3のバケット名を変更すること
恥ずかしいことに、私の場合はS3を下記のようなバケット名にしてしまっていた。
■バケット名
www.〇〇〇〇〇.▽▽▽▽▽.com
Route53で「〇〇〇〇〇.▽▽▽▽▽.com」ドメイン取得しようとしたら
登録できないと言われてしまった。
一方で.▽▽▽▽▽の部分を削除すると取得できるみたいだった。
演習だからといってテキトーに決めすぎた自分が悪い。笑
ということで、AWS CLIで
に修正しよう!という目論見。
早速CLI使ってみる
ネットで、S3バケット名の変更
に関連する
AWS CLIコマンドを発見したので、試してみる。
% aws s3 mb s3://www.〇〇〇〇〇.com
すると、下記エラーが発生。
AWS fatal error: Unable to locate credentials
aws公式ページが下記エラーの原因を示してくれていたので、
自分がAWS CLIの基本設定を行えていない
と気づけた。
では、AWS CLIの基本設定
aws公式ページより基本設定の手順に従って基本設定を行う。
この時、設定するためのaws configureコマンドをする前に、
1.マネジメントコンソールでIAMを開き、指定ユーザーのアクセスキーを作成
2.使用するリージョンを確認
3.出力形式の種類を理解
を用意しておく。
※上記のうち、1.は特に理解して進める。
(手順はaws同ページに参照されている。)
% aws configure
AWS Access Key ID [None]: アクセスキーID
AWS Secret Access Key [None]: 秘密鍵のコード
Default region name [None]: リージョン(ap-northeast-1など)
Default output format [None]: json
上記のように、aws configureコマンドで一つ一つ入力して
4つの基本設定を完了させる。
これで、AWS CLIコマンドがターミナル上で使用できる。
S3のバケット名を変更
前置きとして、S3には作成後にバケット名を変更する機能はない。
そのため、以下手順で進めていく。
1、新しくS3のインスタンスを作成
2、既存のS3内にあるデータを、新しいS3にコピー
3、既存のS3を削除
※参考URL
コマンドは以下の通り。
% aws s3 mb s3://新規S3のバケット名
% aws s3 sync s3://既存S3のバケット名 s3://新規S3のバケット名
% aws s3 rb --force s3://既存S3のバケット名
最後に本当にS3を作成できたか確認
% aws s3 ls
上記まで完了すれば、マネジメントコンソール上でも反映されていることが確認できる。
終わりに
AWS CLIコマンドの使用は、現時点で必須ではなかったが
失敗を機会に出会えて良かった。
恐らく、インフラのコード化する際にも
お世話になるのではないかな?と想像している。
最後までお読み頂き、ありがとうございました。