[アップデート] Lightsail で月額 $15 からマネージド・データベースが使えるようになりました!

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

先日の update で、AWS が提供する VPS サービス 「Amazon Lightsail」 で マネージド・データベース が利用可能になりました!これまで Lightsail でデータベースを使うには、サーバーインスタンスとして起動し、自分で MySQL などのデータベースをインストールする必要がありましたが、今回の update でマネージドに持っていけるということですね!

それでは、いつものように触りながら、どのような設定ができるのか見ていきましょう!

データベースの起動

AWS コンソールより、Lightsail の管理コンソールを開きます。Lightsail は久しぶりに触ったのですがメニューも日本語対応していたのですね![データベース]タブを開き、[データベースの作成]をクリックします。

リージョンの選択

Lightsail が使用できる以下のリージョンであれば、データベースも利用可能です。

  • 米国東部 (オハイオ) (us-east-2)
  • 米国西部 (オレゴン) (us-west-2)
  • 米国東部 (バージニア北部) (us-east-1)
  • カナダ中部 (モントリオール) (ca-central-1)
  • 欧州 (アイルランド) (eu-west-1)
  • 欧州 (ロンドン) (eu-west-2)
  • 欧州 (フランクフルト) (eu-central-1)
  • 欧州 (パリ) (eu-west-3)
  • アジアパシフィック (シンガポール) (ap-southeast-1)
  • アジアパシフィック (シドニー) (ap-southeast-2)
  • アジアパシフィック (東京) (ap-northeast-1)
  • アジアパシフィック (ムンバイ) (ap-south-1)
  • アジアパシフィック (ソウル) (ap-northeast-2)

今回は東京リージョンで作成します。

データベースの選択

現在、利用可能なデータベースエンジンは MySQL のみで、バージョンも 5.7.23 および 5.6.41 です。今後、他のエンジンも増えてくることを期待しましょう![ユーザ名] を指定しない場合は、dbmasteruser が指定されます。また、パスワードも [強力なパスワードを作成します。] にチェックを入れると、自動的に設定され、あとで管理コンソールから確認することが出来ます。今回はデフォルトのまま作成します。

[マスターデータベース名] は任意で指定が可能ですが、db がプレフィックスに付与されます。何も指定しない場合は、dbmaster が作成されます。今回はデフォルトのまま次へ進みます。

データベースプランの選択

データベースプランのラインナップは以下のとおりです。最小構成だと、月額 $15 で利用可能です。

[高可用性] をクリックすると、マルチAZ 構成となるので、単純に 2倍 の費用になります。

RDS と、どっちが安い?

ここで気になるのが、「RDS と、どっちがお安いの?」かな、と思います。単純に 1vCPU、1GBメモリ、40GB SSD だと、db.t2.micro がスペックとしては近いですね。AWS Calculator で試算すると、東京リージョンの MySQL インスタンスで月額 $24.56(2018/10/17 時点)ですので、起動料金の相当スペックだとお得感はあります。

ただし、最小構成という視点であれば、RDS の場合は 20GB が指定できます。この場合、月額 $21.80です。更に、RDS の場合、停止すると起動料金を節約することが出来ますが、Lightsail は停止しても課金されますので、「Lightsail が安い!」 とは一概に言い切れないため、最低料金に拘る場合は、利用ケースをよく検討してください。

データインポートの最適化

また、データインポートのサイズによって、推奨されるデータプランが公式ドキュメントに記載されているので、こちらも参考にしましょう。

  • マイクロプラン:10GBを超えるデータを転送すると、データのインポートが遅くなることがある
  • スモールプラン:20GBを超えるデータを転送すると、データのインポートが遅くなることがある
  • ミディアムプラン:85GBを超えるデータを転送すると、データのインポートが遅くなることがある
  • ラージプラン:150GBを超えるデータを転送すると、データのインポートが遅くなることがある

データベースの名前

