Resource Access Manager (RAM) & VPC Sharing
Recap: From Permission Ceilings to Shared Plumbing
Day 5 was about the ceiling on what an identity can do. A permission boundary caps the maximum permissions an IAM entity can ever hold, even when the policies attached to it are broader, and the delegated-admin escalation prevention pattern depends on that cap being mandatory rather than advisory. STS sits underneath the same story: AssumeRole, AssumeRoleWithSAML, and AssumeRoleWithWebIdentity (the mechanism behind EKS IRSA) are how short-lived credentials get minted so that nobody has to hold a long-lived key.
Today contrasts with that material in an important way. Permission boundaries and STS answer the question "who is allowed to call this API, and with what credentials." RAM answers a different question entirely: "which account owns this resource, and who else is allowed to attach to it." No amount of IAM policy in an application account will let it launch an instance into a subnet it does not own — the subnet has to be shared with it first, and the sharing is a resource-level grant, not an identity-level one. The two layers compose: RAM decides whether the resource is reachable at all, and IAM decides what the caller may do once it is.
Foundations You'll Need Today
Today's material is about sharing a network between accounts, so it assumes you already have a working picture of what an AWS network is made of. If you have not built one by hand, here are the four pieces this day leans on hardest.
VPCs and Subnets
A VPC (Virtual Private Cloud) is your own private, isolated network inside AWS. It is the container that everything network-related lives in: nothing in AWS gets a private IP address unless it sits inside a VPC. Think of it as the building. A subnet is a slice of that building — a smaller range of IP addresses carved out of the VPC's total range, tied to one specific Availability Zone (a physically separate data center cluster within a region). You place servers, databases, and load balancers into subnets, not directly into the VPC. A subnet is also where the "public vs. private" distinction is decided: a subnet is public if its traffic is routed to an internet gateway, and private if it is not. The reason this matters today is that RAM subnet sharing is exactly what it sounds like — one account owns the building and the slices, and other accounts are allowed to put their furniture into those slices without owning any of it.
CIDR Blocks and Why Overlap Is Fatal
Every VPC and subnet is defined by a CIDR block, which is shorthand for a range of IP addresses. You will see things like 10.0.0.0/16 and 10.0.1.0/24. The number after the slash says how many of the leading bits are fixed, so a smaller number means a bigger range: a /16 holds 65,536 addresses, while a /24 holds 256. The practical rule is that two networks can only be connected if their address ranges do not overlap. If one team picks 10.0.0.0/16 and another independently picks the same range, there is no way to route between them, because a router cannot tell which 10.0.1.5 you meant. This is why today's decision tables keep returning to overlap: it is the single constraint that eliminates peering, Transit Gateway, and subnet sharing all at once, leaving PrivateLink as the only option.
Route Tables
A route table is the set of rules that tells a subnet where to send traffic that is not staying inside the VPC. Every subnet is associated with exactly one route table, and the table is a list of destinations paired with targets — for example, "send anything destined for 0.0.0.0/0 (the entire internet) to this NAT gateway." If there is no matching rule, the traffic is dropped. This is the mechanism behind the centralized-egress pattern in today's lab: the network account owns the route table, points the default route at its own NAT gateway, and every participant account inherits that path whether they like it or not. It is also why a participant cannot "fix" their own connectivity — they do not own the table that decides it.
Security Groups vs. Network ACLs
These are the two layers of firewall in a VPC, and confusing them is the most common source of one-directional connectivity bugs. A security group is attached to a resource — an instance, a database, a load balancer — and acts as a stateful allow-list: you write rules for inbound and outbound traffic, and if you allow a connection in, the reply is automatically allowed back out. A network ACL is attached to a subnet and is stateless: it evaluates inbound and outbound traffic independently, so you must explicitly allow both directions or the return traffic gets dropped. Security groups also support referencing another security group by ID rather than by IP range, which is the feature today's cross-account tiering scenario depends on. The ownership split matters too: in a shared VPC the participant owns the security groups on its own resources, while the network account owns the subnet's ACL, which is why a broken path can have two teams each convinced the other is at fault.
With that grounding, here is why RAM exists and what problem it actually solves.
1. Why This Is on the Exam
SAP-C02 scenarios are written by people who have watched real enterprises fail at multi-account networking, and the failure they care about most is the one that starts innocently. A company creates a handful of accounts, gives each one its own VPC, and connects them with peering. That works at three accounts. At thirty it does not, because peering is a full mesh by nature: every new VPC has to be peered with every existing VPC, and each peering relationship consumes a route table entry, a connection object, and a CIDR range that must not overlap with anything else in the mesh. The operational cost grows quadratically while the value grows linearly, and the CIDR planning problem becomes unsolvable once two business units independently pick 10.0.0.0/16.
RAM is the AWS answer to the ownership half of that problem. It is not a connectivity service — it does not move packets — but it changes who is allowed to place resources into a network, which in turn changes how many networks you need. The exam tests this because the correct answer to a surprising number of networking scenarios is "you do not need a second VPC at all." A question that describes three application teams needing to reach a shared database, or a central team wanting to control all CIDR allocation, or a security team wanting every workload to sit behind one inspection point, is often probing whether you reach for peering and Transit Gateway by reflex or whether you recognize that subnet sharing removes the requirement for separate networks in the first place.
This maps most directly to Domain 1 (Design Solutions for Organizational Complexity) and to the networking portions of Domain 2 (Design for New Solutions). The organizational-complexity framing is the one to internalize: RAM is a governance tool that happens to have networking consequences. It lets a central network account remain the single owner of the VPC, its CIDRs, its route tables, and its gateways, while application accounts get exactly the slice of that network they need and nothing more. The exam will frequently pair it with AWS Organizations, because sharing within an organization is the low-friction path, and with SCPs, because the central account can constrain what participants are allowed to do with the subnets they have been given.
2. How RAM Actually Works
RAM is built around three objects: a resource share, the resources placed into it, and the principals it is shared with. The owner account creates a resource share, adds one or more shareable resources to it, and specifies principals — either individual account IDs, an organizational unit, or the entire organization. When the share is created with an organization as the principal, participants do not receive an invitation to accept; the share is simply active for them. When the principal is a bare account ID outside the organization, that account receives an invitation and must accept it before the resource becomes usable. This distinction matters in exam scenarios because it determines whether a step exists in the deployment sequence at all.
For VPC subnet sharing specifically, the mechanism is worth tracing carefully because it is where most misconceptions live. The VPC owner creates a subnet and then shares that subnet through RAM. A participant account sees the subnet appear in its own console and API as a subnet it can launch into, but the subnet is still owned by the VPC owner. The participant can create ENIs, instances, RDS instances, Lambda functions with VPC configuration, and load balancer nodes inside that subnet. The participant cannot modify the subnet, cannot change its route table association, cannot delete it, and cannot see or edit the VPC's other subnets unless those were shared too. Route tables, network ACLs, internet gateways, NAT gateways, and the VPC itself all remain under the owner's control.
The consequence is a clean separation of duties that the exam likes to test. The network account owns addressing, routing, and egress. The application accounts own their compute and their security groups. A participant's security group can reference another participant's security group by ID within the same shared VPC, which is how cross-account application tiers are wired without any peering at all. That reference works because the VPC is genuinely one VPC — the accounts are tenants in it, not peers of it. This is the single most important mental model to carry into the exam: subnet sharing is not connectivity between networks, it is co-tenancy inside one network.
RAM also shares other resource types, and the same three-object model applies. Transit Gateways can be shared so that participant accounts create their own attachments to a centrally owned TGW. Route 53 Resolver rules can be shared so that every account in the organization resolves the same on-premises domains without duplicating forwarding rules. License configurations, Aurora DB clusters, and CodeBuild projects are shareable as well. The pattern is consistent: the owner keeps control of the resource's lifecycle and configuration, and participants get the ability to consume it.
3. The Core Decision Boundary: Share the Network or Connect to It
Almost every RAM scenario reduces to one fork. Either the application accounts need to be inside a network that someone else owns, or they need their own network that can reach someone else's. The first is subnet sharing. The second is peering, Transit Gateway, or PrivateLink. Getting this fork right determines the rest of the answer, because the two paths have different failure modes, different cost profiles, and different blast radii.
The tell in a scenario is usually about ownership and control. If the question says the central team must control CIDR allocation, or that application teams should not be able to create their own VPCs, or that all egress must traverse a single inspected path, the answer is subnet sharing. If the question says two teams have already built their own VPCs and now need to talk, or that the networks must remain administratively separate for compliance, the answer is a connectivity service. If the question says the two networks have overlapping CIDRs, the answer is PrivateLink, because neither sharing nor peering can reconcile overlapping address space.
| Requirement | Shared subnets (RAM) | VPC peering | Transit Gateway | PrivateLink |
|---|---|---|---|---|
| Central control of CIDR and routing | Yes — owner controls all of it | No — each VPC routes independently | Partial — TGW route tables segment, VPCs still own CIDRs | No — consumer keeps its own network |
| Overlapping CIDRs tolerated | No — one VPC, one address space | No | No | Yes |
| Scales to dozens of accounts | Yes — one VPC, many participants | No — mesh grows quadratically | Yes — hub and spoke | Yes — per-service endpoints |
| Participant can modify routing | No | Yes, within its own VPC | Yes, within its own VPC | N/A |
| Cross-account security group references | Yes, within the shared VPC | No | No | No |
| Charged for data transfer between accounts | Yes, cross-account traffic is billed | Yes | Yes, plus attachment hours | Yes, plus endpoint hours |
One row deserves emphasis because it is the most commonly missed. Cross-account security group referencing works inside a shared VPC and does not work across peering or Transit Gateway. If a scenario describes a three-tier application where the database tier must accept traffic only from the application tier's security group, and the tiers live in different accounts, subnet sharing is the only option that gives you that control natively. Peering would force you to reference CIDR ranges instead, which is both less precise and harder to maintain.
4. Configuration Modes and Their Tradeoffs
The first knob is who the principal is. Sharing with an organizational unit or the whole organization is the low-friction mode: no invitations, no acceptance step, and new accounts added to the OU automatically gain access to the share. Sharing with a bare account ID outside the organization requires the participant to accept an invitation, which introduces a manual step and a pending state that can silently block a deployment. For exam purposes, "share with the organization" is almost always the intended answer when the accounts are in the same organization, because it removes an operational failure mode rather than adding one.
The second knob is which subnets you share, and this is where the real design work happens. A common pattern is to share only private application subnets and keep the public subnets, NAT gateways, and the VPC's internet gateway entirely within the network account. Participants then have no path to the internet except through the owner's NAT gateway, which is exactly the centralized-egress property the network team wanted. The alternative — sharing public subnets too — gives participants the ability to attach public IPs and elastic IPs, which is usually the opposite of what a governance-focused design intends. The tradeoff is that participants lose the ability to run anything that genuinely needs a public address, so the decision has to be made deliberately rather than by default.
The third knob is whether the share is created with automatic association to the organization. When you share with an organization or OU, you can enable automatic sharing so that resources added to the share later are immediately visible to all principals. Without it, each new resource requires an explicit association. The tradeoff is between convenience and surprise: automatic sharing means a subnet added to the share is instantly usable by every participant, which is convenient but means a mistake in the network account propagates immediately. Manual association adds a step but gives the network team a checkpoint.
The fourth knob is tagging and tag-based access control. RAM supports sharing based on tags, and the owner can require that participants only launch resources carrying specific tags. Combined with SCPs in the participant accounts, this is how a central team enforces that everything launched into a shared subnet is attributable to a cost center. The tradeoff is enforcement overhead: tag policies and SCP conditions have to be maintained, and a missing tag becomes a hard failure at launch time rather than a soft warning. Teams that skip this step usually discover the gap during their first chargeback cycle.
5. Sizing, Limits and Quotas
Subnet sharing changes the arithmetic of IP address planning in a way that catches people out. In a per-account VPC model, each account gets its own address space and the only constraint is that the spaces do not overlap. In a shared VPC model, every participant draws from the same address space, so the VPC's CIDR has to be sized for the aggregate of all participants plus growth. A /16 gives 65,536 addresses, which sounds generous until you remember that AWS reserves five addresses per subnet, that a subnet cannot span Availability Zones, and that a large EKS cluster can consume thousands of addresses on its own through pod networking.
The practical guidance is to size the shared VPC for the whole organization's foreseeable footprint rather than for today's workloads, and to use secondary CIDR blocks on the VPC when the primary block runs short. A VPC can have multiple CIDR associations, and additional blocks can be added later without recreating the VPC, which is the escape hatch when the original sizing was optimistic. Subnets themselves cannot be resized after creation, so the subnet-level split is the decision that is genuinely hard to reverse.
| Item | Value | Notes |
|---|---|---|
| Addresses reserved per subnet | 5 | Network, VPC router, DNS, future use, broadcast |
| Minimum subnet size | /28 | 16 addresses, 11 usable |
| Maximum subnet size | /16 | Matches the largest single VPC CIDR |
| CIDR blocks per VPC | Multiple, via association | Secondary blocks can be added after creation |
| Subnet resizing | Not supported | Recreate the subnet to change its size |
| Subnets per VPC | 200 by default | Adjustable via service quota increase |
| Resource shares per account | Quota-limited | Check current Service Quotas for the region |
| Principals per resource share | Quota-limited | Organization and OU principals count as one |
Two quota behaviors are worth internalizing. First, sharing with an OU or an organization counts as a single principal regardless of how many accounts are inside it, which is why organization-level sharing scales so much better than enumerating account IDs. Second, the number of subnets a participant can launch into is bounded by the owner's VPC subnet count, not by anything in the participant account, so a participant hitting a limit is often a signal that the network account needs a quota increase rather than the application account. Always check which account owns the resource before filing the increase.
6. Failure Modes and What They Look Like in Production
The most common failure is a launch that fails with an authorization error the participant cannot explain, because the participant's IAM policy looks correct. The cause is almost always that the subnet was never shared, or was shared with a different principal than the one being used, or the invitation is still pending. The first diagnostic move is to check the resource share from the owner account and confirm the participant appears as an active principal rather than a pending one. The second is to confirm the participant is launching into the shared subnet and not into a subnet in its own VPC that happens to have a similar name.
The second failure mode is a connectivity problem that looks like a routing bug but is actually a security group or NACL issue. Because the network ACL belongs to the owner and the security group belongs to the participant, a change in either place can break traffic, and the two teams will each believe the other is at fault. The symptom is typically asymmetric: outbound works, return traffic is dropped, or vice versa. The first diagnostic move is to check the NACL on the subnet in the owner account and the security group on the ENI in the participant account, in that order, because NACLs are stateless and are the more common culprit for one-directional failures.
The third failure mode is address exhaustion, and it presents as intermittent launch failures that correlate with load rather than with any configuration change. Because all participants draw from one pool, a single participant with a runaway autoscaling group can consume the shared subnet's free addresses and cause unrelated teams to fail. This is the shared-VPC equivalent of a noisy neighbor, and it is the strongest argument for per-participant subnet segmentation rather than one large shared subnet for everyone. Monitoring free IP count per subnet is the control that catches it before it becomes an incident.
The fourth failure mode is the accidental dependency. A participant builds a workload that assumes the shared subnet will always exist, and the network team later deletes or re-CIDRs it. Because the participant cannot see the owner's change management, the breakage arrives without warning. The mitigation is organizational rather than technical: the network account's change process has to treat shared subnets as a public interface with consumers, and participants should be told about planned changes through the same channel they would use for any other dependency.
7. The Operational and SRE Angle
From an SRE perspective, a shared VPC introduces a dependency that is invisible in the participant's own dashboards. The participant's service health depends on a subnet, a route table, and a NAT gateway that live in another account and are monitored by another team. If the network account's NAT gateway saturates, every participant sees elevated latency and connection failures simultaneously, and each participant's on-call will independently conclude that their own service is broken. The runbook has to start with a cross-account check: is the shared network healthy, and is anyone else affected at the same time.
The metrics worth alarming on are the ones that describe the shared resource rather than the participant's workload. Free IP addresses per shared subnet, NAT gateway bytes and connection counts, and the age of the oldest pending resource share invitation are the three that catch the most incidents. For the participant side, the useful signal is a synthetic check that exercises the actual path through the shared subnet to a dependency, because that is the only thing that proves the cross-account path is intact end to end. Internal service metrics will look healthy right up until the moment the network path breaks.
The SLO implication is that a participant's availability target is capped by the network account's availability target, whether or not anyone wrote that down. If the shared NAT gateway is designed for 99.9% and the participant promises 99.95%, the participant's promise is unachievable and the gap will only surface during a post-incident review. The honest approach is to make the dependency explicit in the service's error budget calculation and to agree on the network account's target as an input to the participant's own target. This is the same reasoning that applies to any shared platform, and it is worth stating plainly in the design document rather than leaving implicit.
The runbook shape follows from that. First, confirm scope: is this one participant or all of them. Second, check the shared network's health metrics in the owner account. Third, check the participant's security group and the subnet's NACL for recent changes. Fourth, check free IP capacity. Only after those four steps does it make sense to look at the participant's application logs, because the first three steps are where the majority of shared-VPC incidents actually live.
8. Edge Cases and Exam Gotchas
The single most-tested gotcha is that a participant cannot delete or modify a shared subnet, and cannot see the VPC's other subnets. Scenarios sometimes describe a participant team that wants to "manage its own networking" while using a shared VPC, and the correct answer is that this is not possible — the participant gets consumption rights, not ownership. If the requirement genuinely includes independent routing control, the answer is a separate VPC with a connectivity service, not subnet sharing.
The second gotcha is the invitation state. Shares to accounts outside the organization require acceptance, and a scenario that describes a deployment failing with an authorization error after a share was created is usually testing whether you check for the pending invitation. Shares to an OU or the organization do not require acceptance, so the same scenario with an in-organization participant has a different answer. Read the principal type carefully before choosing.
The third gotcha is that cross-account traffic inside a shared VPC is still billed as cross-account data transfer. Sharing does not make traffic free, and a scenario that emphasizes cost reduction should not be answered with subnet sharing on that basis alone. The cost argument for sharing is about operational overhead and IP efficiency, not about data transfer pricing.
The fourth gotcha is that RAM shares resources, not permissions. Sharing a subnet does not grant a participant the ability to launch instances — the participant's IAM identity still needs the relevant EC2 permissions, and any SCP in the participant's OU still applies. This is the same ceiling-versus-grant distinction from the permission-boundary material, applied at the resource layer instead of the identity layer. A scenario that says a participant was granted a subnet share but still cannot launch is testing whether you check IAM and SCPs before assuming the share failed.
The fifth gotcha is the difference between sharing a subnet and sharing a Transit Gateway. Sharing a TGW gives participants the ability to create their own attachments to a central hub, which is a connectivity grant. Sharing a subnet gives participants the ability to place resources inside a network they do not own, which is a co-tenancy grant. Both are RAM shares, and scenarios will sometimes offer both as options to see whether you distinguish them.
9. RAM vs. the Services It Gets Confused With
The confusion set is small but the distinctions are sharp. RAM is not a connectivity service, so it never appears as an alternative to peering or Transit Gateway when the requirement is genuinely "connect two existing networks." It appears instead when the requirement is "let these accounts use a network that already exists." The exam will sometimes phrase a question so that both readings are plausible, and the tiebreaker is whether the accounts already have their own VPCs that must remain in place.
Against VPC peering, the distinction is scale and control. Peering is a one-to-one relationship between two VPCs, each side retains full control of its own routing, and the number of relationships grows quadratically with the number of VPCs. Subnet sharing is a one-to-many relationship where the owner retains all routing control and the participant count is bounded only by quotas. Peering is right when the two networks are genuinely independent administrative domains. Sharing is right when one team is the network authority and the others are consumers.
Against Transit Gateway, the distinction is whether you need a network at all. TGW connects networks that already exist and gives you centralized routing between them, which is the right answer when participants must keep their own VPCs for compliance or isolation reasons. Subnet sharing removes the need for those VPCs in the first place. A scenario that says each business unit must have its own VPC for regulatory reasons is pointing at TGW; a scenario that says the central team wants to own all addressing is pointing at sharing.
Against PrivateLink, the distinction is granularity and address overlap. PrivateLink exposes a single service to consumers without any network-level integration, which makes it the only option when CIDRs overlap. Subnet sharing requires a single non-overlapping address space and gives participants a whole subnet rather than a single endpoint. If the requirement is "consume one API," PrivateLink is the smaller, safer answer. If the requirement is "run your workloads in our network," sharing is the answer.
| Pick this | When the requirement is… |
|---|---|
| RAM subnet sharing | Central ownership of CIDR, routing, and egress; participants consume subnets; cross-account security group references needed |
| VPC peering | Two independent VPCs, small number of connections, each side keeps its own routing |
| Transit Gateway | Many VPCs and on-premises networks, centralized routing and segmentation, participants keep their own VPCs |
| PrivateLink | Expose one service to many consumers, overlapping CIDRs, no network-level integration wanted |
| RAM Transit Gateway sharing | Central TGW ownership, participants create their own attachments |
| RAM Resolver rule sharing | One set of hybrid DNS forwarding rules consumed by every account |
Hands-on Lab: Sharing a Central VPC Across Three Application Accounts (45 min)
This lab builds the pattern the exam keeps describing: one network account owns the VPC, three application accounts consume its private subnets, and none of the application accounts can see or change the routing. You will need four accounts in a single AWS Organization — one designated as the network account and three as application accounts — plus permission to create VPCs, subnets, RAM shares, and EC2 instances in each. Work through the steps in order; the verification steps are where the learning actually happens.
- In the network account, create a VPC with a CIDR large enough for all three participants plus growth. A /16 is the realistic choice; note the CIDR because you will need it when reasoning about address exhaustion later.
- Create three private subnets in the VPC, one per Availability Zone, each sized /20. Do not create public subnets, an internet gateway, or a NAT gateway yet — the point of the first pass is to see what participants can and cannot do without egress.
- Create a route table for the private subnets and associate all three subnets with it. Confirm the route table contains only the local route. This is the state participants will inherit.
- In the RAM console of the network account, create a resource share. Add the three private subnets as resources. Set the principal to the organization (or to an OU containing the three application accounts) rather than enumerating account IDs, and note that no invitation step appears.
- Switch to application account A. Confirm the three subnets are visible in the VPC console under a shared-subnets view, and confirm the VPC itself is not editable. Try to modify a subnet's route table association and record the exact error — this is the ownership boundary in action.
- In application account A, launch a t3.micro instance into one of the shared subnets. Create a security group in account A first and attach it. Confirm the instance launches and receives a private IP from the shared subnet's range.
- Repeat step 6 in application accounts B and C, each with its own security group. Then, in account A's security group, add an inbound rule referencing account B's security group ID. Confirm the reference resolves — this is the cross-account security group referencing that peering cannot provide.
- Test connectivity between the instances using private IPs. It should work without any peering, any route table change, and any Transit Gateway, because all three instances are in the same VPC.
- Now add egress. In the network account, create a NAT gateway in one subnet and add a 0.0.0.0/0 route to the shared route table pointing at it. Confirm all three application instances can now reach the internet through the single centrally owned NAT gateway.
- Check the NAT gateway's CloudWatch metrics and confirm traffic from all three accounts is visible in one place. This is the centralized-egress observability property that per-account NAT gateways cannot give you.
- Deliberately break it: in the network account, remove the 0.0.0.0/0 route. Confirm all three application accounts lose internet access simultaneously, and note that none of them can fix it from their own account. This is the dependency you are accepting.
- Restore the route. Then, in the network account, check the free IP count on each shared subnet and record it. Set a mental alarm threshold at roughly 20% free — that is the point at which a runaway autoscaling group in one participant starts affecting the others.
- Finally, create a second resource share for a Route 53 Resolver rule (or a Transit Gateway, if you have one) and observe that the same three-object model — share, resource, principal — applies unchanged. The consistency is the point.
Clean up by deleting the instances in all three application accounts, then the resource shares, then the NAT gateway, and finally the VPC in the network account. If you skip the ordering, the VPC deletion will fail because the shared subnets still have participant-owned ENIs attached, which is itself a useful demonstration of the ownership boundary.
Scenario Question Drills (20 min)
Q1. A company wants every application account to use a common, centrally managed VPC without each account owning its own VPC. What is the mechanism?
Q2. An application account has been granted a subnet share but its instances still fail to launch with an authorization error. What should you check first?
Q3. Two business units each built their own VPC and both used 10.0.0.0/16. One needs to consume a specific API hosted in the other. Which option works?
Q4. A network team wants all application accounts to reach the internet only through a single inspected egress path that the network team controls. Which design achieves this?
Q5. A three-tier application spans three accounts. The database tier must accept traffic only from the application tier's security group. Which connectivity model supports this natively?
Q6. A participant account reports that it cannot modify a shared subnet's route table association. Is this a misconfiguration?
Q7. A company shares subnets with an OU containing 40 accounts. How many principals does this count as against the resource share quota?
Q8. A resource share was created for an account outside the organization, but the participant reports the subnets are not visible. What is the most likely cause?
Q9. Several application accounts share one VPC. One team's autoscaling group grows rapidly and unrelated teams begin failing to launch instances. What is the cause?
Q10. A participant's instances can reach the internet but return traffic is dropped. The participant's security group allows all outbound. Where should you look next?
Q11. A central team wants to own a Transit Gateway and let application accounts create their own attachments to it. Which RAM capability applies?
Q12. A company wants every account in the organization to resolve the same on-premises domains without duplicating forwarding rules. What should the network account do?
Q13. A participant's service promises 99.95% availability but depends on a shared NAT gateway in the network account designed for 99.9%. What is the correct assessment?
Q14. A scenario says each business unit must retain its own VPC for regulatory isolation, but the company wants centralized routing between them. Which approach fits?
Q15. A network team wants to prevent application accounts from attaching public IPs to instances in shared subnets. What is the most direct control?
Peek into Tomorrow
Today's material leaves a real question open. Subnet sharing solves the ownership problem for the network layer, but it says nothing about how the pieces fit together as a whole. If a company adopts Control Tower automation for account provisioning, SCP guardrails for policy ceilings, IAM Identity Center for centralized SSO, and RAM-shared networking for the data plane, what actually holds those four things together? Each one is defensible on its own, and each one can be deployed without the others. The open question is whether they compose into a single coherent governance model or whether they are four independent mechanisms that happen to coexist and occasionally contradict each other.
There is a concrete version of that question worth sitting with. When a new account is provisioned through Control Tower's account factory, which of today's decisions has to be made at provisioning time rather than afterward? A subnet share can be granted later, but the account's OU placement determines which SCPs apply from its first API call, and the OU is also what makes an organization-level RAM share take effect without an invitation. The ordering matters, and getting it wrong means an account that is technically provisioned but not actually governed. Tomorrow's synthesis is where those seams get examined.
Sources
- AWS Resource Access Manager User Guide — What Is AWS RAM?
- Amazon VPC User Guide — Share Your VPC with Other Accounts
- AWS RAM User Guide — Shareable AWS Resources
- AWS RAM User Guide — Creating a Resource Share
- Amazon VPC User Guide — VPC CIDR Blocks
- Amazon VPC User Guide — Subnet Sizing and Reserved Addresses
- Amazon VPC User Guide — Security Group Rules and Referencing
- AWS Whitepaper — Building a Scalable and Secure Multi-VPC AWS Network Infrastructure
- AWS Well-Architected Framework — Reliability Pillar
- Amazon Route 53 Developer Guide — Resolver and Forwarding Rules