AWS: Spinning up a Neo4j instance with APOC installed
One of the first things I do after installing Neo4j is install the APOC library, but I find it’s a bit of a manual process when spinning up a server on AWS so I wanted to simplify it a bit.
There’s already a Neo4j AMI which installs Neo4j 3.2.0 and my colleague Michael pointed out that we could download APOC into the correct folder by writing a script and sending it as UserData.
I’ve been doing some work in JavaScript over the last two weeks so I thought I’d automate all the steps using the AWS library. You can find the full script on GitHub.
The UserData part of the script is actually very simple:
This script creates a key pair, security group, opens up that security group on ports 22 (SSH), 7474 (HTTP), 7473 (HTTPS), and 7687 (Bolt). The server created is m3.medium, but you can change that to something else if you prefer.
#!/bin/bash
curl -L https://github.com/neo4j-contrib/neo4j-apoc-procedures/releases/download/3.2.0.3/apoc-3.2.0.3-all.jar -O
sudo cp apoc-3.2.0.3-all.jar /var/lib/neo4j/plugins/
We can run it like this:
$ node neo4j-with-apoc.js
Creating a Neo4j server
Key pair created. Save this to a file - you'll need to use it if you want to ssh into the Neo4j server
-----BEGIN RSA PRIVATE KEY-----
<Private key details>
-----END RSA PRIVATE KEY-----
Created Group Id:<Group Id>
Opened Neo4j ports
Instance Id: <Instance Id>
Your Neo4j server is now ready!
You'll need to login to the server and change the default password:
https://ec2-ip-address.compute-1.amazonaws.com:7473 or http://ec2-ip-address.compute-1.amazonaws.com:7474
User:neo4j, Password:<Instance Id>
We’ll need to wait a few seconds for Neo4j to spin up, but it’ll be accessible at the URI specified.
Once it’s accessible we can login with the username neo4j and password
We can then run the following query to check that APOC has been installed: ~cypher call dbms.procedures() YIELD name WHERE name starts with "apoc" RETURN count() ╒══════════╕ │"count()"│ ╞══════════╡ │214 │ └──────────┘ ~
Cool, it worked and we can now Neo4j and APOC to our heart’s content! If we want to SSH into the server we can do that as well by first saving the private key printed on the command line to a file and then executing the following command: ~bash $ cat aws-private-key.pem -----BEGIN RSA PRIVATE KEY-----
You can start/stop neo4j by running the following command: ~bash $ /etc/init.d/neo4j Usage: /etc/init.d/neo4j {start|stop|status|restart|force-reload} ~
The other commands you may be used to finding in the bin folder can be found here: ~bash $ ls -lh /usr/share/neo4j/bin/ total 48K -rwxr-xr-x 1 neo4j adm 15K May 9 09:22 neo4j -rwxr-xr-x 1 neo4j adm 5.6K May 9 09:22 neo4j-admin -rwxr-xr-x 1 root root 612 May 12 00:03 neo4j-awspasswd -rwxr-xr-x 1 neo4j adm 5.6K May 9 09:22 neo4j-import -rwxr-xr-x 1 neo4j adm 5.6K May 9 09:22 neo4j-shell drwxr-xr-x 2 neo4j adm 4.0K May 11 22:13 tools ~
Let me know if this is helpful and if you have any suggestions/improvements.
About the author
I'm currently working on short form content at ClickHouse. I publish short 5 minute videos showing how to solve data problems on YouTube @LearnDataWithMark. I previously worked on graph analytics at Neo4j, where I also co-authored the O'Reilly Graph Algorithms Book with Amy Hodler.