share facebook facebook twitter menu hatena pocket slack

2011.04.20 WED

PHPでCloudFrontのInvalidation(CDNのキャッシュクリア)

鈴木 宏康

WRITTEN BY 鈴木 宏康

PHPでキャッシュクリア(Invalidation)をしたい場合、下記のプログラムにて、CDN(Distribution)のIDを探します。

——–【PHP】——–

require_once("./sdk.class.php");
$cf = new AmazonCloudFront();
$response = $cf->list_distributions();
var_dump($response);

次に、Distribution ID(XXXXXXXXXXXXXX)に対して、指定したパス(“/index1.txt”, “/index2.txt”)のキャッシュクリア(Invalidation)を下記のプログラムで行います。

——–【PHP】——–

require_once("./sdk.class.php");
$cf = new AmazonCloudFront();
$response = $cf->create_invalidation("XXXXXXXXXXXXXX", time(), array(
    "/index1.txt",
    "/index2.txt"
));
var_dump($response);

最後にDistribution ID(XXXXXXXXXXXXXX)と上記の実行結果のInvalidation ID(YYYYYYYYYYYYYY)を指定して、キャッシュクリア(Invalidation)の状況を下記のプログラムで確認します。

——–【PHP】——–

require_once("./sdk.class.php");
$cf = new AmazonCloudFront();
$response = $cf->get_invalidation("XXXXXXXXXXXXXX", "YYYYYYYYYYYYYY");
var_dump($response);

そしてIAMユーザーの場合に、これらのプログラムを実行するには、下記アクションを許可するポリシーを与える必要があります。

cloudfront:ListDistributions
cloudfront:CreateInvalidation
cloudfront:GetInvalidation

ポリシーの付与は、以下のようなコマンド(IAM Command Line Toolkit)で実現できます。

# ./iam-groupaddpolicy --aws-credential-file credentials.txt 
> -a cloudfront:ListDistributions 
> -e Allow 
> -g suz-lab 
> -p policy1 
> -r "*"

# ./iam-groupaddpolicy --aws-credential-file credentials.txt 
> -a cloudfront:CreateInvalidation 
> -e Allow 
> -g suz-lab 
> -p policy2 
> -r "*"

# ./iam-groupaddpolicy --aws-credential-file credentials.txt 
> -a cloudfront:GetInvalidation 
> -e Allow 
> -g suz-lab 
> -p policy3 
> -r "*"

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。