Route 53 Resolver
Amazon Route 53 Resolver — resolver endpoints, resolver rules and VPC associations, query logging, and DNS Firewall. Real control plane validated against EC2 VPC subnets and security groups. JSON 1.1 protocol.
fakecloud implements Amazon Route 53 Resolver's full JSON 1.1 API: all 72 operations covering resolver endpoints, resolver rules and their VPC associations, query-log configurations, DNS Firewall (rule groups, domain lists, rules, and associations), the per-VPC firewall / resolver / DNSSEC configuration singletons, Outpost resolvers, resource-based policies, and tags. 100% Smithy conformance.
This is the hybrid-DNS control plane for a VPC — distinct from Route 53 (public/private hosted zones, a REST-XML service). Route 53 Resolver is route53resolver, an awsJson1_1 service with the target prefix Route53Resolver.
Status: 100% coverage of a real control plane. DNS query forwarding/filtering at endpoints (the Resolver data plane) is not implemented — see Known limitations.
Supported today
- Resolver endpoints —
CreateResolverEndpointprovisions anINBOUNDorOUTBOUNDendpoint against real EC2 VPC subnets and security groups: everyIpAddresses[].SubnetIdand everySecurityGroupIds[]is validated against fakecloud's EC2 state, all subnets must belong to the same VPC (which becomes the endpoint'sHostVPCId), and unknown subnets/security groups are rejected with the AWS error shape. A new endpoint is reportedCREATINGand settles toOPERATIONALon a fast background task (its IP addresses settle toATTACHED), mirroring AWS's async create.GetResolverEndpoint,ListResolverEndpoints,UpdateResolverEndpoint, andDeleteResolverEndpointare implemented, along withListResolverEndpointIpAddresses,AssociateResolverEndpointIpAddress, andDisassociateResolverEndpointIpAddress(which enforce the two-IP-address minimum). Endpoint ids match AWS:rslvr-in-*/rslvr-out-*. - Resolver rules + associations —
CreateResolverRulesupportsFORWARD/SYSTEM/RECURSIVE/DELEGATErules; aFORWARDrule must reference a realOUTBOUNDresolver endpoint (validated) and carries itsTargetIps(Ip/Ipv6/Port/Protocol).AssociateResolverRulebinds a rule to a VPC (validated against EC2 state) and settlesCREATING->COMPLETE;DisassociateResolverRule,GetResolverRuleAssociation, andListResolverRuleAssociationscomplete the set. A rule with live associations cannot be deleted (ResourceInUseException). Rule ids:rslvr-rr-*; association ids:rslvr-rrassoc-*. - Query logging —
CreateResolverQueryLogConfig,GetResolverQueryLogConfig,DeleteResolverQueryLogConfig, andListResolverQueryLogConfigs, plusAssociateResolverQueryLogConfig/DisassociateResolverQueryLogConfig(which trackAssociationCount),GetResolverQueryLogConfigAssociation, andListResolverQueryLogConfigAssociations. A configuration with live associations cannot be deleted. - DNS Firewall — full CRUD for firewall rule groups (
rslvr-frg-*), domain lists (rslvr-fdl-*, withImportFirewallDomains/UpdateFirewallDomainsADD/REMOVE/REPLACE +ListFirewallDomains), and firewall rules (singleCreate/Update/Delete/ListFirewallRulesplus theBatch*FirewallRulebatch ops) with realALLOW/BLOCK/ALERTactions,BlockResponse(NODATA/NXDOMAIN/OVERRIDE), priority, and domain-list references. Rules are keyed within a group by domain-list id + Qtype (duplicates rejected).AssociateFirewallRuleGroupbinds a rule group to a VPC with a priority and settles toCOMPLETE;Disassociate/Get/Update/ListFirewallRuleGroupAssociationsare implemented.ListFirewallRuleTypesreturns the rule-type catalog. Deletion guards match AWS (a rule group with rules or associations, or a domain list referenced by a rule, cannot be deleted). - Per-VPC configuration —
Get/Update/ListResolverConfig(s)(autodefined-reverseENABLE/DISABLEwithENABLING->ENABLEDsettle),Get/Update/ListResolverDnssecConfig(s)(DNSSEC validationENABLE/DISABLEwith settle), andGet/Update/ListFirewallConfig(s)(FirewallFailOpen). All key on a real VPC id. - Outpost resolvers —
Create/Get/Update/Delete/ListOutpostResolverswithCREATING->OPERATIONALsettle (rslvr-op-*). - Resource policies —
Put/GetforFirewallRuleGroupPolicy,ResolverQueryLogConfigPolicy, andResolverRulePolicy(the RAM cross-account share policies). - Tags —
TagResource,UntagResource, andListTagsForResourcekeyed by resource ARN, applied at create time from each resource'sTags.
Real AWS id and ARN formats are used throughout (rslvr-in-*, rslvr-out-*, rslvr-rr-*, rslvr-rrassoc-*, rslvr-qlc-*, rslvr-frg-*, rslvr-fdl-*, rslvr-frgassoc-*; arn:aws:route53resolver:<region>:<account>:<kind>/<id>). Smithy @length / @range / enum constraints are enforced on every operation, state machines and deletion guards match AWS, and every resource type is account-partitioned, persisted, and restored across restarts.
CloudFormation
The provisioner supports AWS::Route53Resolver::ResolverEndpoint, ResolverRule, ResolverRuleAssociation, ResolverQueryLoggingConfig, ResolverQueryLoggingConfigAssociation, FirewallDomainList, FirewallRuleGroup, FirewallRuleGroupAssociation, FirewallConfig, ResolverConfig, and ResolverDNSSECConfig, with GetAtt support (Arn, ResolverEndpointId, IpAddressCount, Id, RuleCount, etc.). CloudFormation-provisioned resources persist and survive a restart.
Known limitations
- DNS query forwarding / filtering (data plane) — Route 53 Resolver's data plane is the actual resolution of VPC DNS queries at inbound/outbound endpoints and the enforcement of DNS Firewall rules against live queries. fakecloud implements the complete control plane (everything terraform-provider-aws and typical clients exercise), but it does not run a DNS forwarder that resolves or filters real traffic through resolver endpoints. Endpoints, rules, and firewall rules are stored and validated, not applied to a live query path. This is a future data-plane item; the control-plane behavior above is real and not stubbed.