CloudFrontにてオリジンサーバーからのレスポンスコードをベースにキャッシュ制御やリダイレクトしたいのですが可能かについて

オリジンサーバーからのレスポンスコードを参照して、キャッシュする/しないを制御することは可能でしょうか? オリジンサーバーからのレスポンスコードが期待したものでは無い場合に、特定のURLにリダイレクトをかけるような設定は可能でしょうか? こちらに関する解決策を記載します。
2020.11.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コンニチハ、千葉です。

困っていたこと

オリジンサーバーからのレスポンスコードを参照して、キャッシュする/しないを制御することは可能でしょうか?

オリジンサーバーからのレスポンスコードが期待したものでは無い場合に、特定のURLにリダイレクトをかけるような設定は可能でしょうか?

解決方法

いずれも、Lambda@Edge をご利用いただくことで対応可能です。

オリジンサーバーからのレスポンスコードを参照して、キャッシュする/しないを制御することは可能でしょうか?

「レスポンス時における Cache Control ヘッダーを付与もしくは変更」というLambda@Edgeのユースケースがございます。 参考:https://aws.amazon.com/jp/blogs/news/lambdaedge-design-best-practices/

CloudFrontは付与するヘッダーによりキャッシュの挙動が変わります。オリジンのレスポンスコードをLambda@Edgeにてヘッダを書き換えキャッシュを制御することで可能かと考えております。レスポンスコードに合わせ、Lambda@Edgeにて Cache-Control 付与または変更します。

Lambda@Edgeでのヘッダ書き換えのサンプルコードは以下のドキュメントに記載があります。お客様環境に合わせコードを変更しご利用ください。

参考:https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/lambda-edge-how-it-works-tutorial.html

オリジンサーバーからのレスポンスコードが期待したものでは無い場合に、特定のURLにリダイレクトをかけるような設定は可能でしょうか?

Lambda@Edgeにてオリジンのレスポンスコードに合わせて、クライアントへの応答内容を書き換えます。

Lambda@Edgeでは、イベントをビュワーレスポンスに指定ください。お客様環境に合わせコードを変更しご利用ください。

参考:https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/lambda-examples.html#lambda-examples-http-redirect

以上、千葉がお送りしました。