Alibaba Cloud CDNは、オリジンサーバーからファイルやディレクトリなどのコンテンツをバッチで自動的にパージおよびプリフェッチするために使用できるスクリプトを提供しています。 手動操作と比較して、スクリプトはプロセスを大幅に簡素化します。 このトピックでは、Pythonスクリプトの使用方法について説明します。 この例では、Windowsオペレーティングシステムが使用されています。
概要
パージまたはプリフェッチするURLを含むファイルを指定した後、スクリプトは同時パージまたはプリフェッチタスクの数に基づいてファイルを分割します。 次いで、URLはバッチでパージまたはプリフェッチされる。 スクリプトは、パージまたはプリフェッチタスクが完了したかどうかを自動的に検出します。 次のパージまたはプリフェッチタスクは、現在のタスクが終了するまで開始されない。 次の項目は、この機能の仕組みを示しています。
URLをバッチで処理する: URLリストに100個のURLがあり、バッチごとに最大10個のURLを設定した場合、スクリプトはURLリストを10個のバッチに分割し、それぞれに10個のURLが含まれます。 より大きいまたは小さい同時実行値を設定すると、それに応じてバッチのサイズが変更されます。 たとえば、20個のURLを同時に処理できるように設定した場合、スクリプトは100のURLを5つのバッチに分割し、それぞれに20個のURLが含まれます。
バッチによるタスクの実行: スクリプトを実行すると、スクリプトはバッチごとに順番にパージまたはプリフェッチ要求を送信します。 各バッチのタスクは同時に実行されます。
現在のバッチが完了した後にのみ、タスクの次のバッチに進みます。バッチ内のパージまたはプリフェッチタスクが完了した後、スクリプトは次のバッチのタスクを実行し続けます。 このプロセスは、手動の介入なしに自動的に実行されます。
シナリオ
次のシナリオでは、スクリプトを使用することを推奨します。
開発者がいないため、パージおよびプリフェッチ操作は手動で実行されます。 運用とメンテナンス (O&M) のコストは高くなります。
パージまたはプリフェッチされるURLの数が多い。 バッチタスクは効率を低下させます。
パージタスクとプリフェッチタスクが期待どおりに実行されるかどうかは手動でチェックする必要があり、大量のリソースと時間を消費します。
制限事項
オペレーティングシステムのPythonバージョンは3.xである必要があります。 python -- version
またはpython3 -- version
コマンドを実行して、Pythonバージョンが要件を満たしているかどうかを確認できます。
あなたが始める前に
Resource Access Management (RAM) ユーザーのAccessKeyペアを作成します。 Alibaba Cloudアカウントには、リソースに対するすべての権限があります。 Alibaba CloudアカウントのAccessKeyペアが漏洩した場合、リソースは大きなリスクにさらされます。 RAM ユーザーの AccessKey ペアを使用することを推奨します。 AccessKeyペアの取得方法については、「AccessKeyペアの作成」をご参照ください。
RAMユーザーにドメイン名リソースに対する権限を付与します。 この例では、AliyunDomainFullAccessシステムポリシーがRAMユーザーにアタッチされています。
システムポリシーを使用します。
AliyunCDNFullAccess: Alibaba Cloud CDNリソースへのフルアクセスを許可します。
カスタムポリシーを使用します。
カスタムポリシーの作成方法の詳細については、「カスタムポリシーの作成」をご参照ください。.
環境変数でAccessKeyペアを設定します。 詳細については、「Linux、macOS、およびWindowsでの環境変数の設定」をご参照ください。
ステップ1: 依存関係のインストール
次のコマンドを実行して、Alibaba Cloud CDN SDK for Pythonをインストールします。 現在のバージョンはv20180510です。
pip install aliyun-python-sdk-cdn
次のコマンドを実行して、Alibaba Cloud SDK for Pythonのコアライブラリをインストールします。 現在のバージョンは2.6.0です。
pip install aliyun-python-sdk-core
ステップ2: URLリストファイルを準備する
urllist.txt
など、パージまたはプリフェッチするURLのリストを含むファイルを作成します。 1行に1つのURLを入力します。 各URLがhttp://
またはhttps://
で始まり、有効な形式であることを確認します。 サンプル内容:
http://example.com/file1.jpg
http://example.com/file2.jpg
http://example.com/file3.jpg
...
http://example.com/fileN.jpg
ステップ3: スクリプトの作成
次のコードをスクリプトとして保存し、Refresh.py
という名前を付けます。 このファイル名は一例です。 スクリプトのカスタム名を指定できます。
スクリプトサンプルコード
コード実行プロセス
gop
(100) で指定した数でファイルをバッチに分割します。各バッチのURLを順番に処理します。
現在のバッチが完了したら、次のバッチに進みます。
gop
変数を設定することで、各バッチのサイズを変更できます。
ヘルプ情報の表示
スクリプトを作成したら、コマンドプロンプト、PowerShell、Terminalなどのコマンドラインインターフェイス (CLI) でpython $script -h
を実行して、Pythonスクリプトのコマンドラインヘルプ情報を照会して表示できます。
ほとんどの場合、$script
はPythonスクリプトのファイル名を指定する変数です。 たとえば、スクリプトのファイル名がRefresh.py
の場合、python Refresh.py -h
コマンドを実行できます。
CLIで、コマンドプロンプト、PowerShell、ターミナルなどの次のコマンドを実行します。 スクリプトには、スクリプトの使用方法とパラメーターに関するヘルプ情報が表示されます。
python Refresh.py -h
コマンドを実行すると、次の内容が返されます。
script options explain:
-i <AccessKey> //The AccessKey ID that is used to log on to Alibaba Cloud. You can view your AccessKey pair in the Alibaba Cloud Management Console.
-i <AccessKey> //The AccessKey secret that is used to log on to Alibaba Cloud. You can view your AccessKey pair in the Alibaba Cloud Management Console.
-r <filename> //The file path and file name. After the script is executed, the script reads the URLs in the file. Each line contains only one URL. Encode URLs that contain special characters. The encoded URLs must start with http or https.
-t <taskType> //The type of the task. Set the value to clear to create a purge task. Set the value to push to create a prefetch task.
-a [String,<domestic|overseas> //Optional. regions in which the content will be prefetched. The default value is overseas.
domestic //Chinese mainland only.
overseas //Global (excluding the Chinese mainland).
-o [String,<File|Directory>] Optional. The type of the resource to be purged.
File //File (default value).
Directory //Directory.
ステップ4: スクリプトの実行
CLIで、コマンドプロンプト、PowerShell、ターミナルなどの次のコマンドを実行します。
python Refresh.py -i <YourAccessKey> -k <YourAccessKeySecret> -r <PathToUrlFile> -t <TaskType>
<YourAccessKey>
: Alibaba CloudアカウントのAccessKey ID。
<YourAccessKeySecret>
: Alibaba CloudアカウントのAccessKeyシークレット。
<PathToUrlFile>
: URLのリストを含むファイルへのパス。 例: urllist.txt
<TaskType>
: タスクタイプ。 有効な値: clear
(パージ) とpush
(プリフェッチ) 。
サンプルコマンド
AccessKey IDが
yourAccessKey
、AccessKeyシークレットがyourAccessKeySecret
、URLリストファイルがurllist.txt
、URLリストファイルとRefresh.py
スクリプトが同じディレクトリにあり、タスクタイプがclear
(パージ) であるとします。 CLIで、コマンドプロンプト、PowerShell、ターミナルなどの次のコマンドを実行します。python Refresh.py -i yourAccessKey -k yourAccessKeySecret -r urllist.txt -t clear
URLリストファイルが別のディレクトリ (
D:\example\filename\urllist.txt
など) にある場合は、CLIで次のコマンド (コマンドプロンプト、PowerShell、ターミナルなど) を実行します。python Refresh.py -i yourAccessKey -k yourAccessKeySecret -r D:\example\filename\urllist.txt -t clear
サンプル出力:
python Refresh.py -i yourAccessKey -k yourAccessKeySecret -r urllist.txt -t clear
{'RequestId': 'C1686DCA-F3B5-5575-ADD1-05F96617D770', 'RefreshTaskId': '18392588710'}
[18392588710] is doing... ...
{'RequestId': '5BEAD371-9D82-5DA5-BE60-58EC2C915E82', 'RefreshTaskId': '18392588804'}
[18392588804] is doing... ...
{'RequestId': 'BD0B3D22-66CF-5B1D-A995-D912A5EA8E2F', 'RefreshTaskId': '18392588804'}
[18392588804] is doing... ...
[18392588804] is doing... ...
[18392588804] is doing... ...