This library provides an implementation of FOSHttpCache for CloudFront.
First, create an instance of AsyncAws\CloudFront\CloudFrontClient
to allow the proxy to make requests.
See aws-sdk-php documentation
for more information.
use Aws\CloudFront\CloudFrontClient;
$client = new CloudFrontClient(/* client configuration */);
To instantiate the proxy, pass the CloudFront client and the AWS CloudFront distribution ID.
use JeanBeru\HttpCacheCloudFront\Proxy\CloudFront;
$proxy = new CloudFront(
client: $client,
options: [
'distribution_id' => 'XYZ1234657',
],
);
To invalidate /homepage
URL and all URLs matching the /assets/*
pattern on the "XYZ1234657" distribution.
$proxy
->purge('/homepage')
->purge('/assets/*')
// To send the purge request, flush() method must be called
->flush()
;
CloudFront APIs asks for a "caller reference" to avoid duplicated requests. By default, this library use the UniqIdCallerReferenceGenerator to generate a unique identifier.
You can use other generators present in the CallerReference folder or implement your own by implementing the CallerReferenceGenerator interface.
For instance, if you want to avoid duplicate calls in the same minute:
use JeanBeru\HttpCacheCloudFront\Proxy\CloudFront;
use JeanBeru\HttpCacheCloudFront\CallerReference\DateCallerReferenceGenerator;
$proxy = new CloudFront(
client: $client,
options: [
'distribution_id' => 'XYZ1234657',
'caller_reference_generator' => new DateCallerReferenceGenerator('YmdHi'),
],
);
If a duplication is detected by AWS, a FOS\HttpCache\Exception\ProxyResponseException
will be thrown.