Skip to content

Latest commit

 

History

History
77 lines (53 loc) · 4.61 KB

README_JP.md

File metadata and controls

77 lines (53 loc) · 4.61 KB

English / 日本語

cloudfront-signed-cookie-generator

GitHub GitHub release (latest by date)

cloudfront-signed-cookie-generator は、Amazon CloudFront 上のWEBサイトへアクセスするための署名付きCookieを生成する、AWS Amplify アプリケーションです。このアプリケーションは、Vue.js で記述されており、Amazon API Gateway, Amazon Cognito, AWS Lambda, AWS Secret Manager および Amplify CLI が使用されています。

screenshot

アーキテクチャ

architecture

$ amplify status

| Category | Resource name         | Operation | Provider plugin   |
| -------- | --------------------- | --------- | ----------------- |
| Function | getcookie             | No Change | awscloudformation |
| Function | signedcookiePreSignup | No Change | awscloudformation |
| Auth     | signedcookie          | No Change | awscloudformation |
| Api      | getcookie             | No Change | awscloudformation |
| Secret   | signedcookie          | No Change | awscloudformation |

Secret カテゴリは、 このアプリケーション独自のカスタムリソースです。

AWS Amplify Console を用いたデプロイ

AWS Amplify Console は、フルスタックサーバレスアプリケーションをホスティングします。AWSアカウントにサインインした上で下のボタンをクリックし、このアプリケーションをデプロイしてください。

amplifybutton

AWS Amplify Console は、このリポジトリをあなたの GitHub アカウント上にフォークします。その後、バックエンドとフロントエンドのビルドとデプロイを実行します。生成されたアプリケーションは、 https://master.appid.amplifyapp.com で利用可能となります。

設定

デプロイ完了後、以下の設定を行なってください。

CloudFront キーペアの作成

CloudFront 署名付きCookieを利用するためには、CloudFront キーペアが必要です。 キーペアを生成 して、AWS Security Manager に秘密鍵を保存してください。

メールのドメインリストの更新

このアプリケーションには、Cognito のサインアップ前 Lambda トリガーによって実行される関数があります。この関数は、ホワイトリストに掲載されたEメールのみ登録を許可し、初期時には @gmail.com ドメインのみ登録されています。このリストを変更される場合は、 /amplify/backend/function/signedcookiePreSignup/function-parameter.json を更新してください。

{
 "DOMAINWHITELIST": "gmail.com"
}

カスタムポリシーの設定

このアプリケーションは、カスタムポリシーを用いた署名付きCookieを生成します。カスタムポリシーは、JSON形式で、署名付きCookieの認証条件を明記しています。自身の環境に合わせて amplify/backend/function/getcookie/parameters.json もしくは AWS Amplify の 環境変数 を更新してください。

以下のパラメータを指定することができます。

parameters.json 環境変数 タイプ 詳細
AccessKey ACCESS_KEY String キーペアID
Domain DOMAIN String リクエストするファイルのドメイン名
Duration DURATION String リクエスト時刻を起点とした署名付きCookieの有効期限
IpAddress IP_ADDRESS String 許可するIPアドレス
ResourcePath RESOURCE_PATH String 許可するリクエストパス
{
    "AccessKey": "XXXXXXXXXXXXXXXX",
    "Domain": "example.com",
    "Duration": 3600,
    "IpAddress": "0.0.0.0/0",
    "ResourcePath": "https://example.com/*"
}