AWS CloudFront FunctionsでBasic認証を設定する
これまでAWSのS3にアップした静的ファイルにBasic認証を設定するには CloudFront経由でLambda@EdgeでBasic認証を指定する必要がありましたがCloudFront Functionsの登場によって、CloudFront Functionsを利用して少しだけ簡単に設定できるようになりました。
CloudFront FunctionsはCloudFrontのサイドバーの「関数」から作成できます。
関数ページでは右上の「関数を作成」から適当な名前をつけてBasic認証用の関数を作成します。
CloudFront Functions はLambda@Edgeと違いECMAScript 5.1相当のJavaScriptしか記述できないので注意が必要です。
function handler(event) {
var authUser = 'user';
var authPass = 'pass';
var authString = 'Basic ' + (authUser + ':' + authPass).toString('base64');
var request = event.request;
var headers = request.headers;
if (
typeof headers.authorization === "undefined" ||
headers.authorization.value !== authString
) {
return {
statusCode: 401,
statusDescription: "Unauthorized",
headers: { "www-authenticate": { value: 'Basic realm="Please Enter Your Password"' } }
};
}
return request;
}
作成後は変更を保存して発行するとCloudFrontで利用可能になります。
CloudFrontでFunctionsを設定
CloudFrontのディストリビューションからBasic認証を設定したいディストリビューションを選択して、ビヘイビアからオリジンを選択し編集します。
関数の関連付けのビューワーリクエストに
関数タイプ : CloudFront Functions
関数 ARN/名前 :作成していた Basic認証用の関数
を指定することでCloudFront FunctionsでBasic認証が可能になります。
スポンサードリンク
«AWS SAM のtemplate.yamlをdeploy環境ごとに切り替える | メイン | Nuxt.js / Next.jsで作成したサイトをGitHub ActionsでAWS S3にデプロイする»