Moto has a stand-alone server mode. This allows you to utilize the backend structure of Moto even if you don’t use Python.
It uses flask, which isn’t a default dependency. You can install the server ‘extra’ package with:
pip install moto[server]
You can then start it running a service:
$ moto_server ec2
You can also pass the port:
$ moto_server ec2 -p3000 * Running on http://127.0.0.1:3000/
If you want to be able to use the server externally you can pass an IP address to bind to as a hostname or allow any of your external interfaces with 0.0.0.0:
$ moto_server ec2 -H 0.0.0.0 * Running on http://0.0.0.0:5000/
Please be aware this might allow other network users to access your server.
Then go to localhost to see a list of running instances (it will be empty since you haven’t added any yet).
If you want to use boto3 with this, you can pass an endpoint_url to the resource
boto3.resource( service_name='s3', region_name='us-west-1', endpoint_url='http://localhost:5000', )