さいごに、管理上の名前を指定します。今回はデフォルトの Database-Tokyo-1 のまま作成します。(RDS のインスタンス名のように、エンドポイント名に含まれるものではありません。)

データベースを起動するために指定する項目はコレくらいです。非常に簡単ですね。

データベースの確認

それでは、作成されたデータベースの管理メニューから確認してみます。[データベース]タブを開き、さきほど作成したデータベース名をクリックすると管理メニューが開きます。

接続

まず [接続] タブから見ていきます。[ユーザ名] はデフォルトの dbmasteruser です。[パスワード] は 表示 をクリックすると確認することができます。

エンドポイントおよび、接続ポートはこのように表示されています。デフォルトは [パブリックモード] が 無効 になっているため、同じリージョン内の Lightsail リソースからのみ接続可能です。

EC2 から接続することはできるのか?

Lightsail では、AWS アカウントのデフォルト VPC とピアリング接続することが可能です。「VPC ピアリングすれば、パブリックモードじゃなくても EC2 から使えるんでしょ?」 と思われるかもしれませんが、できません。メッセージのとおり、同じリージョン内の Lightsail からのみ接続可能です。

もし、EC2 から接続したい場合は、[パブリックモード] を 有効 にし、パブリックアクセスで接続する必要があります。公式の FAQ にも記載されているのでご確認ください。

How can I connect Lightsail database to EC2 instances running in my AWS account?

You can connect your Lightsail database to EC2 instances by connecting over the public internet. Note that connection to all AWS services will consume your database data transfer allowance, and data out over the public internet to AWS services in excess of your data transfer allowance will accrue overage charges. You cannot use VPC peering between Lightsail databases and EC2 instances.

次に [データのインポートモード] の状態が表示されています。MySQL Workbench などを使い、.sqlファイル からインポートする場合には、ここを 有効 に切り替えます。

試しに 有効 に切り替えると、このような画面になります。特に気をつけたいのは中段のコメントです。自動取得されたバックアップはすべて削除されますので、事前に手動バックアップを取得しておきましょう。

ログと履歴

次は [ログと履歴] タブを見てみます。以下のログが自動的に取得されています。

  • Audit log
  • Error log
  • General log
  • Slow query log

リンクをクリックすると、ログが表示されます。(エラーログの例)

[インスタンスの履歴] は、このような表示です。イベントが確認できるくらいで、あまり詳細な情報は記載されていません。

メトリクス

モニタリングのメトリクスは、以下の 6つ です。RDS に比べると、かなり少ないのでシンプルですね。

  • CPUUtilization
  • DatabaseConnections
  • DiskQueueDepth
  • FreeStorageSpace
  • NetworkReceiveThroughput
  • NetworkTransmitThroughput

ネットワーク

次に [ネットワーク] タブを見てみます。ここで表示されるのは、[パブリックモード] の状態と、切り替えのトグルです。先述のとおり、無効 の場合、接続可能なサーバは同じリージョン内の Lightsail インスタンスのみです。

スナップショットと復元

さいごに [スナップショットと復元] タブを見てみます。手動でスナップショットを取得する際は、スナップショット名を入力し [スナップショットの作成] をクリックするのみです。取得が完了すると、[最近のスナップショット] 一覧に表示されます。

その下の [緊急復元] がポイントインタイムのリストアメニューになります。自動的に 5分単位 で取得され、7日間分 を保持しています。

ざっと、データベースの管理メニューを見てみましたが、RDS と比べて、かなり設定項目は少なく、シンプルになっていますね。サクッと MySQL 環境を容易するには非常に楽です。

メンテナンスおよびバックアップウインドウは?

管理メニューに RDS のような、メンテナンスおよびバックアップウィンドウを設定するところもなければ、確認する場所もありませんでしたが Lightsail には存在しないのでしょうか?

いいえ、そんなことはありません。デフォルトでは、日本時間 22:00-06:00 の 8時間ブロックの内、無作為に割当てられた 30分 が指定されています。しかし、Web ブラウザでは操作が出来ず、CLI での操作が必要です。

