Skip to content

CloudFront

CloudMock emulates Amazon CloudFront, supporting distribution management, cache invalidation, and tagging.

OperationStatusNotes
CreateDistributionSupportedCreates a CloudFront distribution
GetDistributionSupportedReturns distribution details
ListDistributionsSupportedLists all distributions
UpdateDistributionSupportedUpdates distribution configuration
DeleteDistributionSupportedDeletes a distribution
CreateInvalidationSupportedCreates a cache invalidation
GetInvalidationSupportedReturns invalidation details
ListInvalidationsSupportedLists invalidations for a distribution
TagResourceSupportedAdds tags to a distribution
UntagResourceSupportedRemoves tags from a distribution
ListTagsForResourceSupportedLists tags for a distribution
import { CloudFrontClient, CreateDistributionCommand } from '@aws-sdk/client-cloudfront';
const client = new CloudFrontClient({
endpoint: 'http://localhost:4566',
region: 'us-east-1',
credentials: { accessKeyId: 'test', secretAccessKey: 'test' },
});
const { Distribution } = await client.send(new CreateDistributionCommand({
DistributionConfig: {
CallerReference: 'unique-ref',
Origins: { Quantity: 1, Items: [{ Id: 'myS3Origin', DomainName: 'my-bucket.s3.amazonaws.com' }] },
DefaultCacheBehavior: { TargetOriginId: 'myS3Origin', ViewerProtocolPolicy: 'redirect-to-https' },
Enabled: true,
Comment: 'My distribution',
},
}));
console.log(Distribution.Id);
import boto3
client = boto3.client('cloudfront',
endpoint_url='http://localhost:4566',
region_name='us-east-1',
aws_access_key_id='test',
aws_secret_access_key='test')
response = client.create_distribution(DistributionConfig={
'CallerReference': 'unique-ref',
'Origins': {'Quantity': 1, 'Items': [{'Id': 'myS3Origin', 'DomainName': 'my-bucket.s3.amazonaws.com'}]},
'DefaultCacheBehavior': {'TargetOriginId': 'myS3Origin', 'ViewerProtocolPolicy': 'redirect-to-https'},
'Enabled': True,
'Comment': 'My distribution',
})
print(response['Distribution']['Id'])
cloudmock.yml
services:
cloudfront:
enabled: true
  • Distributions do not serve actual content
  • Invalidations are recorded but do not affect any cache
  • Domain names are generated but do not resolve