資格って美味しいのですか?
どうも、やまもとやまです。
そろそろAWSのSAPでも取得しようと勉強しているのですが、気になるサービス等があると実際に試したくなったりしてなかなか進みません。
折角なので、ちょこっと試してみたCloudFrontの署名付きCookieについて記事に残しておきます。
少し長くなりそうなので、今回はOACによる公開設定まで行い、次回に署名付きCookieの設定および動作をご説明します。
構成
CloudFront経由でS3バケットのオブジェクトへアクセスする構成となります。
その際、S3への直接アクセスは許可せず、CloudFront経由の場合のみ表示できるようにします。
以前はOAI(Origin Access Identity)により実現されていましたが、2022年8月頃よりOAC(Origin
Access Control)が追加され、OACが推奨(OAIは非推奨)となったため、今回はOACで試してみました。
また、ビヘイビアで特定拡張子のファイルについては署名付きCookieおよびURLによるアクセス制限を設けます。
設定手順
まずはコンテンツを格納するS3バケットを作成します。
AWSマネージメントコンソールにログインし、S3 ⇒ バケット から、「バケットを作成」ボタンをクリック。
設定内容は以下になります。
・バケット名:任意の名前を入力
・ACLは無効のまま
・パブリックアクセスはすべてブロック
バケットが作成されたので、コンテンツ用のオブジェクトをアップロードしておきましょう。
今回は作成したバケットの直下に次の2ファイルをアップロードします。
この時点では非公開状態のため、ブラウザでアクセスしても表示はできません。
sample.html
usagi.jpg
次に、CloudFrontのディストリビューションを作成します。
CloudFront ⇒ ディストリビューション から、「ディストリビューションを作成」ボタンをクリック。
設定内容は以下になります。
・オリジンドメイン:先ほど作成したS3バケットを選択
・S3バケットアクセス:「Origin access control settings (recommended)」を選択(これがOACですね)
設定の際、OACを選択すると「Origin access control」の指定ボックスが開きますので、「コントロール設定を作成」ボタンをクリックします。
「Create control setting」のウィンドウが表示されますので、任意の名前を入力して作成しましょう。
OAC設定が作成され、ディストリビューション設定で選択された状態になるので、そのままディストリビューションを作成します。
さて、この状態ではまだCloudFront経由でS3へのアクセスはできないため、バケットポリシーを変更する必要があります。
ディストリビューション作成完了の画面で誘導されますので、「ポリシーをコピー」ボタンをクリックしてコピー、その後に「S3バケットの権限に移動してポリシーを更新する」リンクをクリックします。
すると、対象S3バケットのアクセス許可設定画面が新しいウィンドウで開くので、バケットポリシーの「編集」ボタンをクリックし、先ほどコピーしたポリシーをペーストして保存します
これでCloudFrontからS3バケットへのアクセスが許可されたので、ブラウザでコンテンツを表示可能になります。
早速表示してみましょう。
無事表示できました。
ついでに、S3を直接指定した場合はこのようにアクセスが拒否されます。
今回はここまで。
次回はいよいよ署名付きCookieを試してみます。
というわけで
本題は次回になりますが、今回はOACを利用してCloudFront経由でプライベートなS3コンテンツへアクセスできることを確認できました。
なお、OACはOAIに比べて機能面でアップデートされており、SSE-KMSで暗号化されたS3オブジェクトへのアクセス等も可能になっています。
詳細はAWSドキュメントをご参照ください。
それではまた!