Home Blog AWS Daily Intelligence #32 - The table had two wri…
AWS Daily Intelligence AWS

AWS Daily Intelligence #32 - The table had two writers and no owner

Verified against current vendor documentation on 15 September 2026. Pricing, limits and API behaviour were checked against the official docs on that date. Cloud services change fast — if you are reading this much later, treat the specifics as a starting point and re-check the linked sources.

Executive summary

AWS Glue zero-ETL integrations now detect table property conflicts and track integration ownership, announced on Sunday.

The mechanism is a single sentence in the announcement, and it describes a problem more clearly than it describes a feature: “Glue associates the resulting table properties with the owning integration, so two integrations can no longer be pointed at the same target table without your knowledge.”

Read that backwards and it tells you what was true until yesterday. Two managed replication pipelines could write into one target table, and nothing in the service would mention it. This is a small feature closing a failure mode that is genuinely nasty: it produces wrong data rather than a failed job, and wrong data does not page anyone.

What changed

Two things, and they are worth separating because only one of them is a check.

Ownership is now tracked. Glue records which integration owns the table properties it produced. That is the durable change — a piece of state that did not previously exist.

Conflicts are now detected against that state. “If you attempt to create or modify an integration whose table properties are owned by another integration, Glue identifies the owning integration and guides you to choose a different target or update the existing one.”

Note what that sentence does well. It does not merely refuse — it names the owner. The difference matters operationally: an error that says this target is taken sends someone hunting through integrations, while an error that says this target is taken by that integration ends the investigation at the message.

Availability is broad from the start: “all AWS Commercial and AWS GovCloud (US) Regions where AWS Glue zero-ETL integrations are supported.” No opt-in is described, and no separate charge is mentioned.

Architecture

Zero-ETL is “a set of fully managed integrations by AWS that minimizes the need to build ETL data pipelines for common ingestion and replication use cases.” The surface is wide enough that collisions are easy to arrange by accident.

Diagram: how two AWS Glue zero-ETL integrations could previously write into one target table undetected, and what ownership tracking changes. On the left, the wide source surface that makes a collision easy to arrange: AWS sources including DynamoDB and Oracle at AWS, third-party applications including Salesforce, SAP OData, ServiceNow, Zendesk, Zoho CRM and the Meta ad platforms, and self-managed Oracle, SQL Server, MySQL and PostgreSQL, with a service quota of 40 integrations per Region per account by default. In the middle, the narrow set of destinations they converge on: a general purpose S3 bucket through SageMaker Lakehouse, S3 Tables, Redshift Managed Storage and an Amazon Redshift data warehouse, with a note that self-managed database sources can replicate only to a Redshift data warehouse, concentrating the overlap. On the right, the previous behaviour and the new one: before, two integrations could be pointed at the same target table with nothing in the service reporting it, so both ran successfully and the table silently carried two writers; now Glue associates the resulting table properties with the owning integration and, when an integration is created or modified against a target owned by another, identifies the owning integration and guides the operator to a different target. A panel at the bottom records the boundary: the check is described at create and modify time, so it governs configuration rather than continuously policing the table, writers that are not integrations remain outside it, and nothing states what happens to integrations that already overlap.
A wide source surface converging on a few shared destinations. Ownership tracking adds the state that makes the second writer visible — at the moment it is configured.

Sources include DynamoDB and Oracle at AWS; third-party applications including Salesforce, SAP OData, ServiceNow, Zendesk, Zoho CRM and the Meta ad platforms; and self-managed Oracle, SQL Server, MySQL and PostgreSQL. Targets include a general purpose S3 bucket via SageMaker Lakehouse, S3 Tables, Redshift Managed Storage, and an Amazon Redshift data warehouse.

That is the shape of the risk. Many teams, many sources, a small number of shared analytical destinations, and a service whose entire value proposition is that nobody has to write or review a pipeline. The place where a human used to notice that two jobs wrote to one table — the code review of the second job — is exactly what zero-ETL removes.

One asymmetry worth carrying: “For self-managed database sources, you can replicate data only to an Amazon Redshift data warehouse. Other targets are not supported.” Self-managed sources are therefore funnelled into a single target type, which concentrates exactly the kind of overlap this feature now detects.

The quota puts a number on the scale this matters at. Glue allows 40 integrations per Region per account by default, and the limit is adjustable upward. Against a catalogue that permits up to 200,000 tables per database, forty independently configured writers is comfortably past the point where anyone holds the target map in their head — which is the honest argument for the service tracking ownership rather than a wiki doing it.

Business value

The value is not the error message. It is the class of incident that stops happening.

A silent double-writer does not announce itself. Both integrations run green. Row counts look plausible. The discovery is usually a business question — a figure that does not reconcile, a dashboard that disagrees with the source system — and by then the table has been wrong for as long as both pipelines have existed, which means every report drawn from it is suspect for that entire period.

