CloudQuery News

Announcing Closed Beta of CloudQuery AWS Plugin with Event-based Sync

This closed beta is no longer active. Event-based sync is now part of the CloudQuery Platform. See the platform documentation for current sync capabilities, or schedule a demo to learn more.

We are excited to announce the preview of an event-based sync for our AWS integration!

What is it?

CloudQuery was initially designed to sync all data on demand, giving the user full control over what to sync, when, and how often. This approach makes CloudQuery easy to set up and use.

However, regular sync, even if it runs every hour, is sometimes just not enough to get the accurate picture of what is happening in your environment. Cloud environments are ephemeral - they come and go in just a few minutes and it is really hard to track them and get your costs right. An IP address gets spammed by bots the moment you make it public. User accounts get created with broad permissions and can get misused in a brief moment.

This is where our new event-based sync comes to the rescue.

How it works

All events are aggregated by AWS CloudTrail. You can configure a Trail to send management events to a Kinesis Data Stream via CloudWatch Logs. By subscribing to a stream of AWS CloudTrail events in the Kinesis Data stream, CloudQuery can then trigger selective syncs to update just the singular resource that had a configuration change.

Configuring CloudQuery AWS integration for event-based sync

Configuring CloudQuery AWS integration for event-based sync

With this setup, you get the fresh data within a few seconds of it becoming available in CloudTrail.

Here are the services and events supported at the moment:

ServiceEvent
ec2.amazonaws.comAssociateRouteTable
ec2.amazonaws.comAttachInternetGateway
ec2.amazonaws.comAuthorizeSecurityGroupEgress
ec2.amazonaws.comAuthorizeSecurityGroupIngress
ec2.amazonaws.comCreateImage
ec2.amazonaws.comCreateInternetGateway
ec2.amazonaws.comCreateNetworkInterface
ec2.amazonaws.comCreateSecurityGroup
ec2.amazonaws.comCreateSubnet
ec2.amazonaws.comCreateTags
ec2.amazonaws.comCreateVpc
ec2.amazonaws.comDeleteTags
ec2.amazonaws.comDetachInternetGateway
ec2.amazonaws.comModifySubnetAttribute
ec2.amazonaws.comRevokeSecurityGroupEgress
ec2.amazonaws.comRevokeSecurityGroupIngress
ec2.amazonaws.comRunInstances
iam.amazonaws.comCreateGroup
iam.amazonaws.comCreateRole
iam.amazonaws.comCreateUser
rds.amazonaws.comCreateDBCluster
rds.amazonaws.comCreateDBInstance
rds.amazonaws.comModifyDBCluster
rds.amazonaws.comModifyDBInstance

This feature is in development. Find the full list of supported events in our AWS Event-based Sync documentation.

Getting Started

This feature is available in closed beta, sign up for early access.

  1. Configure an AWS CloudTrail Trail to send management events to a Kinesis Data Stream via CloudWatch Logs. The most straight forward way to do this is to use the CloudQuery provided CloudFormation template.
aws cloudformation deploy --template-file ./streaming-deployment.yml --stack-name  --capabilities CAPABILITY_IAM --disable-rollback --region 
  1. Copy the ARN of the Kinesis stream. If you used the CloudFormation template you can run the following command:
aws cloudformation describe-stacks --stack-name  --query "Stacks[].Outputs" --region 
  1. Define a config.yml file like the one below
kind: source
spec:
name: "aws-event-based"
registry: "local"
path:
tables:
- aws_ec2_instances
- aws_ec2_internet_gateways
- aws_ec2_security_groups
- aws_ec2_subnets
- aws_ec2_vpcs
- aws_ecs_cluster_tasks
- aws_iam_groups
- aws_iam_roles
- aws_iam_users
- aws_rds_instances
destinations: ["postgresql"]
skip_tables:
- aws_iam_group_last_accessed_details
- aws_iam_role_last_accessed_details
- aws_iam_user_last_accessed_details
spec:
event_based_sync:
- account:
local_profile: ""
kinesis_stream_arn: ""
  1. Sync the data!
cloudquery sync config.yml

This will start a long lived process that will only stop when there is an error or you stop the process.

Deploying in production

CloudQuery needs to run in a listening mode as a long-running service. In this mode, it does not support the overwrite-delete-stale write model. To delete stale data, you need to set up a recurrent task to run full table syncs. Additionally, you may need to set up another task with CloudQuery still running regular sync on tables that are currently not supported for the event-based sync. See the AWS integration documentation for the list of supported tables.

Note that these are the limitations of the current beta version of the event-based sync for our AWS integration. We plan to make configuration and management easier in the future based on user feedback.

Availability

This feature is currently available in early access to everyone upon signing up. When released to the public, it will be a premium (paid) feature, with the actual pricing model yet to be defined.

Future work

At the moment, only one Kinesis stream is supported by a running instance of CloudQuery. We will consider adding support for multiple streams based on the feedback we receive.

The current coverage of tables has been designed to provide a selection of different services. We will add more resources based on your feedback.

Read the docs

Want to see CloudQuery in action? Schedule a demo with our team or check out the platform documentation to learn more.

Want help getting started? Join the CloudQuery community to connect with other users and experts, or message our team directly here if you have any questions.

Try CloudQuery yourself

Self-hosted, open source, and free to start. Or schedule a demo to see the managed version.

Related posts

CloudQuery News

Introducing CloudQuery Insights: Cloud Intelligence That Connects the Dots

CloudQuery Insights automatically surfaces connected signals across your cloud inventory: security findings, cost data, policy violations, and audit trails.

Joe Karlsson

Joe Karlsson

April 21, 2026

Cloud Infrastructure

CloudQuery News

Introducing the Nautobot Source Integration

Sync Nautobot DCIM inventory data to PostgreSQL, BigQuery, or Snowflake and query it with SQL alongside your cloud provider data.

Joe Karlsson

Joe Karlsson

March 19, 2026

CloudQuery News

CloudQuery Is Merging with Env Zero

A letter from CloudQuery CEO Yevgeny Pats on the merger with env zero and what it means for customers.

Yevgeny Pats

Yevgeny Pats

March 17, 2026

CloudQuery News

Security

Introducing the Zoom Source Integration

New CloudQuery Zoom source plugin: sync Zoom meeting, user, and webinar data into your database for compliance, analytics, and user access governance reporting.

Joe Karlsson

Joe Karlsson

February 2, 2026

CloudQuery News

Product News

New in CloudQuery: Tines + Semgrep integration, and native visualizations,

CloudQuery October 2025 updates: Tines and Semgrep integration for security orchestration, plus native visualization support in the CloudQuery Platform.

Chris Reuter

Chris Reuter

October 31, 2025

CloudQuery News

Product News

Security

Introducing Data Access Control for CloudQuery Platform

CloudQuery Platform RBAC: Control cloud asset access with SQL-based permissions. Map Azure AD/Okta groups to roles. Available now on all environments.

Joe Karlsson

Joe Karlsson

October 28, 2025

AI

CloudQuery News

Understand your cloud infra faster using natural language

CloudQuery unifies AWS, GCP, Azure, and SaaS configs into SQL tables. The new AI assistant lets you query your cloud inventory using natural language.

Chris Reuter

Chris Reuter

September 29, 2025

CloudQuery News

Find the Cloud Waste Contest

Win CloudQuery swag by finding cloud waste in our dataset. Sync AWS data with CloudQuery, solve 3 SQL challenges, get t-shirts, sweatshirts, and mugs.

Joe Karlsson

Joe Karlsson

September 25, 2025

AI

CloudQuery News

Generate CloudQuery Configuration with Natural Language

Generate CloudQuery config files from natural language prompts. Use AI to quickly create source and destination plugin configs without manual YAML editing.

Chris Reuter

Chris Reuter

September 23, 2025

Own your pipeline.
Own your data.