Quantcast
Channel: 技術 –サーバーワークスエンジニアブログ
Viewing all articles
Browse latest Browse all 1210

CloudFront と Lambda@Edge による S3 内コンテンツの Basic 認証を Serverless Framework で実現する

$
0
0



はじめに

技術一課の山中です。
S3 のコンテンツに対して CloudFront と Lambda@Edge を利用して Basic 認証をかけたいとの要望があったので、検証してみました。

事前準備

S3 バケットの作成

静的コンテンツを配置するための S3 バケットを作成してください。
作成後、配信するコンテンツを配置します。

Serverless Framework のインストール

以下を実行し Serverless Framework をインストールしておいてください。

$ npm install serverless -g

セットアップ

Serverless Framework の設定

今回は以下 のプラグインを利用します。

このプラグインを利用することで Serverless Framework で Lambda@Edge をデプロイすることができます。

npm install --save-dev --save-exact @silvermine/serverless-plugin-cloudfront-lambda-edge

具体的な利用方法は、プラグインの README を参照ください。
serverless.yml は以下のように記載しました。

また、 config.yml を作成しバケット名を外出ししています。

s3:
  bucket_name: your-bucket-name

your-bucket-name は自身のバケット名に変更してください。

Basic 認証用コード作成

今回この検証を行っていて知ったことは以下です。
やっぱり何事も事前調査は大事ですよね。

コードは以下の方のものをそのまま使わせていただきました。
これをコピーして auth.js として保存します。

authUser にユーザ名、 authPass にパスワードを記載します。

デプロイ

準備が終わったので、デプロイします。

$ sls deploy

以下のように表示されるとデプロイ完了です。

Serverless: Checking Stack update progress...
........................
Serverless: Stack update finished...
Service Information
service: basic-auth-sample
stage: dev
region: us-east-1
stack: basic-auth-sample-dev
resources: 8
api keys:
  None
endpoints:
  None
functions:
  basic-auther: basic-auth-sample-dev-basic-auther
layers:
  None

試してみる

マネジメントコンソールから作成された CloudFront の URL を確認しアクセスしてみましょう!


想定通り Basic 認証のポップアップが表示されています。
Lambda に設定したユーザ名とパスワードを入力し Sign In ボタンをクリックすると

S3 に保存した HTML ファイルが表示されています!
ちなみに、 Basic 認証画面で Cancel ボタンをクリックすると以下の画面となり、コンテンツが表示されないことがわかります。

おわりに

Basic 認証を必要とする機会はそこまで多くはないと思いますが、 Serverless Framework を利用すると簡単に実現可能ですので、かなり便利ですね!


Viewing all articles
Browse latest Browse all 1210

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>