CloudFront API と AWS SDK for PHP バージョン 3 を使用した Amazon CloudFront の無効化の管理 - AWS SDK for PHP

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

CloudFront API と AWS SDK for PHP バージョン 3 を使用した Amazon CloudFront の無効化の管理

Amazon は、世界中のエッジロケーションに静的ファイルと動的ファイルのコピーを CloudFront キャッシュします。すべてのエッジロケーションでファイルを削除または更新するには、各ファイルまたはファイルのグループに対して無効化を作成します。

毎月最初の 1,000 件の無効化は無料です。 CloudFront エッジロケーションからコンテンツを削除する方法の詳細については、「ファイルの無効化」を参照してください。

以下の例では、次の方法を示しています。

  • を使用してディストリビューションの無効化を作成しますCreateInvalidation

  • を使用してディストリビューションの無効化を取得しますGetInvalidation

  • を使用してディストリビューションを一覧表示しますListInvalidations

のすべてのサンプルコードAWS SDK for PHPは、 にあります GitHub

認証情報

サンプルコードを実行する前に、AWS の認証情報を設定します (認証情報 を参照)。AWS SDK for PHP からのインポート (基本的な使用法 を参照)。

Amazon の使用の詳細については CloudFront、「Amazon CloudFront デベロッパーガイド」を参照してください。

ディストリビューションの無効化の作成

削除する必要があるファイルのパスの場所を指定して、 CloudFront ディストリビューションの無効化を作成します。この例では、ディストリビューション内のすべてのファイルが無効になりますが、Items で特定のファイルを識別できます。

CloudFront ディストリビューションの無効化を作成するには、 CreateInvalidationオペレーションを使用します。

インポート

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

サンプルコード

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();

ディストリビューションの無効化の取得

CloudFront ディストリビューションの無効化に関するステータスと詳細を取得するには、 GetInvalidationオペレーションを使用します。

インポート

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

サンプルコード

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();

ディストリビューションの無効化のリスト表示

現在の CloudFront ディストリビューションの無効化をすべて一覧表示するには、 ListInvalidationsオペレーションを使用します。

インポート

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

サンプルコード

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();