{Neptune}Amazon Neptune クラスターで監査ログを使用する


-- 1. クラスターパラメータグループの作成

aws neptune create-db-cluster-parameter-group \
--db-cluster-parameter-group-name cpg01 \
--db-parameter-group-family neptune1 \
--description "cpg01"

aws neptune describe-db-cluster-parameter-groups | grep DBClusterParameterGroupName

aws neptune describe-db-cluster-parameters \
--db-cluster-parameter-group-name cpg01

aws neptune modify-db-cluster-parameter-group \
--db-cluster-parameter-group-name cpg01 \
--parameters ParameterName=neptune_enable_audit_log,ParameterValue=1,ApplyMethod=pending-reboot


-- 2. DBクラスター作成

aws neptune create-db-cluster \
--db-cluster-identifier cluster01 \
--engine neptune \
--engine-version 1.0.5.0 \
--port 8182 \
--no-storage-encrypted \
--no-deletion-protection \
--db-cluster-parameter-group-name cpg01


aws neptune create-db-instance \
--db-cluster-identifier cluster01 \
--engine neptune \
--db-instance-identifier instance01 \
--db-instance-class db.t3.medium \
--no-multi-az \
--no-auto-minor-version-upgrade

aws neptune describe-db-clusters --db-cluster-identifier cluster01
aws neptune describe-db-instances --db-instance-identifier instance01


-- 3. Gremlin コンソールのインストール
※エンジンバージョンが1.0.5.0の場合、Gremlinは3.4.10を使用する必要がある

sudo yum install -y java-1.8.0-devel

sudo /usr/sbin/alternatives --config java

Java 8 の数を入力

wget https://archive.apache.org/dist/tinkerpop/3.4.10/apache-tinkerpop-gremlin-console-3.4.10-bin.zip

unzip apache-tinkerpop-gremlin-console-3.4.10-bin.zip

cd apache-tinkerpop-gremlin-console-3.4.10

wget https://www.amazontrust.com/repository/SFSRootCAG2.cer

mkdir /tmp/certs/

cp /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.amzn2.0.1.x86_64/jre/lib/security/cacerts /tmp/certs/cacerts

sudo keytool -importcert \
-alias neptune-tests-ca \
-keystore /tmp/certs/cacerts \
-file /home/ec2-user/apache-tinkerpop-gremlin-console-3.4.10/SFSRootCAG2.cer \
-noprompt \
-storepass changeit

 

vim conf/neptune-remote.yaml

hosts: [cluster01.cluster-xxxxxxxxxxxx.ap-northeast-1.neptune.amazonaws.com]
port: 8182
connectionPool: { enableSsl: true, trustStore: /tmp/certs/cacerts }
serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { serializeResultToString: true }}

cat conf/neptune-remote.yaml

-- 4. 動作確認

bin/gremlin.sh

:remote connect tinkerpop.server conf/neptune-remote.yaml

:remote console


-- 頂点追加
g.addV('person').property(id, '1').property('name', 'martin').property('age', 29).iterate()
g.addV('person').property(id, '2').property('name', 'vadas').property('age', 27).iterate()
g.addV('software').property(id, '3').property('name', 'lop').property('lang', 'java').iterate()
g.addV('person').property(id, '4').property('name', 'josh').property('age', 32).iterate()
g.addV('software').property(id, '5').property('name', 'ripple').property('lang', 'java').iterate()
g.addV('person').property(id, '6').property('name', 'peter').property('age', 35).iterate()
g.addV('person').property(id, '7').property('name', 'justin').property('age', 17)


-- エッジ追加
g.V('1').addE('knows').to(g.V('2')).property('weight', 0.5).iterate()
g.V('1').addE('created').to(g.V('3')).property('weight', 0.4).iterate()
g.V('1').addE('knows').to(g.V('4')).property('weight', 1.0).iterate()
g.V('4').addE('knows').to(g.V('3')).property('weight', 0.4).iterate()
g.V('4').addE('created').to(g.V('5')).property('weight', 1.0).iterate()
g.V('6').addE('created').to(g.V('3')).property('weight', 0.2).iterate()
g.V('7').addE('knows').to(g.V('1')).property('weight', 0.2)

-- 頂点削除
g.V().has('name', 'justin').drop()


-- トラバーサル実行
g.V().hasLabel('person')

-- 値付きのトラバーサル実行
g.V().has('name', 'martin').out('knows').valueMap()


-- プロパティ削除
g.V().hasLabel('person').properties('age').drop()

-- エッジ削除
g.V().outE().hasLabel('created').drop()

-- 頂点一覧
g.V()
g.V().valueMap()

-- エッジ一覧
g.E()


-- エッジ全削除
g.E().drop()

-- 頂点全削除
g.V().drop()

 

:exit

 

-- 5. クリーンアップ

-- インスタンスの削除
aws neptune delete-db-instance \
--db-instance-identifier instance01 \
--skip-final-snapshot


aws neptune describe-db-instances

-- クラスターの削除
aws neptune delete-db-cluster \
--db-cluster-identifier cluster01 \
--skip-final-snapshot

aws neptune describe-db-clusters

-- クラスタパラメータグループ削除
aws neptune delete-db-cluster-parameter-group \
--db-cluster-parameter-group-name cpg01


-- クラスタパラメータグループ一覧
aws neptune describe-db-cluster-parameter-groups | grep DBClusterParameterGroupName