カテゴリー
[Lambda@Edge x ウェブサイト運用] AWS S3で静的ホスティングしたウェブサイトをレスポンス400~500番台の時にエラーページへ誘導する
※ 当ページには【広告/PR】を含む場合があります。
2021/04/21
HTTPレスポンスエラー?
$ curl -I https://deep.tacoskingdom.com/blog/85
HTTP/2 200
content-type: text/html
content-length: 867893
date: Wed, 21 Apr 2021 03:31:02 GMT
last-modified: Wed, 21 Apr 2021 02:53:25 GMT
etag: "6d0db1bf6c10f5cb07c18c87a6f8e47e"
cache-control: no-cache, no-store
content-encoding: br
accept-ranges: bytes
server: AmazonS3
x-cache: Miss from cloudfront
via: 1.1 853dab48fd1de187261c15f5b98cd2a0.cloudfront.net (CloudFront)
x-amz-cf-pop: NRT20-C4
x-amz-cf-id: 76TktFSL4CqQ5a3roVMpFyYB1npWVb8kimKz9tO7bTCLL7rzb1zAsQ==
$ curl -I https://deep.tacoskingdom.com/hoge
HTTP/2 403
content-type: application/xml
date: Wed, 21 Apr 2021 03:34:01 GMT
server: AmazonS3
x-cache: Error from cloudfront
via: 1.1 89d55be039a98056c94d7056281033e7.cloudfront.net (CloudFront)
x-amz-cf-pop: NRT20-C4
x-amz-cf-id: dtu8tCWT0Run9IjRrQgkfRhvmTHub-F-nchXTMOqc-z4kQqsliCDdQ==
困ったときのLambda@Edge
Lambda@Edge
exports.handler = async (event, context, callback) => {
const response = event.Records[0].cf.response;
if (response.status >= 400 && response.status <= 599) {
console.log('+++ Redirect To ERROR Page +++');
response.status = 302;
response.statusDescription = 'Found';
response.body = '';
response.headers['location'] = [{ key: 'Location', value: '/error/index.html' }];
//👇①レスポンスヘッダの入れ替えは原則禁止(※後述)
// const redirectRes = {
// status: '302',
// statusDescription: 'Found',
// body: '',
// headers: {
// location: [{
// key: 'Location',
// value: '/error/index.html',
// }],
// },
// };
// return callback(null, redirectRes);
}
return callback(null, response);
};
+ Origin Requestタイプ:
リクエストをオリジン(サーバー側)へ転送する直前
+ Origin Responseタイプ:
オリジン(サーバー側)からレスポンスが到着した直後
+ Viewer Requestタイプ:
ビュアー(クライアント側)からリクエストが到達した直後
+ Viewer Responseタイプ:
ビュアー(クライアント側)へレスポンスを転送する直前
503 ERROR The request could not be satisfied.
Origin Response
$ curl -I https://deep.tacoskingdom.com/hoge
HTTP/2 302
content-length: 0
server: CloudFront
date: Wed, 21 Apr 2021 05:20:58 GMT
location: /error/index.html
x-cache: Hit from cloudfront
via: 1.1 77ffb7fa0ceed0e909a8f69baef40302.cloudfront.net (CloudFront)
x-amz-cf-pop: NRT20-C4
x-amz-cf-id: S3CMArnb8i-eh213_l2W5pSt_8PV0_e7QzQbokiwnT9AXQnh7Tkvbg==
age: 14352
よくあるエラー〜Readonlyのレスポンスヘッダは書き換えられない
まとめ
参考サイト
記事を書いた人
ナンデモ系エンジニア
主にAngularでフロントエンド開発することが多いです。 開発環境はLinuxメインで進めているので、シェルコマンドも多用しております。 コツコツとプログラミングするのが好きな人間です。
カテゴリー