Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

PHP(Laravel)からAkamaiのFastPurgeAPI v3を叩く

More than 1 year has passed since last update.

AkamaiのAPIのv1~v2のEOLが、2019年6月30日とのことで、これまでv2を利用していましたが、v3以降に移行する必要が出てきました。

v2のときは、APIの認証がcurlのヘッダにBasic認証情報を入れるだけで簡単に叩けるようになっていたのですが、v3(OPEN API)を使うためには、管理画面からAPIクライアントを登録して、認証情報を発行しなければいけません。

今回の記事では、Akamai Fast Purge API v3 をPHP(Laravel)から叩くようにするところまで記述したいと思います。

事前準備

まずはcredential情報をAkamaiの管理画面から発行しましょう。
https://developer.akamai.com/api/getting-started
こちらの公式ドキュメントの指示にしたがって、作業を行えば大丈夫です。

発行したcredential情報をコピーして、下記のような.edgercというファイルを作ったら、とりあえず準備は完了です。

 .edgerc
[default]
client_secret = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
host = xxxxx.luna.akamaiapis.net/
access_token = xxxxx
client_token = xxxxx

composerで必要なライブラリをインストール

$ composer require akamai-open/edgegrid-client

public/.edgercを配置する

https://github.com/akamai/AkamaiOPEN-edgegrid-php-client
こちらによると、.edgercはWebサーバのホームディレクトリか、カレントワーキングディレクトリに置いてねとのことなので、
Laravelのプロジェクトだとpublic/に置くのが良いかと思います。

PHP側の処理

use \Akamai\Open\EdgeGrid\Client as AkamaiApiClient;


    // キャッシュクリアしたいURLを配列で列挙
    $objects = [
        'http://example.com/hoge.png',
        'https://example.com/hogehoge.jpg'
    ];

    // APIクライアント呼び出し, createFromEdgeRcFileの引数に何も与えなければ.edgercの[default]の認証情報がセットされます。
    $client = AkamaiApiClient::createFromEdgeRcFile();

    // Fast Purge v3 API 呼び出し、キャッシュクリア
    $response = $client->request('POST', '/ccu/v3/delete/url', [
        'body' => json_encode(['objects' => $objects,]),
        'headers' => ['Content-Type' => 'application/json',],
        'proxy' =>  'http://example-proxy.jp:8080', // プロキシの設定が必要な場合のみこちらを記述
    ]);

    echo $response->getStatusCode();

objectにURLを詰め込みます。
headersには、'Content-Type' => 'application/json'を指定
proxyは設定の必要がなければ削除してしまって構いません。
getStatusCode()201が帰ってきていたら成功です。
以上になります。

参考にしたページなど

これ以外にも実装方法は複数ありますので、
別の実装を検討される方は公式のサンプルやドキュメントを参照されるのが良いかと思われます。
https://github.com/akamai/api-kickstart/blob/master/examples/php/ccu_v3.php
https://developer.akamai.com/api/core_features/fast_purge/v3.html#cd1e7257

kei2ro
Webエンジニア 2017卒 メイン言語 PHP, フレームワークはBEARとLaravelを触っています。 最近は自サービスのグロースのためにLINEとの連携施策を遂行中。 エンジニアリング以外に、ディレクション業務もやります。 ものづくり楽しい。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away