overcast local AWS emulator

Service Reference

CloudFront — Amazon CloudFront

CloudFront uses a REST API with XML request/response bodies. All endpoints use the /2020-05-31 path prefix.

CloudFront — Amazon CloudFront

AWS docs: https://docs.aws.amazon.com/cloudfront/latest/APIReference/Welcome.html

CloudFront uses a REST API with XML request/response bodies. All endpoints use the /2020-05-31 path prefix.


Summary

Category✅ Supported⚠️ Partial🚧 WIP❌ Unsupported
Distributions7000
Invalidations3000
OAC / OAI11000
Tagging3000
Policies18000
Proxy1000
Functions8000
Keys & Crypto12000
Monitoring8000
FLE12000
Deployment6000

Distribution operations

OperationStatusNotes
CreateDistributionCallerReference idempotency; Status always “Deployed”
GetDistributionReturns ETag header
GetDistributionConfigReturns DistributionConfig portion + ETag
UpdateDistributionRequires If-Match ETag; bumps version
DeleteDistributionRequires If-Match + Enabled=false; cascade TODO
ListDistributionsMarker/MaxItems pagination via serviceutil.Paginate
CreateDistributionWithTagsCreates distribution + tags atomically; _custom_id_ tag support

Invalidation operations

OperationStatusNotes
CreateInvalidationSupports path and tag (#tag) invalidations; Status instantly “Completed”
GetInvalidationReturns invalidation by distribution + invalidation ID
ListInvalidationsMarker/MaxItems pagination

Origin Access Control operations

OperationStatusNotes
CreateOriginAccessControlGenerates ID, returns ETag
GetOriginAccessControlReturns OAC by ID with ETag
UpdateOriginAccessControlRequires If-Match ETag; bumps version
DeleteOriginAccessControlRequires If-Match ETag
ListOriginAccessControlsMarker/MaxItems pagination

Origin Access Identity (legacy) operations

OperationStatusNotes
CreateCloudFrontOriginAccessIdentityCallerReference required; generates S3CanonicalUserId
GetCloudFrontOriginAccessIdentityReturns OAI by ID with ETag
GetCloudFrontOriginAccessIdentityConfigReturns config portion + ETag
UpdateCloudFrontOriginAccessIdentityRequires If-Match ETag; bumps version
DeleteCloudFrontOriginAccessIdentityRequires If-Match ETag
ListCloudFrontOriginAccessIdentitiesMarker/MaxItems pagination

Tagging operations

OperationStatusNotes
ListTagsForResourceReturns tags by resource ARN
TagResourceMerges tags into existing set
UntagResourceRemoves specified tag keys

Cache Policy operations

OperationStatusNotes
CreateCachePolicyGenerates ID, returns ETag
GetCachePolicyReturns policy by ID with ETag
GetCachePolicyConfigReturns config portion + ETag
UpdateCachePolicyRequires If-Match ETag; bumps version
DeleteCachePolicyRequires If-Match ETag
ListCachePoliciesMarker/MaxItems pagination

Origin Request Policy operations

OperationStatusNotes
CreateOriginRequestPolicyGenerates ID, returns ETag
GetOriginRequestPolicyReturns policy by ID with ETag
GetOriginRequestPolicyConfigReturns config portion + ETag
UpdateOriginRequestPolicyRequires If-Match ETag; bumps version
DeleteOriginRequestPolicyRequires If-Match ETag
ListOriginRequestPoliciesMarker/MaxItems pagination

Response Headers Policy operations

OperationStatusNotes
CreateResponseHeadersPolicyGenerates ID, returns ETag
GetResponseHeadersPolicyReturns policy by ID with ETag
GetResponseHeadersPolicyConfigReturns config portion + ETag
UpdateResponseHeadersPolicyRequires If-Match ETag; bumps version
DeleteResponseHeadersPolicyRequires If-Match ETag
ListResponseHeadersPoliciesMarker/MaxItems pagination

Origin Proxy (emulator extension)

OperationStatusNotes
ProxyRequest/_overcast/cloudfront/distributions/{distId}/* — forwards to configured origins with path matching

The origin proxy is an emulator-only extension (not part of the real CloudFront API). It forwards HTTP requests through a distribution’s configured origins:

  • S3 origins are rewritten to the local emulator endpoint
  • Custom origins are forwarded to their configured domain
  • DefaultRootObject is applied for / requests
  • CacheBehavior path patterns are matched to select the correct origin
  • CloudFront response headers (X-Amz-Cf-Pop, X-Amz-Cf-Id, Via, X-Cache) are added

CloudFront Functions operations

OperationStatusNotes
CreateFunctionStores code + config; Stage=DEVELOPMENT; returns ETag
DescribeFunctionReturns FunctionSummary with metadata
GetFunctionReturns raw function code (base64) with ETag
UpdateFunctionRequires If-Match ETag; bumps version
DeleteFunctionRequires If-Match ETag
ListFunctionsFilters by Stage query param; MaxItems pagination
TestFunctionReturns mock success result (no JS execution)
PublishFunctionPromotes DEVELOPMENT → LIVE stage

Key Group & Public Key operations

OperationStatusNotes
CreateKeyGroupGenerates ID, returns ETag
GetKeyGroupReturns key group by ID with ETag
GetKeyGroupConfigReturns config portion + ETag
UpdateKeyGroupRequires If-Match ETag; bumps version
DeleteKeyGroupRequires If-Match ETag
ListKeyGroupsMaxItems pagination
CreatePublicKeyCallerReference dedup; generates ID + ETag
GetPublicKeyReturns public key by ID with ETag
GetPublicKeyConfigReturns config portion + ETag
UpdatePublicKeyRequires If-Match ETag; bumps version
DeletePublicKeyRequires If-Match ETag
ListPublicKeysMaxItems pagination

Monitoring & Realtime operations

OperationStatusNotes
CreateMonitoringSubscriptionPer-distribution; requires existing distribution
GetMonitoringSubscriptionReturns subscription by distribution ID
DeleteMonitoringSubscriptionRemoves subscription for distribution
CreateRealtimeLogConfigName-based; generates ARN; duplicate name check
GetRealtimeLogConfigLookup by Name or ARN in request body
UpdateRealtimeLogConfigUpdates by Name in request body
DeleteRealtimeLogConfigDeletes by Name or ARN in request body
ListRealtimeLogConfigsMaxItems pagination

Field-Level Encryption operations

OperationStatusNotes
CreateFieldLevelEncryptionConfigCallerReference required; generates ID
GetFieldLevelEncryptionReturns FLE config by ID with ETag
GetFieldLevelEncryptionConfigReturns config portion + ETag
UpdateFieldLevelEncryptionConfigRequires If-Match ETag; bumps version
DeleteFieldLevelEncryptionRequires If-Match ETag
ListFieldLevelEncryptionConfigsMaxItems pagination
CreateFieldLevelEncryptionProfileCallerReference required; generates ID
GetFieldLevelEncryptionProfileReturns FLE profile by ID with ETag
GetFieldLevelEncryptionProfileConfigReturns config portion + ETag
UpdateFieldLevelEncryptionProfileRequires If-Match ETag; bumps version
DeleteFieldLevelEncryptionProfileRequires If-Match ETag
ListFieldLevelEncryptionProfilesMaxItems pagination

Continuous Deployment Policy operations

OperationStatusNotes
CreateContinuousDeploymentPolicyGenerates ID, returns ETag
GetContinuousDeploymentPolicyReturns policy by ID with ETag
GetContinuousDeploymentPolicyConfigReturns config portion + ETag
UpdateContinuousDeploymentPolicyRequires If-Match ETag; bumps version
DeleteContinuousDeploymentPolicyRequires If-Match ETag
ListContinuousDeploymentPoliciesMaxItems pagination

Notes

  • Error responses use the XML format matching the real CloudFront API.
  • Distributions set Status: "Deployed" immediately — no async provisioning delay.
  • DomainName is synthetic: {id}.cloudfront.net (not routable).
  • ETag is a quoted version counter ("1", "2", etc.) — not a hash.
  • CallerReference idempotency: same ref + identical config returns existing distribution.
  • Delete requires Enabled: false + matching ETag (If-Match header).
  • Tag-based invalidation: paths prefixed with # (e.g. #product:electronics) invalidate cached objects by cache tag. Tags are parsed from the origin response header specified in CacheTagConfig.HeaderName and must be ASCII visible characters (33-126), max 256 chars, no spaces/commas. Path and tag invalidations can be mixed in a single batch.

Summary

Category✅ Supported
Distributions7
Invalidations3
OAC / OAI11
Tagging3
Policies18
Proxy1
Functions8
Keys & Crypto12
Monitoring8
FLE12
Deployment6

Endpoints

Distributions

OperationStatusNotesAWS Docs
CreateDistribution✅ SupportedCallerReference idempotency; Status always “Deployed”docs
GetDistribution✅ SupportedReturns ETag headerdocs
GetDistributionConfig✅ SupportedReturns DistributionConfig portion + ETagdocs
UpdateDistribution✅ SupportedRequires If-Match ETag; bumps versiondocs
DeleteDistribution✅ SupportedRequires If-Match + Enabled=falsedocs
ListDistributions✅ SupportedMarker/MaxItems pagination via serviceutil.Paginatedocs
CreateDistributionWithTags✅ SupportedCreates distribution + tags atomically; custom_id tag supportdocs

Invalidations

OperationStatusNotesAWS Docs
CreateInvalidation✅ SupportedSupports path and tag invalidations (#tag); Status instantly “Completed”docs
GetInvalidation✅ SupportedReturns invalidation by distribution + invalidation IDdocs
ListInvalidations✅ SupportedMarker/MaxItems paginationdocs

OAC / OAI

OperationStatusNotesAWS Docs
CreateOriginAccessControl✅ SupportedGenerates ID, returns ETagdocs
GetOriginAccessControl✅ SupportedReturns OAC by ID with ETagdocs
UpdateOriginAccessControl✅ SupportedRequires If-Match ETag; bumps versiondocs
DeleteOriginAccessControl✅ SupportedRequires If-Match ETagdocs
ListOriginAccessControls✅ SupportedMarker/MaxItems paginationdocs
CreateCloudFrontOriginAccessIdentity✅ SupportedCallerReference required; generates S3CanonicalUserIddocs
GetCloudFrontOriginAccessIdentity✅ SupportedReturns OAI by ID with ETagdocs
GetCloudFrontOriginAccessIdentityConfig✅ SupportedReturns config portion + ETagdocs
UpdateCloudFrontOriginAccessIdentity✅ SupportedRequires If-Match ETag; bumps versiondocs
DeleteCloudFrontOriginAccessIdentity✅ SupportedRequires If-Match ETagdocs
ListCloudFrontOriginAccessIdentities✅ SupportedMarker/MaxItems paginationdocs

Tagging

OperationStatusNotesAWS Docs
ListTagsForResource✅ SupportedReturns tags by resource ARNdocs
TagResource✅ SupportedMerges tags into existing setdocs
UntagResource✅ SupportedRemoves specified tag keysdocs

Policies

OperationStatusNotesAWS Docs
CreateCachePolicy✅ SupportedGenerates ID, returns ETagdocs
GetCachePolicy✅ SupportedReturns policy by ID with ETagdocs
GetCachePolicyConfig✅ SupportedReturns config portion + ETagdocs
UpdateCachePolicy✅ SupportedRequires If-Match ETag; bumps versiondocs
DeleteCachePolicy✅ SupportedRequires If-Match ETagdocs
ListCachePolicies✅ SupportedMarker/MaxItems paginationdocs
CreateOriginRequestPolicy✅ SupportedGenerates ID, returns ETagdocs
GetOriginRequestPolicy✅ SupportedReturns policy by ID with ETagdocs
GetOriginRequestPolicyConfig✅ SupportedReturns config portion + ETagdocs
UpdateOriginRequestPolicy✅ SupportedRequires If-Match ETag; bumps versiondocs
DeleteOriginRequestPolicy✅ SupportedRequires If-Match ETagdocs
ListOriginRequestPolicies✅ SupportedMarker/MaxItems paginationdocs
CreateResponseHeadersPolicy✅ SupportedGenerates ID, returns ETagdocs
GetResponseHeadersPolicy✅ SupportedReturns policy by ID with ETagdocs
GetResponseHeadersPolicyConfig✅ SupportedReturns config portion + ETagdocs
UpdateResponseHeadersPolicy✅ SupportedRequires If-Match ETag; bumps versiondocs
DeleteResponseHeadersPolicy✅ SupportedRequires If-Match ETagdocs
ListResponseHeadersPolicies✅ SupportedMarker/MaxItems paginationdocs

Proxy

OperationStatusNotesAWS Docs
ProxyRequest✅ SupportedEmulator extension: forwards to configured origins with path matchingdocs

Functions

OperationStatusNotesAWS Docs
CreateFunction✅ SupportedStores code + config; Stage=DEVELOPMENT; returns ETagdocs
DescribeFunction✅ SupportedReturns FunctionSummary with metadatadocs
GetFunction✅ SupportedReturns raw function code (base64) with ETagdocs
UpdateFunction✅ SupportedRequires If-Match ETag; bumps versiondocs
DeleteFunction✅ SupportedRequires If-Match ETagdocs
ListFunctions✅ SupportedFilters by Stage query param; MaxItems paginationdocs
TestFunction✅ SupportedReturns mock success result (no JS execution)docs
PublishFunction✅ SupportedPromotes DEVELOPMENT → LIVE stagedocs

Keys & Crypto

OperationStatusNotesAWS Docs
CreateKeyGroup✅ SupportedGenerates ID, returns ETagdocs
GetKeyGroup✅ SupportedReturns key group by ID with ETagdocs
GetKeyGroupConfig✅ SupportedReturns config portion + ETagdocs
UpdateKeyGroup✅ SupportedRequires If-Match ETag; bumps versiondocs
DeleteKeyGroup✅ SupportedRequires If-Match ETagdocs
ListKeyGroups✅ SupportedMaxItems paginationdocs
CreatePublicKey✅ SupportedCallerReference dedup; generates ID + ETagdocs
GetPublicKey✅ SupportedReturns public key by ID with ETagdocs
GetPublicKeyConfig✅ SupportedReturns config portion + ETagdocs
UpdatePublicKey✅ SupportedRequires If-Match ETag; bumps versiondocs
DeletePublicKey✅ SupportedRequires If-Match ETagdocs
ListPublicKeys✅ SupportedMaxItems paginationdocs

Monitoring

OperationStatusNotesAWS Docs
CreateMonitoringSubscription✅ SupportedPer-distribution; requires existing distributiondocs
GetMonitoringSubscription✅ SupportedReturns subscription by distribution IDdocs
DeleteMonitoringSubscription✅ SupportedRemoves subscription for distributiondocs
CreateRealtimeLogConfig✅ SupportedName-based; generates ARN; duplicate name checkdocs
GetRealtimeLogConfig✅ SupportedLookup by Name or ARN in request bodydocs
UpdateRealtimeLogConfig✅ SupportedUpdates by Name in request bodydocs
DeleteRealtimeLogConfig✅ SupportedDeletes by Name or ARN in request bodydocs
ListRealtimeLogConfigs✅ SupportedMaxItems paginationdocs

FLE

OperationStatusNotesAWS Docs
CreateFieldLevelEncryptionConfig✅ SupportedCallerReference required; generates IDdocs
GetFieldLevelEncryption✅ SupportedReturns FLE config by ID with ETagdocs
GetFieldLevelEncryptionConfig✅ SupportedReturns config portion + ETagdocs
UpdateFieldLevelEncryptionConfig✅ SupportedRequires If-Match ETag; bumps versiondocs
DeleteFieldLevelEncryption✅ SupportedRequires If-Match ETagdocs
ListFieldLevelEncryptionConfigs✅ SupportedMaxItems paginationdocs
CreateFieldLevelEncryptionProfile✅ SupportedCallerReference required; generates IDdocs
GetFieldLevelEncryptionProfile✅ SupportedReturns FLE profile by ID with ETagdocs
GetFieldLevelEncryptionProfileConfig✅ SupportedReturns config portion + ETagdocs
UpdateFieldLevelEncryptionProfile✅ SupportedRequires If-Match ETag; bumps versiondocs
DeleteFieldLevelEncryptionProfile✅ SupportedRequires If-Match ETagdocs
ListFieldLevelEncryptionProfiles✅ SupportedMaxItems paginationdocs

Deployment

OperationStatusNotesAWS Docs
CreateContinuousDeploymentPolicy✅ SupportedGenerates ID, returns ETagdocs
GetContinuousDeploymentPolicy✅ SupportedReturns policy by ID with ETagdocs
GetContinuousDeploymentPolicyConfig✅ SupportedReturns config portion + ETagdocs
UpdateContinuousDeploymentPolicy✅ SupportedRequires If-Match ETag; bumps versiondocs
DeleteContinuousDeploymentPolicy✅ SupportedRequires If-Match ETagdocs
ListContinuousDeploymentPolicies✅ SupportedMaxItems paginationdocs