特定IPからのアクセスに限定した静的WEBサイトを用意してカスタムビジュルアルコンテンツを表示する

2021.11.12

こんにちは、岩城です。

QuickSightのビジュアルに説明を表記したい場合は、各ビジュアルのサブタイトルを利用するケースもあるのではないでしょうか。

しかし、サブタイトルでは改行できないため、ビジュアルの表示サイズが小さいと説明が見切れてしまいます。

今年の夏、QuickSightのダッシュボード内にURL指定することで外部コンテンツを表示できるようになりました。

このカスタムビジュアルコンテンツを使って、特定IPアドレスからのアクセスに限定した説明用コンテンツを表示させようと試した結果を共有します。

CloudFront + S3で静的ウェブサイトホスティングを設定する

まずはS3バケットを作成します。

次にCloudFrontディストリビューションを作成します。

オリジンドメインに先程作成したS3バケットを指定し、新しいOAIの作成とバケットポリシーの自動更新を選択します。

デフォルトキャッシュビヘイビアは検証用の簡易コンテンツを表示するだけなのでデフォルトのままとします。

本番運用の際は、要件に応じてカスタマイズしてください。

デフォルトルートオブジェクトにindex.htmlを指定し、ディストリビューションを作成します。

こちらも検証用の設定なので代替ドメインの設定およびSSL証明書の設定は行いませんが、本番運用の際は必要な設定になると思います。

特定IPからのアクセスに限定するようにWAFを設定する

WAFの設定を行います。

WebACLを作成する際、リージョンの指定を間違えないように注意してください。CloudFrontに適用するWAFはGlobal(CloudFront)を選択します。

WebACLを作成する際、先程作成したCloudFrontディストリビューションを指定します。

この後設定するIPアドレスからのアクセス以外を拒否したいので、Default ActionをBlockにしておきます。

次に特定IPアドレスからのアクセス以外をWAFでブロックするように設定します。

まずはIPセットを作成します。

アクセスを許可したいIPアドレスを入力して作成します。

先程作成したWebACLにIPセットを用いたルールを設定します。

このIPセットに設定したIPからのアクセスを許可したいのでAllowを指定し、WAFの設定完了です。

カスタムビジュルアルコンテンツを設定する

QuickSightのカスタムビジュアルコンテンツを設定する前に、検証用コンテンツをS3バケットにアップロードしておきます。

単純にメッセージを表示するだけのindex.htmlです。

<html>
    <head>
        <meta charset="utf-8">
        <title>ビジュアルの説明</title>
    </head>
    <body>
        ビジュルアルの説明をここに記す!!
    </body>
</html>

カスタムビジュアルコンテンツを設定するまでのQuickSightの諸々の設定は省略します。

ビジュアルタイプからカスタムビジュアルコンテンツを選択します。

URLにCloudFrontディストリビューションのドメイン名を指定して適用します。

コンテンツが表示されました。

ビジュアルの横に配置すれば、そのビジュアルに対する説明を表示できます。

ちなみに許可IP以外からアクセスすると403エラーが返ってきます。

おわりに

本エントリがどなかたのお役に立てれば幸いです。