AWSのCloudFrontに署名付きURLを使って有効期限付きのWebアクセス設定(python) - 株式会社CoLabMix

AWSのCloudFrontに署名付きURLを使って有効期限付きのWebアクセス設定(python)

AWSのCloudFrontには署名付きURLという機能があります。
署名つきのURLを生成して、署名があるユーザーだけのアクセスが可能となります。

こちらを使って「有効期限付き」のWebアクセスの設定を行ってみます。

尚、CloudFrontを使わずにS3のみで大丈夫な場合は以下の記事で実施できます。

 

CloudFrontの設定

S3をオリジンとして参照するよう設定します。
S3はWebでの利用が可能なように「プロパティ」タブでは「静的ウェブサイトホスティング」を有効にします。

S3のバケットポリシーはCloudFrontの設定時に自動で上書いてしまいます。

 

 

また後に「ビヘイビア」の項目を編集してビューワーのアクセスを証明書付きのものに設定する必要があります。

 

こちら実施後にCloudFrontのキーペアの取得が必要になります。
AWS管理コンソールの右上のアカウント名のメニューをクリックし「セキュリティ認証情報」をクリックします。

こちらの「CloudFront」キーペアの項目を開き、「新しいキーペアの作成」を行い「プライベートキーファイル」「パブリックキーファイル」両方ダウンロードしましょう。
(利用するのは「プライベートキーファイル」のみです)

 

また、画面にある「アクセスキー ID」を控えておきます。

 

pythonを使って署名付きURLの発行

今回はpythonのboto3を使って署名付きURLの発行を行います。

こちらはほぼAWSの以下のサンプルの通りです。
https://github.com/boto/boto3/blob/develop/boto3/examples/cloudfront.rst

こちらの「expire_date」の設定で設定された期間が有効なHTMLホスティングが実施できるようになりました。

今回はindex.htmlを対象としているのでurlにファイル名まで記載しています。

 

index.htmlにCloudFrontのWebホスティングとして接続するとアクセス権限で以下のようになります。

 

署名付きURLで制限時間内に接続すると以下のようになります。

 

また、制限時間を過ぎてしまうと以下のようになります。

設定は若干複雑ですが利用シーンの高い設定となります。

よりセキュアな設定が可能となりますので様々な利用シーンでの展開が可能となります。

 

 

 

このブログは株式会社CoLabMixによる技術ブログです。

GCP、AWSなどでのインフラ構築・運用や、クローリング・分析・検索などを主体とした開発を行なっています。

Ruby on RailsやDjango、Pythonなどの開発依頼などお気軽にお声がけください。

開発パートナーを増やしたいという企業と積極的に繋がっていきたいです。

お問い合わせやご依頼・ご相談など

    関連記事

    1. [Rails] SJISのエクスポートでの「ActionView::T…

    2. AkismetのスパムフィルタをpythonとDjangoで実装

    3. Pythonでのgoogle-cloud-bigqueryライブラリを…

    4. AWSのLambdaでScrapyを動かす その1

    5. AmazonLinuxでpyenvを利用してPython3.6の仮想環…

    6. curlでSSL接続しようとすると「curl: (35) SSL co…