Upstreaming LZA-grade AWS control-plane depth — a sequenced, per-scope PR plan (feedback wanted before we open anything) #2186
Replies: 6 comments 3 replies
|
To make this reviewable async without putting anything in your PR queue, the eight per-scope branches are on our fork now — here are the diffs, one link per proposed PR:
On the stacking: PRs 3, 6, 7, and 8 are stacked, so each link above shows only that PR's own delta on top of its parent branch (matching the "Depends on" column). PRs 1, 2, 4, and 5 are independent and diff straight against These are branches only — no PRs opened, nothing in your queue, nothing running your CI. Browse whenever suits you, and we'll take our cue on order and pacing from your reply above. |
|
cc @hectorvent — flagging this for your eyes since it touches the CloudFormation / CDK provider path most directly. Very happy to sequence the hotter PRs (especially the CloudFormation one) behind whatever you and the CDK-series folks have in flight, and to adjust scope or ordering however works best for the roadmap. No rush at all — just wanted to make sure it was on your radar. |
|
Hi @sam-fakhreddine, This sounds great and will be a solid addition to Floci. One request: could you hold off on opening the CloudFormation PRs for now? I want to merge what's already in flight and then refactor. Right now the CloudFormation handling is a God class and it's extremely hard to maintain. I'll ping you once it's ready on your side. |
|
Update, plus one question at the end. Thanks @hectorvent — understood on CloudFormation, and we've held it. No CF PR is coming until you say so. cc @pgermosen — adding you since Since the last comment the work moved on a lot, so we've rebuilt the fork from scratch. The eight branches linked above still exist, but they've been rebased onto current Why this took a whileWorth explaining the gap since the last comment, because it's the reason we trust this code. None of it was written from specs. Every branch came out of running a real org-scale Landing Zone That process logged 34 distinct defects, and it is where the unglamorous half of this work comes The practical upshot for review: the branches that LZA exercises hard (Organizations, Control Tower, Everything is rebased onto current
|
| Family | PR | Provenance |
|---|---|---|
| New service | #2 organizations |
LZA-verified + SDK compatibility test |
| Runtime / container | #3 codebuild |
LZA-verified |
| API parity | #4 apigateway |
Botocore-derived, not LZA-exercised |
| Cross-account | #5 cross-account-reliability |
LZA-verified |
| IAM / SCP enforcement | #6 iam |
LZA-verified |
Each follows your PR template, including an honest answer to the AWS Compatibility question — which
SDK and CLI versions actually verified the wire protocol, and where we have no such verification.
PR #4 is deliberately the weakest of the five and says so; it's the family your own review rubric
would have the most to say about.
#6 is stacked on #2 rather than on main, so its diff shows only its own 1,824 lines instead of
replaying Organizations. That's how we'd sequence it upstream too, and it's worth seeing because 11
of the 46 branches are stack children — reviewing a parent makes each child small.
What we'd like — and a concrete offer
We're not opening anything upstream yet, and we won't until you say so.
The main question: what's your preferred strategy here? We have far more than the 5-PR cap
allows, it's your roadmap and your review time, and we'd rather be told than guess. Specifically:
- Sequencing — which ≤5 would you like first? Our instinct is the clean-rebasing new services,
but we're happy to start anywhere, split any branch finer, or drop pieces entirely. - Pace — one wave at a time with each landing before the next, or something slower? We're not
in a hurry and would rather not crowd your queue. - Scope — is there anything here you'd simply rather not carry? A "no thanks" on any branch
saves us both the review round-trip. - CloudFormation — before or after your refactor (see above)?
On those preview PRs above: they are diff-and-comment surfaces only — our fork has CI disabled,
so there are no check runs on them. The branches are verified, we just did it locally: the full
suite (12,194 tests) passes on the integration rollup that merges all 46 together, and each branch
passes its own focused selection. We did not want to imply a green tick you cannot see.
If you would rather not look at any of it until the CloudFormation refactor is done, that is
completely fine — nothing here is time-sensitive.
|
@sam-fakhreddine Lets start with the new services, rebase, and point to main floci |
|
Wave 1 is open — the new services, rebased onto current
Notes from the rebase:
CloudFormation remains held per your ask. |
Uh oh!
There was an error while loading. Please reload this page.
Hi floci maintainers 👋
We've been running floci as the target for a full Landing Zone Accelerator (LZA) deployment, and to get an org-scale CDK/CodePipeline run to go green end-to-end we built out a fair amount of AWS control-plane depth on our fork. We'd like to contribute it back — but on your terms and at your pace, not as a wall of PRs dropped on an already-busy queue.
This post is the "ask first" step. Before we open a single PR, we want to know: is this direction welcome, and how would you like us to sequence it?
What it adds, at a glance
aws:PrincipalArnpopulated for principal-scoped conditions.onEvent/isComplete), account-scoped stacks/exports (Fn::ImportValue), real changeset diffs, SSM-typed parameters, and provisioning of CodeBuild/CodePipeline resources.Retry(used by the CDK provider polling loop).Existing behavior is unchanged by default
Everything governance-related is opt-in and default-off. Two flags gate every SCP/identity check:
FLOCI_SERVICES_IAM_ENFORCEMENT_ENABLED(defaultfalse)FLOCI_SERVICES_ORGANIZATIONS_SCP_ENFORCEMENT_ENABLED(defaultfalse)The S3 global namespace is likewise behind
FLOCI_SERVICES_S3_GLOBAL_BUCKET_NAMESPACE(default off). Turn nothing on andmainbehaves exactly as it does today.We did the merge-overlap homework
Before proposing anything we audited all open PRs on the repo, to land with the community rather than across it:
mainor an enhancement to an existing service that no open PR is also making.CloudFormationResourceProvisioner.java, which a large number of open PRs touch.Because of that hotspot, we do not want to submit a monolith. The plan below is a set of per-scope PRs, sequenced safe → hot, so the zero-collision new services land first and the contested provisioner comes last with the smallest possible surface.
Proposed PR sequence (per-scope, dependency-ordered)
Each is
feat(<scope>), one feature per PR, reconstructed fresh on top of currentmain, with its own doc updates and tests.feat(organizations): AWS Organizations servicefeat(servicequotas,ram): Service Quotas + RAM sharingfeat(iam): enforce SCPs, populateaws:PrincipalArnfeat(s3): global bucket namespace + replication configfeat: cross-account routing + container reliabilityfeat(codebuild): LZA-grade build executionfeat(codepipeline): events, approvals, V2 conditions, CodeBuild actionsfeat(cloudformation): CDK Provider framework, account-scoped stacks, service provisioningWe'd open these in waves (1–2 first, then 3–4, then 5, then 6→7→8), waiting for each wave to be reviewed/mergeable before the next — so you're never looking at all eight at once.
Complementary to in-flight work
The biggest related effort we saw is the community's CDK-enablement series (individual
AWS::*resource types so CDK-synthesized templates deploy). Our CloudFormation work — the async custom-resource layer those templates ultimately exercise — is meant to complete that story, not compete with it. We're glad to sequence PR 8 behind that series and coordinate directly with its authors, and likewise to coordinate on the IAM-enforcement PR with anyone currently touching the IAM filter.What we'd like from you
No rush and no pressure — we'll wait for your read before opening the first PR. Thanks for building floci; it's been genuinely useful to run a real LZA against. 🙏
All reactions