This is a simple PHP service for making it easy include the official AWS SDK for PHP in your PHP applications.
It's helps you to sign your files or resources.
Jump To:
The PHP Service can be installed via Composer by requiring the
rc4347/cloudfront-signer
package in your project's composer.json
.
{
"require": {
"rc4347/cloudfront-signer": "^0.0.4"
}
}
use RC4347\CloudFrontSigner\credentials\AccessConfig;
use RC4347\CloudFrontSigner\credentials\ClientConfig;
use RC4347\CloudFrontSigner\credentials\ExpireConfig;
use RC4347\CloudFrontSigner\SignedUrlService;
# configuration
$client = new ClientConfig('latest', 'default', '<YOUR_S3_REGION>');
$expire = time() + 300; # returns 5 minutes
$access = new AccessConfig('<YOUR_PRIVATE_KEY>', '<YOUR_S3_KEY_PAIR_ID>'); # private key can get file or string
$resourceKey = 'https://<YOUR_ID>.cloudfront.net/example/example.png';
$config = new ExpireConfig($resourceKey, $expire);
# Execution
/**
* @returns string "https://<YOUR_ID>.cloudfront.net/example/example.png?Expires=<EXPIRES>&Signature=<SIGNATURE>&Key-Pair-Id=<YOUR_S3_KEY_PAIR_ID>"
*/
$urlService = new SignedUrlService($config, $client, $access);
return $urlService->run();
/**
* if policy param is empty it will be get default policy.
* @returns array|string [
"CloudFront-Policy": <GENERATED_POLICY>,
"CloudFront-Signature": <SIGNATURE>,
"CloudFront-Key-Pair-Id": <YOUR_S3_KEY_PAIR_ID>
]
*/
$policy = <<<POLICY
{
"Statement": [
{
"Resource": "{$this->config->resourceKey}",
"Condition": {
"DateLessThan": {"AWS:EpochTime": {$this->config->expires}}
}
}
]
}
POLICY;
$cookieService = new SignedCookieService($config, $client, $access, $policy) # policy is optional
return $cookieService->run();
For more information: