Gestión de las CloudFront invalidaciones de Amazon mediante la CloudFront API y la versión 3 AWS SDK for PHP - AWS SDK for PHP

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Gestión de las CloudFront invalidaciones de Amazon mediante la CloudFront API y la versión 3 AWS SDK for PHP

Amazon almacena en CloudFront caché copias de archivos estáticos y dinámicos en ubicaciones periféricas de todo el mundo. Para eliminar o actualizar un archivo en todas las ubicaciones de borde, cree una invalidación para cada archivo o para un grupo de archivos.

Cada mes, sus primeras 1000 invalidaciones son gratuitas. Para obtener más información sobre cómo eliminar contenido de una ubicación CloudFront perimetral, consulte Invalidar archivos.

Los siguientes ejemplos muestran cómo:

Todo el código de ejemplo para el AWS SDK for PHP está disponible aquí en GitHub.

Credenciales

Antes de ejecutar el código de ejemplo, configure sus credenciales de AWS, como se indica en Credentials. A continuación, importe AWS SDK for PHP, como se indica en Uso básico.

Para obtener más información sobre el uso de Amazon CloudFront, consulta la Guía para CloudFront desarrolladores de Amazon.

Creación de una invalidación de una distribución

Crea una invalidación de CloudFront distribución especificando la ubicación de la ruta de los archivos que necesitas eliminar. Este ejemplo invalida todos los archivos de la distribución, pero puede identificar archivos específicos en Items.

Para crear una invalidación CloudFront de distribución, utilice la CreateInvalidationoperación.

Importaciones

require 'vendor/autoload.php'; use Aws\Exception\AwsException;

Código de muestra

function createInvalidation( $cloudFrontClient, $distributionId, $callerReference, $paths, $quantity ) { try { $result = $cloudFrontClient->createInvalidation([ 'DistributionId' => $distributionId, 'InvalidationBatch' => [ 'CallerReference' => $callerReference, 'Paths' => [ 'Items' => $paths, 'Quantity' => $quantity, ], ] ]); $message = ''; if (isset($result['Location'])) { $message = 'The invalidation location is: ' . $result['Location']; } $message .= ' and the effective URI is ' . $result['@metadata']['effectiveUri'] . '.'; return $message; } catch (AwsException $e) { return 'Error: ' . $e->getAwsErrorMessage(); } } function createTheInvalidation() { $distributionId = 'E17G7YNEXAMPLE'; $callerReference = 'my-unique-value'; $paths = ['/*']; $quantity = 1; $cloudFrontClient = new Aws\CloudFront\CloudFrontClient([ 'profile' => 'default', 'version' => '2018-06-18', 'region' => 'us-east-1' ]); echo createInvalidation( $cloudFrontClient, $distributionId, $callerReference, $paths, $quantity ); } // Uncomment the following line to run this code in an AWS account. // createTheInvalidation();

Obtención de una invalidación de una distribución

Para recuperar el estado y los detalles de una invalidación CloudFront de distribución, utilice la GetInvalidationoperación.

Importaciones

require 'vendor/autoload.php'; use Aws\Exception\AwsException;

Código de muestra

function getInvalidation($cloudFrontClient, $distributionId, $invalidationId) { try { $result = $cloudFrontClient->getInvalidation([ 'DistributionId' => $distributionId, 'Id' => $invalidationId, ]); $message = ''; if (isset($result['Invalidation']['Status'])) { $message = 'The status for the invalidation with the ID of ' . $result['Invalidation']['Id'] . ' is ' . $result['Invalidation']['Status']; } if (isset($result['@metadata']['effectiveUri'])) { $message .= ', and the effective URI is ' . $result['@metadata']['effectiveUri'] . '.'; } else { $message = 'Error: Could not get information about ' . 'the invalidation. The invalidation\'s status ' . 'was not available.'; } return $message; } catch (AwsException $e) { return 'Error: ' . $e->getAwsErrorMessage(); } } function getsAnInvalidation() { $distributionId = 'E1BTGP2EXAMPLE'; $invalidationId = 'I1CDEZZEXAMPLE'; $cloudFrontClient = new Aws\CloudFront\CloudFrontClient([ 'profile' => 'default', 'version' => '2018-06-18', 'region' => 'us-east-1' ]); echo getInvalidation($cloudFrontClient, $distributionId, $invalidationId); } // Uncomment the following line to run this code in an AWS account. // getsAnInvalidation();

Listado de las invalidaciones de una distribución

Para enumerar todas las invalidaciones CloudFront de distribución actuales, utilice la operación. ListInvalidations

Importaciones

require 'vendor/autoload.php'; use Aws\Exception\AwsException;

Código de muestra

function listInvalidations($cloudFrontClient, $distributionId) { try { $result = $cloudFrontClient->listInvalidations([ 'DistributionId' => $distributionId ]); return $result; } catch (AwsException $e) { exit('Error: ' . $e->getAwsErrorMessage()); } } function listTheInvalidations() { $distributionId = 'E1WICG1EXAMPLE'; $cloudFrontClient = new Aws\CloudFront\CloudFrontClient([ 'profile' => 'default', 'version' => '2018-06-18', 'region' => 'us-east-1' ]); $invalidations = listInvalidations( $cloudFrontClient, $distributionId ); if (isset($invalidations['InvalidationList'])) { if ($invalidations['InvalidationList']['Quantity'] > 0) { foreach ($invalidations['InvalidationList']['Items'] as $invalidation) { echo 'The invalidation with the ID of ' . $invalidation['Id'] . ' has the status of ' . $invalidation['Status'] . '.' . "\n"; } } else { echo 'Could not find any invalidations for the specified distribution.'; } } else { echo 'Error: Could not get invalidation information. Could not get ' . 'information about the specified distribution.'; } } // Uncomment the following line to run this code in an AWS account. // listTheInvalidations();