Preventing one of those is worth more than the feature's apparent size. It is the difference between a configuration error caught at creation and an analytical estate that has to be re-validated backwards.

Security considerations

There is no security boundary change here, and it would be wrong to present one. Nothing in the announcement describes new permissions, new encryption behaviour, or a change to who can reach a target.

The honest framing is integrity rather than confidentiality. An undetected second writer is an unattributed modification of an analytical dataset — if that dataset feeds a regulatory or financial report, the ability to state which integration owns a table's properties is a provenance improvement. It answers who produced this, which is a question audits ask and estates frequently cannot answer.

Cost considerations

No pricing change is stated in the announcement, and no separate charge is described for ownership tracking or conflict detection.

The indirect cost argument is the stronger one. Two integrations replicating into a single target were being paid for twice while producing one corrupted result — duplicated ingestion and duplicated storage churn in service of an outcome nobody wanted. Preventing the second integration is a cost reduction that never appears as a line item, because the spend it avoids is spend that would have looked legitimate.

Operational considerations

The timing of the check is the detail that decides how much this helps you.

Detection is described at create or modify time. That is the right place — it is the moment the second writer is introduced, and it fails before any data moves. But it is a control-plane guardrail, which means it governs the act of configuring an integration rather than continuously policing the table.

Two practical consequences follow. First, anything that reaches the table by a route other than an integration — a Glue job, a Spark writer, a manual ALTER TABLE — is outside what this describes. Second, and more pressing for anyone already invested: the announcement describes the check firing when you attempt to create or modify. It does not say what happens to integrations that already overlap. If you adopted zero-ETL early and at scale, the safe reading is that this protects you from the next collision rather than reporting the ones you may already have.

Tradeoffs

A guardrail that blocks is a guardrail that can block you. Anyone with a deliberate multi-integration arrangement into one target — if such a configuration was ever workable — now has a creation or modification path that refuses. The announcement's framing is that Glue “guides you to choose a different target or update the existing one”, so the intended resolution is one integration per target, not an override.

Ownership is state, and state drifts. Tracking which integration owns a table's properties is only useful while the record matches reality. Deleting and recreating integrations, migrating between accounts, or rebuilding a target table are all places where an ownership record and a physical table can diverge. Nothing in the announcement describes reconciliation, so treat ownership as a helpful assertion rather than a guarantee.

It narrows a gap rather than closing it. The failure mode is two writers to one table. This addresses two integrations. Those are not the same set, and the remainder is still yours to govern.

Implementation guidance

Audit before you rely on it. Enumerate existing zero-ETL integrations and their targets, and look for duplicates. This is a finite, mechanical check and it is the only way to learn whether you already have the problem — the new detection is described as firing on create and modify, not as a retrospective scan.

Reconcile any duplicate you find against the source, not the target. If two integrations have been writing into one table, the table is the corrupted artefact. Rebuilding it from a single integration is the repair; comparing it against itself is not.

Record target ownership where humans will see it. Glue now knows which integration owns a table's properties. Your data catalogue documentation, your team's table inventory and your onboarding notes still do not. The service-side record helps the person who hits the error; a documented one helps the person who was about to.

Keep the check in front of automation. If integrations are created by Terraform, CloudFormation or a platform pipeline, make sure the failure is surfaced rather than swallowed. A conflict error that a deployment pipeline retries or ignores converts a good guardrail into a confusing one.

Best practices

One writer per table, stated explicitly. The feature encodes a rule that was always true and rarely written down. Write it down — a target table has exactly one producer, and anything else is an exception requiring a named owner and a reason.

Name targets after their source. Collisions are far less likely when the target's name makes its single producer obvious. It is a naming convention doing the work of a control, which is cheap and effective.

Treat managed pipelines as production code. Zero-ETL removes the code, not the consequence. The review that a pipeline used to get should follow the integration instead.

Who should adopt this

There is nothing to adopt — it is on, in every Commercial and GovCloud (US) Region where zero-ETL integrations are supported, with no opt-in described.

The people who should act are narrower: anyone running more than a handful of zero-ETL integrations, particularly with self-managed database sources, whose replication is constrained to Redshift data warehouse targets and therefore concentrates the overlap this detects. If that is you, the audit above is worth doing this week rather than when a number fails to reconcile.

Key takeaways

  • Glue zero-ETL now tracks which integration owns a target table's properties, and detects conflicts against that record.
  • The announcement's phrasing — two integrations can no longer share a target “without your knowledge” — is a description of what was previously possible.
  • Detection is described at create and modify time. It is a control-plane guardrail, not continuous enforcement on the table.
  • Nothing describes what happens to integrations that already overlap, so audit rather than assume.
  • Writers that are not integrations — Glue jobs, Spark, manual DDL — remain outside this entirely.
  • Available in all Commercial and GovCloud (US) Regions where zero-ETL is supported, with no separate charge stated.

Comments

How was your experience?
Your feedback helps improve this site.
PoorExcellent