[Fastly] 最近追加された機能とかツールとか


ACL をコントロールパネルから編集できるようになった

VCL のバージョンにコメントを書くことができるようになった

これは私も愛用している機能の1つですが、VCLのバージョンを新たに clone した際に任意のコメントを付けることができます。
このバージョンでは何が変更されたのか、簡易コメントを残しておくことで急なロールバックの際などに管理がしやすくなります。

VCL に UTF-8 文字を直接記述可能になった

今まで直接書くことができませんでしたが、今は普通に書くことができます。
コメントに日本語を使うのはもちろん、カスタムレスポンス のデータに日本語をそのまま書いたりもできますね。絵文字も

UUID 関数が追加された

これまでは UUID を生成するための専用の関数がなく、下記の Community 投稿で紹介されているように randomstr() を使って無理やり生成するワークアラウンドがかろうじて存在していました。
https://community.fastly.com/t/unique-request-identifier/468

が、現在は UUID version 3/4/5 に対応する UUID 生成用の関数がそれぞれ新たに追加されました。
例えば UUID version4 であれば、下記のように簡単に生成することができます。


set req.http.uuidv4 = uuid.version4();

またこれまでのワークアラウンドで利用されていた randomstr() 関数は下記のドキュメントにも記載がある通り、GNU C Library の BSD random number functions を使っていたため、セキュリティを目的とした用途には非推奨でしたが、新たに追加された UUID 関数は crypto-safe な PRNG を新たに採用しているため、より安全に使うことができます。

randomint() 関数が追加された

詳しくは下記のサンプルをどうぞ。
https://fiddle.fastlydemo.net/fiddle/7b58463a

json.escape() 関数が追加された

デモ: https://fiddle.fastlydemo.net/fiddle/7d26f5e4
↑のデモで RUN をクリックすると下記の結果が表示されると思います。

input: あいうえお-\a"
cstr_escape(): \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a-\\a\"
json.escape(): あいうえお-\\a\"

見てわかるように、cstr_escape() ではマルチバイト文字も一緒にエスケープされてしまい、例えば \x はそのままではJSON-safeなデータではないため、結果として特にVCL内でログデータを生成・整形する場合に問題になることがありました。(ログの送信先endpointがJSONエラーでログを受け付けないなど)
新しい json.escape() を使うことでこの問題を回避し、JSON-safeな文字列を生成することができます。

VCL Fiddle

VCLのテストやデバッグをする際に使うことができるツールです。Fastlyのエンジニアが開発しており、日々機能追加・改善がされています。
詳細な使い方を説明するドキュメントがなく、とはいえこの記事ではとても説明しきれないため詳細は割愛させていただきますが、わざわざ実際のFastlyサービスを使ってバージョンを更新しながら細かな検証を行うのが面倒くさい!といった時には是非使ってみてください。
VCL構文のオートコンプリートなどもサポートしているので、こんな関数あったかな?といった時でも気軽に探すことができますし、こんなことってVCLでできたっけ?といった際に誰でも気軽に使うことができます。

Fastlyが毎年行っている技術イベント、Altitude で行われたFiddleのワークショップの様子がVimeoでも公開されています。英語にはなりますが、使い方の詳細な説明などもされているので、興味があるかたは下記の動画を是非見てみてください。