よく使っているS3、この前無知が故の当然の結果なのですが、EC2からS3にファイル転送する際に別々のRegion(以下 リージョン)を使っていたせいで無駄に課金されてしまいました。orz
EC2がTokyoリージョン、S3が米国東部(バージニア北部)で作ってしまった結果の転送量課金のスクショです。
残念だ・・・・残念すぎるぞ!自分!!orz
EC2は東京リージョンで作っていたのはわかっていたので、S3がどこで作ったのか?記憶がなく、そもそもS3のリージョンってどこで確認するんだ?っていうのが気になってS3のリージョンを調べる方法を調べてみました。
確認方法はGUIとawscliどちらでも可能でした。
CUI(awscli)でS3のリージョン確認
ちょっと前の記事でawscliをインストールしたので、それを使います。
get-bucket-location
というサブコマンドを使うそうです。--bucket
の後ろに、作成してあるS3のバケット名を指定。
[yatta47@localhost ~]$ aws s3api get-bucket-location --bucket yatta47-tokyo-region { "LocationConstraint": "ap-northeast-1" }
JSONが返ってきて、LocationConstraintでリージョンが返されます。ap-northeast-1ってことは、Tokyoリージョンですね。よしよし。
似たような感じでUS Standardリージョンに作ったバケットも調べてみました。
[yatta47@localhost ~]$ aws s3api get-bucket-location --bucket yatta47-us { "LocationConstraint": null }
うんうん。us-east-1って表示・・・・・されてない!!!
なんでnullなんじゃ!!
って思ったら、こちらのサイトを確認するとUS Standardの場合のLocation Constraintは(none required)ってなっているので、どうやらnull表示でいいようです。
そうなんだーびっくりした。
ってことで無事にコマンドで取得できました。
GUI(AWS Console)で確認
GUIで確認する場合はManagementConsoleからS3を開いて、調べたいバケットのプロパティを確認します。以下の場合はTokyoですね。
こっちはリージョンが「US Standard」になっています。
ちなみにリージョンのTokyoは「ap-northeast-1」、US Standardは「us-east-1」ですね。
エンドポイントのURLからでも判別できるそうです。それについては AWS service endpoints - AWS General Reference で一覧表にまとめられています。
まとめ
バケットを作る時にリージョン指定していたのなんかすっかり忘れていました。
EC2みたいにAMI作ってリージョン変更みたいなことできないのかなーと考えはしたのですが、今回はEC2がおいてあるリージョンと同じところにS3バケットを作って、昔のバケットの内容を新バケットにコピーして対応しました。
その辺を何も考えずに作ると自分のようになってしまうので、皆さんバケットを作る時は「このリージョンに作って大丈夫か?」というのを確認してから作ったほうがよいかと思いますw
そうしないと謎の転送量の課金がww
確認方法はやっぱりCLIのほうが好きですね。aws s3 ls
とかでバケット一覧が取れるし。
もっとCLI使いこなして脱GUIを目指していこうと思います。
今日はここまで。それではまたー。
参考にしたサイト
ありがとうございます。