[アップデート] Amazon CloudFront オリジンカスタム設定に Response completion timeout が追加され、さらに S3 オリジンでも Response timeout が適用されるようになりました
いわさです。
先日 Amazon CloudFront にアップデートがあり、タイムアウト関連の設定で色々と設定できるようになっています。
Amazon CloudFront では、CloudFront からオリジンへのタイムアウトや接続試行数などをカスタマイズすることが出来ます。
従来、オリジンから CloudFront へレスポンスが返されるまでの「レスポンスタイムアウト」設定をカスタマイズ出来たのですが、VPC オリジンやカスタムオリジンで使うことが出来ていました。
まず今回のアップデートで Amazon S3 もレスポンスタイムアウトがカスタマイズできるようになりました。
従来はデフォルトの 30 秒だったのですが、最大の 60 秒まで調整できるようになりました。
また、オリジンカスタム設定に新たに「Response completion timeout(レスポンス完了タイムアウト)」が追加されました。
今回の設定は開始から終了までの合計時間を測定するタイムアウト時間になります。
従来のレスポンスタイムアウトはオリジンへ接続後にリクエストを待機できる時間となっており、接続試行回数や接続タイムアウト設定によっては全体時間はレスポンスタイムアウト以上になる場合がありましたが、今回の設定を使うことで完了までの合計タイムアウト時間を厳格に調整できるようになりました。
これによって応答性の低いオリジンを早めにタイムアウトさせてエラー処理させたい場合などに使うことが出来ます。
今回測定までは行っていないのですが、新しい設定方法を確認してみたのでその様子を紹介します。
S3 のレスポンスタイムアウトの設定
ディストリビューション新規作成時のオリジン設定、あるいは既存オリジンに対する編集時に以下でカスタム設定を選択します。
レスポンスタイムアウトは以下から設定が出来ます。
従来も S3 オリジンの場合でも指定は出来たと記憶していますが、ラベルには「カスタムオリジンでのみ適用される」という旨の注意書きがあったと思います。
こちらが今回のアップデートで S3 オリジンにも適用されるようになりました。
デフォルトの 30 秒から最大 60 秒まで増やせるようになりましたが、大きすぎるオリジンオブジェクトでも処理できるケースが増えそうです。
レスポンス完了タイムアウト
レスポンス完了タイムアウトについてはカスタム設定の中でもさらにデフォルトは無効になっていて、以下から設定が可能です。
有効化すると待機秒数を指定できます。
デフォルトは、Enable トグルボタンを押した時点でのコネクションタイムアウト値とレスポンスタイムアウト値を足した秒数となっています。
こちら上限が特になく設定できるようですが、用途としては接続試行数・コネクションタイムアウト・レスポンスタイムアウトの設定と状況によって不安定になる全体のタイムアウト時間に上限を設けてコントロールする用途になるので、レスポンス完了タイムアウトだけを延長してもあまり意味はありません。
接続試行数が上限 3、コネクションタイムアウトが上限 10、レスポンスタイムアウトが上限 60 なので、どんなに上限をあげても最大 90 秒くらいでタイムアウトエラーにはなりそうですね。
さいごに
本日は Amazon CloudFront オリジンカスタム設定に Response completion timeout が追加され、S3 オリジンでも Response timeout が有効になったので、従来との設定方法の違いなどを調べてみました。
私はあまり経験がなかったのですが、接続が不安定なオリジンなどの場合に全体タイムアウト時間が不安定になったりするのは確かになと思いました。
厳格にコントロールしたい時に使う感じですね。
S3 レスポンスタイムアウトは従来の 30 秒より 60 秒に増やしたり、クライアント側でエラー処理したいから早めにタイムアウト返したいという時に使えるので、これはシンプルに嬉しい方多そうですね。