[アップデート] Amazon Neptuneが東京リージョンで利用可能になりました!

re:Invent 2017で発表されたグラフデータベース、Amazon Neptuneがついに東京リージョンで利用可能になりました。さっそく東京リージョンで起動してみましたので、その様子をお届けします。
2019.01.24

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

こんにちは。サービスグループの武田です。

re:Invent 2017で発表されたグラフデータベース、Amazon Neptuneがついに東京リージョンで利用可能になりました。

Amazon Neptune is Now Available in the Asia Pacific (Tokyo) Region

今回のアナウンスで、Neptuneは次の9リージョンで利用可能となりました。

  • US East (N. Virginia)
  • US East (Ohio)
  • US West (Oregon)
  • Europe (Ireland)
  • Europe (London)
  • Europe (Frankfurt)
  • Asia Pacific (Singapore)
  • Asia Pacific (Sydney)
  • Asia Pacific (Toyko)

さっそく東京リージョンで起動してみましたので、その様子をお届けします。

東京リージョンで起動してみた

マネジメントコンソールにログインしてAmazon Neptuneのページにアクセスしてみます。東京リージョンでアクセスできていますね。さっそくNeptuneを起動していきましょう。

バージョン、インスタンスクラス、Multi-AZは次のように設定しました。

DBインスタンスの識別子は welcome-neptune-to-tokyo と入力し、[次へ]を押下。

VPC周りの設定はデフォルトの設定を流用します。

データベースの設定以降はすべてデフォルトのままです。最後に[Create database]を押下。

データベースの作成が始まります。

8分ほどで作成が完了しました。

Neptuneに接続してみる

せっかく起動できたので、Neptuneにアクセスもしてみましょう。VPCの外からはアクセスできないため、EC2インスタンスを起動し、そこからアクセスをしてみます(EC2の起動手順は省略します。Amazon Linux 2で作成しました)。

なおGremlinコンソールを使用してアクセスをしましたが、流れはドキュメントに書かれていますので、こちらも参考にしてください。

Gremlin コンソールを使用して Neptune DB インスタンスに接続する - Amazon Neptune

EC2インスタンスが起動できたらSSHで接続します(鍵とホスト名は自身の環境に合わせてください)。

local

$ ssh -i /path/to/aws-ec2.pem ec2-user@ec2-54-238-197-114.ap-northeast-1.compute.amazonaws.com

接続できたら、次にGremlinコンソールのセットアップをします。

remote

$ sudo yum install -y java-1.8.0-devel
$ wget https://archive.apache.org/dist/tinkerpop/3.3.2/apache-tinkerpop-gremlin-console-3.3.2-bin.zip
$ unzip apache-tinkerpop-gremlin-console-3.3.2-bin.zip
$ cd apache-tinkerpop-gremlin-console-3.3.2
$ wget https://www.amazontrust.com/repository/SFSRootCAG2.pem

接続情報をconf/neptune-remove.yamlとして定義します。hosts:に定義しているホスト名は自身の環境に合わせてください。クラスターエンドポイントおよびインスタンスエンドポイントで接続確認できました。

$ vim conf/neptune-remote.yaml
$ cat conf/neptune-remote.yaml
hosts: [welcome-neptune-to-tokyo.cjjms3a2tkhy.ap-northeast-1.neptune.amazonaws.com]
port: 8182
connectionPool: { enableSsl: true, trustCertChainFile: "SFSRootCAG2.pem"}
serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { serializeResultToString: true }}

以上で準備は完了です!GremlinコンソールでNeptuneに接続してみましょう。

$ bin/gremlin.sh

         \,,,/
         (o o)
-----oOOo-(3)-oOOo-----
plugin activated: tinkerpop.server
plugin activated: tinkerpop.utilities
plugin activated: tinkerpop.tinkergraph

gremlin> :remote connect tinkerpop.server conf/neptune-remote.yaml
==>Configured welcome-neptune-to-tokyo.cjjms3a2tkhy.ap-northeast-1.neptune.amazonaws.com/172.31.7.127:8182

gremlin> :remote console
==>All scripts will now be sent to Gremlin Server - [welcome-neptune-to-tokyo.cjjms3a2tkhy.ap-northeast-1.neptune.amazonaws.com/172.31.7.127:8182] - type ':remote console' to return to local mode

gremlin> g.V().limit(1)

gremlin> g.addV('person').property('name', 'devio')
==>v[38b43ede-2d3e-3a04-d692-4fce0b3265aa]

gremlin> g.V().hasLabel('person')
==>v[38b43ede-2d3e-3a04-d692-4fce0b3265aa]

gremlin> :exit

いい感じに動いてますね!

まとめ

昨年のre:Invent 2018でもさまざまなデータベース新サービスがリリースされました。NoSQLは適材適所で使い分けていくものですので、ユースケースなどを理解してうまく使っていきたいですね。