古い awscli だと対応していなかったので、コマンドが無い場合は、最新に update してください。検証環境の awscli バージョンは下記のとおりです。

$ aws --version
aws-cli/1.16.35 Python/2.7.14 Linux/4.14.70-72.55.amzn2.x86_64 botocore/1.12.25

メンテナンスおよび、バックアップウィンドウを確認するには、以下のコマンドで表示することが出来ます。

 $ aws lightsail get-relational-databases
{
    "relationalDatabases": [
        {
            "parameterApplyStatus": "in-sync",
            "supportCode": "xxxxxxxxxx/ls-91a43d6b47c371692d03a657cbdf2174437269d9",
            "hardware": {
                "diskSizeInGb": 40,
                "cpuCount": 1,
                "ramSizeInGb": 1.0
            },
            "arn": "arn:aws:lightsail:ap-northeast-1:xxxxxxxxxx:RelationalDatabase/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
            "state": "available",
            "createdAt": 1539724638.526,
            "engineVersion": "5.7.23",
            "pendingModifiedValues": {},
            "engine": "mysql",
            "latestRestorableTime": 1539795300.0,
            "pendingMaintenanceActions": [],
            "preferredBackupWindow": "19:16-19:46",
            "backupRetentionEnabled": true,
            "relationalDatabaseBundleId": "micro_1_0",
            "preferredMaintenanceWindow": "tue:19:52-tue:20:22",
            "name": "Database-Tokyo-1",
            "publiclyAccessible": true,
            "masterUsername": "dbmasteruser",
            "relationalDatabaseBlueprintId": "mysql_5_7",
            "location": {
                "availabilityZone": "ap-northeast-1a",
                "regionName": "ap-northeast-1"
            },
            "resourceType": "RelationalDatabase",
            "masterDatabaseName": "dbmaster",
            "masterEndpoint": {
                "port": 3306,
                "address": "ls-91a43d6b47c371692d03a657cbdf2174437269d9.cvfmyoffirgr.ap-northeast-1.rds.amazonaws.com"
            }
        }
    ]
}

RDS 同様にメンテナンス中はデータベースが使用できなくなる可能性がありますので、必要に応じ、これらの値は変更を検討したほうが良いでしょう。変更方法は、こちらのガイドを参照ください。

接続してみる

それでは自分の PC から接続してみます。セキュリティグループもありませんので、[パブリックモード] を 有効化 に切り替えるのみです。

$ mysql -u dbmasteruser -p -P 3306 -h ls-91a43d6b47c371692d03a657cbdf2174437269d9.cvfmyoffirgr.ap-northeast-1.rds.amazonaws.com
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.7.23-log Source distribution

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| dbmaster           |
| innodb             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.02 sec)

さいごに

今回、Lightsail にマネージド・データベースが追加されたということで、どういった設定ができるのか確認してみました。VPS というだけあって、かなりシンプルですね。料金的にも月額 $15 から利用できるのは、ちょっとした検証環境にはお手頃です。

ただ、記事内で少し触れたとおり、Lightsail は停止状態でも課金が発生しますので、コスト重視というだけで Lightsail を選ぶかどうかは判断が分かれそうです。

また、EC2 からのアクセスは VPC ピアリング経由で出来ないため、パブリック側を回す必要があります。あまり、データベースへのアクセスをパブリック経由にしたくはないと思うので、EC2 がアクセス元になるのであれば素直に RDS を選び、やはり用途としては Lightsail 内のデータベースとしての利用かなと思います。

これまで、Lightsail のサーバーインスタンスに、MySQL などを install して利用されているユーザなら、メンテナンスおよび自動バックアップ、ポイントインタイムの復元などがマネージド環境に任せることが出来るので、置き換えを検討しても良いかもしれませんね!

以上!大阪オフィスの丸毛(@marumo1981)でした!