A service for storing and accessing signed data.
Airnode feed is a Node.js service, dockerized and deployable on any cloud provider or hostable on premise. It is continuously running two core loops:
Fetch beacon data
- Eachtriggers.signedApiUpdates
entry defines a group of templates. Airnode feed makes a template request to the API specified in the OIS to get the template data. Airnode feed's wallet is used to sign the responses and these are then saved to in-memory storage.Push signed beacon data to signed API
- For eachtriggers.signedApiUpdates
, periodically checks the in-memory storage and pushes the signed data to the configured API.
See configuration for details.
The Airnode feed needs a configuration in order to run. The config
folder contains example configuration which uses:
- Nodary as the data provider, from which the data is fetched.
- Signed API running on
http://localhost:8090
where the data is pushed.
To start the the Airnode feed in dev mode run the following:
-
cp config/airnode-feed.example.json config/airnode-feed.json
- To copy the Airnode feed configuration from the example. Note, theairnode-feed.json
file is ignored by git. If you are using Docker Desktop, you need to change the URL from localhost tohost.docker.internal
. For example:"url": "http://host.docker.internal:8090"
-
cp config/secrets.example.env config/secrets.env
- To copy the secrets.env needed for the configuration. This file is also ignored by git. -
Set the
NODARY_API_KEY
inside the secrets file. Ask someone from development team for the key. -
cp .env.example .env
- To copy the example environment variables. Optionally change the defaults. -
pnpm run dev
- To run the Airnode feed. This step assumes already running signed API as specified in theairnode-feed.json
configuration.
To run the tests:
pnpm run test
# or to run test only from a specific files (path substring search)
pnpm run test schema
# or to enable logger (by default the logger is disabled by jest.setup.js).
LOGGER_ENABLED=true pnpm run test
You can use shorthands from package.json. To understand how the docker image is built, read the Dockerfile.
pnpm run docker:build
pnpm run docker:run
To deploy Airnode feed on AWS you can use the Cloud Formation template created by the API integrations team. The template can be found in the private api-integrations repository here.
To deploy on premise you can use the Docker image by reading the instructions below.
To run the Airnode feed docker image you need to:
- Mount config folder to
/app/config
. The folder should contain theairnode-feed.json
andsecrets.env
files. - Pass the
-it --init
flags to the docker run command. This is needed to ensure the docker is stopped gracefully. See this for details. - Specify the
--env-file
with the path to the.env
file containing the ENV configuration. - Optionally, pass the
--rm
flag to remove the container after it is stopped. - If running on Linux, you need to use the
--network host
to access the host network. This has no effect for Docker Desktop. - Lastly, if you are using Docker Desktop and you want to access the host machine, you need to change the host URL from
localhost
tohost.docker.internal
in the configuration files.
For example:
# Assuming the current folder contains the "config" folder and ".env" file.
docker run -it --init --volume $(pwd)/config:/app/config --env-file .env --rm api3/airnode-feed:latest