6
2

More than 1 year has passed since last update.

S3にあるファイルを公開する方法3種

Posted at

この記事の経緯

同僚にS3にあるファイルを公開したいので、方法を教えてほしいと言われました。(知識として持っておきたいので、構築作業はご本人で実施したいとのことでした)

ぱっと思いついた方法が3つあり、口頭で説明するよりかは資料として説明した方が理解しやすいだろうと思い、かつ、外部公開しても問題ない内容なので、記事にします。

同僚への説明資料のため、詳細なやり方までは記載しておりません。各やり方のメリット、デメリットを記載していますので、ご自身の要望に沿う方法の選定に役立てて頂ければと思います。

S3にあるファイルを公開する方法3種

今回はS3のWEBホスティング CloudFront + S3 Lambda + S3 の3パターンを考えます。
それぞれの特徴を簡単に纏めると以下となります。

項目 S3のWEBホスティング CloudFront + S3 Lambda + S3
SSL x
独自ドメイン x
手間 x
パフォーマンス x x
アクセス制御

では、それぞれ見ていきましょう。

S3のWEBホスティング

S3には、そもそも今回のようなファイルを公開するようにエンドポイントを利用できます。設定で有効にするだけで使えるので簡単に利用できますが、 HTTPS をサポートしていません
IPアドレスのアクセス制御などはS3に設定することで可能です。

image.png

メリット

  • 簡単!
  • S3のバケット名をアクセスしたいドメイン名にすれば、任意のドメイン名でアクセスできる

デメリット

  • HTTPS 非対応
  • S3から直接ファイルを読み込むので、パフォーマンスはよくない(S3の性能があがっており、今は気にしなくてよいかも)

CloudFront + S3

S3にHTTPSでアクセスしたいといった場合に、良く出てくるのが、このパターンです。S3の前にCloudFrontを置くことで、HTTPS でのアクセスを可能とし、CDNとしてキャッシュもできるので、パフォーマンスも素晴らしいものとなります。また、WAF を使えば、詳細なアクセス制御も実施可能です。ただ、構築するには、CloudFrontS3の他に ACMRoute53 を使う必要があり、手間ではあります。

image.png

メリット

  • HTTPS 対応
  • キャッシュすれば、爆速
  • 他のサービスとの組み合わせで、自由に制御できる

デメリット

  • 構築が手間

Lambda + S3

AWSは今年、LambdaにHTTPSエンドポイントを追加してくれました!
これを使えば、S3にあるファイルを外部公開できます。LambdaのHTTPSエンドポイントにアクセスして、Lambdaでは、S3にあるファイルを取得して返すという方法です。ただ、HTTPSは可能ですが、Lambdaのエンドポイントはこちらで指定できないので、カスタムドメインは非対応となります。また、今までの方法は、AWSコンソールでボタンをポチポチすれば、構築可能ですが、こちらLambdaを実装する必要があります。逆にいうと、アクセス制御やリダイレクトなど、Lambdaで出来ることはなんでもできます。

image.png

メリット

  • HTTPS 対応
  • Lambdaの実装によっては、リダイレクト設定など、自由に設定できる。

デメリット

  • カスタムドメインは不可。(API Gateway を使えば出来るが、今回は省く)
  • 実装する必要がある (人によってはメリットにもなりえる)
  • S3から直接ファイルを読み込むので、パフォーマンスはよくない(S3の性能があがっており、今は気にしなくてよいかも)

おわり

S3を公開したいというに人の助けになれば幸いですし、他の方法が思いつく方は教えて頂けれると嬉しいです。
個人的には S3のWEBホスティングhttps 対応してほしいです。

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