A serverless and extensible event-driven system for reacting to legacy web feed events
APACHE-2.0 License
Web syndication is a form of syndication in which content is made available from one website to other sites via pollable feeds. Over the years, the industry has standardized around certain web syndication web feed protocols such as RSS, Atom, and most recently, JSON Feed, for exposing site content updates to users. Despite the age of these protocols, they are still widely used today for publishing consumable feeds.
In recent years, we have seen the rise of event-driven architectures. This architectural pattern may be applied by the design and implementation of applications and systems that transmit events among loosley coupled software componenets and services. Event-driven systems typically consist of event producers, event routers, and event consumers. Producers publish events to routers, which then are responsible for delivering them to consumers. In 2019, the CNCF released v1.0 of the CloudEvents spec/protocol, which intends to standardize a specification for describing event data in common formats to provide interoperability across services, platforms and systems.
This project serves as a bridge between existing legacy web feed formats such as RSS, Atom, and JSON, and the more modern CloudEvents spec via Google Cloud Eventarc. It intends to enable the development of event-driven systems that react to legacy web feed events.
This is not an officially supported Google product
roles/editor
roles/owner
(if you need to disable org policies)
terraform ~> 1.3.0
gcloud cli ~> 385.0.0
gcloud components install beta
gcloud cli ~> 385.0.0
docker
devcontainer
All GCP APIs required for this solution are documented in ./.config/apis.txt. By default, make tf-backend
will enable each of these APIs
The Org Policy constraints which could prevent this solution from being deployed are documented in ./.config/disable_boolean_constraint_policies.txt and ./.config/disable_list_constraint_policies.txt. If your deployment is being blocked, uncomment line #114 in ./scripts/create_tf_backend.sh and rerun make tf-backend
. Please note that you must have permissions to remove Orgnization Policies from your project in order for this to work.
# Clone repo
export GITHUB_PROJECT_NAME="eventarc-web-feed"
export GCP_PROJECT_ID="REPLACE_ME"
git clone [email protected]:GoogleCloudPlatform/${GITHUB_PROJECT_NAME}.git
cd ${GITHUB_PROJECT_NAME}
# If deploying using the devcontainer, run `devcontainer open` to open a new VS Code workspace inside the devcontainer
# Review the default configuration in config.tfvars and modify as needed (please review the README in terraform/ to see input options)
# Additinoal configuration examples can be found in ./examples
# Log in to gcloud cli
gcloud auth login --update-adc
# Configure your CLI to point to the GCP project you want to deploy into
gcloud config set project ${GCP_PROJECT_ID}
# Prepare the GCP project
make tf-backend
# Deploy
make app
Learn more about feed subscribers at ./src/subscribers/README.md