どうもなまこ(@namakopc)です。
ブログをAWSで構築し、一年が経ちました。
AWSで構築した理由としては勉強のためと無料期間が使えたからというのが理由なのですが、その無料期間が終わってどれくらいかかるか1ヶ月ほど様子見してみました。
結果、AWSでブログを運営するには費用的にとてもマゾいことが分かりましたので今回はお引っ越しの検討です。
よろしければ参考にしてください。

AWSの無料期間終了後に発生した費用
主に利用していたAWSのサービスは以下の通りです。
- EC2
- RDS
- Route53
- CloudFront
- ELB
- S3
具体的な構成は以下の写真の通りです。EC2、RDS、Route53、S3がブログの主構成となっており、CloudFront用とSSL接続のためにELBを使用しています。

そして無料期間終了後の請求書が以下の通りです。

上記の構成だと$53.4も徴収されていました。ちなみに無料期間中は$0.70〜0.77の請求でした。無料期間が終わった瞬間この金額はエグい。。。
いくらなんでも個人ブログでこの支出は厳しいので引越しを検討しました。
現在ブログを2つ経営していて片方はXserverを利用しているので、Xserverに変更しようとも検討しましたが、せっかくなので当ブログの趣旨に合うようLightsailへの引越しを検討しました。
以下の手順はブログを引越しするための備忘録になります。
引越し前の準備
当ブログはWordPressを使用していますが、引越し用に便利なプラグインが存在していました。今回使用したのは以下のプラグインになります。
- WP Downgrade | Specific Core Version
- All-in-One WP Migration
引越し前は以下の手順で実施しました。
WordPressのバージョンをダウングレードする
現在使用していたWordPressのバージョンが5.9.1であり、移行しようとしているLightsailのWordPressのバージョンが5.8.3であったため、念の為WordPressのバージョンをダウングレードしました。
現行のWordPressのデータをエクスポートする

All-in-One WP Migrationというプラグインを利用すれば、WordPressの引越しを簡単にすることができます。
プラグインからエクスポートを選択して、今回はファイルを選択しました。
今回エクスポートしたデータはそれほど大きくないので1回でダウンロードできました。
サイズが大きくなると分割でダウンロードする必要がありそうです。

引越し先の準備
引越し先のインスタンスを作成する
引越し先のインスタンスを作成します。
今回はEC2ではなく、小規模サービス用のLightsailを利用しました。
LightsailであればOSとアプリケーションがセットで導入できるためスムーズに開始することができます。
LightsailでWordPressを立ち上げた記事がありますのでよかったら参考にしてください。

WordPressのデータをインポートする
WordPressのデータをインポートしますが、ファイルのアップロードが80MBと制限があります。
ファイルアップロードの方法は公式のブログに記載ありますが、今回は無料で行うため、php.iniのファイルの内容を変更しました。
/opt/bitnami/php/lib
にあるphp.iniのファイルを変更し、アップロードの最大容量を変更しておきます。
upload_max_filesize = 256M
post_max_size = 256M
php.iniの内容を変更したらシステムを再起動します。
$ sudo /opt/bitnami/ctlscript.sh restart
そうすることでファイルのアップロードサイズ上限を引き上げることができました。
記事などはインポートできましたが、本ブログでは画像をS3に保管しているため、画像は見えなくなりました。
そのためS3にある画像を別途ダウンロードしました。
S3に保管している画像をローカルに保存する
S3に保管している画像をダウンロードしようとしましたが、AWSのWebページではダウンロードは一括でできないしようとなっていました。
画像を一枚一枚ダウンロードするのは骨が折れるので今回はCyberduckというアプリを使用しました。
Cyberduckであれば無料でS3のファイルをまとめてダウンロード可能です(FileZillaの場合は有料版が必要)。
Cyberduckを開きましたら、新規接続をクリックし、接続先のドライブにAmazon S3を選択します。
選択したらサーバ、URLは自動入力されます。
アクセスキーにはS3にアクセス権のある(AmazonS3FullAccess)IAMのアクセスキーとシークレットアクセスキーを入力します。
するとファイル名にS3のオブジェクトが追加されるます。
フォルダやファイルを選んで右クリックでダウンロード可能になります。

ローカルに保存した画像をLightsailのインスタンスに移動させていきます。自分の場合はFileZillaの方が使い慣れているのでFileZillaを使用しました。
wp-content/uploadsの中のフォルダに画像を移動させたら元の記事の画像が復活していました。
DNSゾーンを作成する
今回のブログの引越しではあまり関係ありませんが、LightsailではRoute53を使用せずにDNSゾーンを作成することができます。
Route53は月額でも$1もかかりませんが、せっかく無料なのでLightsailでDNSゾーンを作成してみました。
LightsailでのDNSゾーンの作成はこちらのドキュメントを参考にしました。
ネームサーバー書き換える必要があるため、ドメインの情報を変更します。自分の場合ドメインをお名前.comで取得しているため、そちらのネームサーバーの情報と一緒にさせます。

無料で常時SSL化
本ブログではAWS Certificate Managerを使用してSSL証明書を作成し、ロードバランサー用に使用していました。
ロードバランサーもお金がかかるのでブログが弱小なうちはロードバランサーを使用せずにSSL証明書を入手することにします。
Let’s Encryptを使用すれば無料でSSL証明書を入手することができます。
Certbot を使用して Let’s Encrypt 証明書をリクエストしLightsailに統合を試みました。
手法については以下のAWSの以下の公式ドキュメントを参考にしました。
チュートリアル: Amazon Lightsail の WordPress インスタンスで Let’s Encrypt の SSL 証明書を使用する
“Certified by Bitnami” インスタンスで使用されている Linux ディストリビューションは、2020 年 7 月に Ubuntu から Debian に変更されています。
今回新しくLightsailを立ち上げたばかりなのでディストリビューションはDebianになっていました。
そのためコマンドはDebianディストリビューションのコマンドを使用しました。
ディストリビューションがUbuntuの場合はUbuntuのコマンドを実行してください。
この方法ではSSL証明書を自動更新できないので90日間毎にコマンドを実行する必要があります。
面倒であれば今後は自動更新する方法を検討予定です。
まとめ
AWSの無料期間を利用して、一般的なEC2やRDSを使用してブログサイトを設計してきましたが、無料期間終了した途端ブログ経営には高すぎることが発覚しました。
今回Lightsailを使用して、コストを抑えることを検討しました。
同じような悩みを抱えている人の参考にされば幸いです。
