2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CO-WELL(コウェル)Advent Calendar 2023

Day 4

Epub Reader で Amazon S3 に格納されている Epub ファイルを読み取る

Last updated at Posted at 2023-12-03

はじめに

はじめまして。
今日は、Bibi Epubリーダーを利用して、Amazon S3 に格納されている Epub ファイルを表示する機会があったので、その際の知見を共有しようと思います。

なぜAmazonS3にファイルを格納するの?

コストや可用性などの面でメリットは多くありますが、AWSのベストプラクティスなのです。(AWS ホワイトペーパーにも記載されてますのでご参考ください。)

問題#1:The Origin of the Path of the Book Is Not Allowed

#1.png

Bibi EPUB リーダーはOrigin-Pathが許可されないと電子書籍を読み取ることができません。

対応方針:

Bibi Epubリーダー のソースの中に bibi/presets/default.js ファイルを編集します。
143 行目に trustworthy-origins の項目があり、ここに S3 バケットの URL を入力すれば、解決できます。

#2.png

問題#2:Failed to open the book (probably CORS Blocked)

#3.png

対応方針:

クロスオリジンのため、S3 バケット側にCORS設定で解決できます。

CORS 設定例は以下でご参照ください。

CORS
[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET"
        ],
        "AllowedOrigins": [
            "https://yoursite"
        ],
        "ExposeHeaders": [],
        "MaxAgeSeconds": 3000
    }
]

問題#3:Data Invalid as a folder: 403 Forbidden

#4.png

このエラーは、S3バケットにある電子書籍が解凍してないため、Bibi EPUB リーダーで読み取ることができないことを示しています。

1. 電子書籍の自動解凍

S3 イベントのトリガーを追加して、Lambda 関数経由で自動的に電子書籍を解凍し、元の S3 バケットへ再アップロードします。

2. コンテンツタイプ

S3 バケットへ解凍した電子書籍をアップロードするとファイルのContent-Typeは binary/octet-stream になります。XMLやJPG等のファイルも含まれますが、これらは text/xmlimage/jpeg になります。
正しいコンテンツタイプを設定しないと読み取れません。

サンプルコードはページの最後にある[参照リンク]をご参照ください。

3. 結果

やっと電子書籍が読みと取れました。👏
ok.png

最後に

もし上記の問題を解決できなければ、コメントいただけると非常に助かります!
最後までご覧いただいてありがとうございました。

参照リンク

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?