1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudFrontでビューワー制限した画像をHTMLメールで送信する

Posted at

CDNとしてCloudFrontを利用していて、閲覧制限をかけたいという場合、署名付きCookieを利用しているパターンが多いのではないでしょうか。
例えば、ログイン済みの特定のユーザーのみ閲覧できる画像があるケースです。

このような場合におけるメールに画像を添付する方法について共有します。

結論、署名付きURLを利用して解決しましたが、そこに至るまでの経緯も含めて紹介します。

署名付きCookie

最初に検討したのが署名付きCookieをそのまま利用する方法でした。しかし、通常のWebサイトと異なり、メーラーで必ずしもCookieを利用できない、できたとしてもメーラーごとに仕様が異なり対応は難しいと分かりました。

そこでCookieを利用せず、画像をURLで設定するのではなく、base64エンコーディングして埋め込む、添付した画像を参照するなどの方法も検討しました。

Laravelには以下のようにしてメールに画像を埋め込むことができたため利用してみました。

<img src="{{ $message->embed($pathToImage) }}">

しかし、埋め込むため、メールの容量が重くなってしまいました。複数の画像を埋め込む予定であったため、この方法も諦めました。

署名付きURL

署名付きURLを利用することで、署名付きCookieで閲覧制限をかけた画像をメールに添付することができました。

AWSには以下のような記述がありました。これに早く気づいていれば良かったです。

ビューワーのアクセスを制限する
ビューワーのアクセスを制限する場合、ビューワーがコンテンツにアクセスするには
CloudFront 署名付き URL または署名付き cookie を使用する必要があります。

ビヘイビアの編集からビューワーの設定をしている箇所に記載がありました。

ビヘイビアの編集からビューワーの設定

AWSがCookieを利用できない場合を考慮してくれていました。

AWSのドキュメントにも使い分けの説明がありました。今回のようにメールに添付する場合は2つ目のケースですね。

署名付き URL を使用するか、署名付き Cookie を使用するかを決定する

次のような場合は、署名付き URL を使用します。
・個別のファイル (アプリケーションのインストールダウンロード) へのアクセスを制限する場合。
・ユーザーが Cookie をサポートしていないクライアント (カスタム HTTP クライアントなど) を使用している場合。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?