Govern models with MLflow and Amazon SageMaker AI Model Registry sync: Part 2
2 minute read
Larger organizations rarely stop at one account: they run multiple development accounts, a central governance function, and — in regulated environments — a hard rule that development workloads cannot write into production-grade accounts. In this second post, we extend the building blocks from Part 1 to two cross-account governance topologies, show how an approved model moves from the registry to a deployed endpoint through CI/CD, and compare the options so you can pick one.
Full text here, and GitHub repository here

Co-authored with Melanie Li and Ram Vittal, this post covers two patterns. The hub-and-spoke central topology shares one MLflow app from a governance hub to every development account with AWS Resource Access Manager (AWS RAM); the data scientist’s workflow is identical to Part 1 except the tracking URI points at the hub, automatic registration lands the Model Package Group in the hub synchronously with the register call, and the hub shares the group back with the AllowDeploy managed permission. The hub-and-spoke hybrid topology is for regulated customers who don’t want spokes writing into the hub at all: each development account keeps its own MLflow app and registry, a local model owner approves, and an EventBridge-triggered workflow copies the approved package cross-account — replicating artifacts into a hub-owned bucket, rewriting the inference specification, and registering into a shared destination group with provenance metadata — so the hub copy has no runtime dependency on the source account.

Along the way we call out the details that bite in practice: cross-account S3 access is needed on both the bucket-policy and identity side before log_model will even succeed; automatic registration appends a hash suffix to the group name, so reference groups by ARN; and lineage is recorded where the sync executes and is not shared back by AWS RAM. We finish with the approval-to-deployment path — an EventBridge rule on ModelApprovalStatus: Approved driving a CI/CD pipeline — and a comparison table across single-account, central, and hybrid.
Why I wrote this. Part 1 answers “how does the sync work”; this is the post for the platform team that has to make it work across an organization. The hybrid topology in particular came straight from customer conversations in financial services and healthcare, where “the hub is a production account and nobody in dev gets a write path into it” is not a preference but a compliance requirement. Writing it down with runnable notebooks was the fastest way to stop re-deriving the same answer on every call.



