Amazon Web Service(以下AWS)のAmazon S3が便利でよく利用しています。ですが、デフォルトの状態でアップロードしても、セキュリティポリシー上ファイルを閲覧することが出来ません。それを常に閲覧できるように設定する方法を、メモ的に書きました。合わせて、Amazon S3が何なのか?を少し書きたいと思います。
目次
Amazon S3とは?:概要
本題に入る前に、まず、そもそもAmazon S3とはなんなのか?を少し解説したいと思います。
1-1.安心と信頼
Amazon Simple Storage Service(通称Amazon S3もしくはS3と呼びます。)は、Amazonが提供するAWSのサービスの一つで、インターネット用ストレージサービスになります。
画像ファイルをはじめ、様々なデータを保存しておくことが出来ます。また、セキュリティ面でも優れており、ローコストという非常に素晴らしいサービスです。
さらに、データの堅牢性(丈夫で壊れにくい)が非常に高く、オブジェクトの耐久性は99.999999999%(11桁)と、高品質です。データ保存における信頼性も、非常に高いものとなっています。
(詳しくは、Amazon S3:データを管理するを参照下さい。)
1-2.料金
ストレージの料金は、利用した量に対して支払う従量制です。最低料金というのはありません。どこの国にストレージを置くかで若干の料金が変わりますが、日本で利用する場合は東京リージョンが提供されているので、そちらを利用すれば良いかと思います。
東京リージョンで考えると、最初の1TB/月までの利用であれば、保存するだけの場合で100GB使って約10ドルほどです。日本円で換算すると1000円ぐらいですね(2013年12月上旬時点)。
S3はプライベート写真の保存だけではなく、Webサイトの画像置き場として利用したり、静的なWebサイトとしてhtmlを公開(Webホスティングとしての利用)したりといった使い方もできます。
料金計算において、保存容量以外に転送量も掛かりますが、S3へ向けてのデータ転送の場合、1000リクエスト当たりで0.0005ドル(日本円で0.05円)。
S3から外に向けての転送においては、一ヶ月当たり1GBまでは無料、1GBを超えた場合でも、10TBまでは1GBあたり0.201ドルといった感じです。
AWSの料金はシミュレーターが用意されているので、大体どれぐらい使うかという目算を立てて、シミュレーションすることが出来ます。
AWS SIMPLE MONTHLY CALCULATOR
AWSにおいて料金の値下げは何度も行われていますが、値上げは一度も行われていないというのが驚きですね。
1-3.利用する
いつからでも利用を開始することができます。必要なのはAWSのアカウントのみ。
アカウントを持っていなければ、すぐに作って利用することも可能です。
Amazon Web Service
今なら、登録後1年間は無料枠を利用出来ます。気になる、触ってみたい、という人とって、手軽に試せるのも非常にありがたいです。
さて、長々とAmazon S3の説明をしてきましたが、今回の本題に入りたいと思います。
本記事の冒頭で触れたとおり、S3はセキュリティの都合上、デフォルトではファイルをアップロードした本人以外がアクセスしても、そのファイルを閲覧出来ないようになっています。
ファイルをアップロードしてから、もしくは、アップロード時にファイルが閲覧出来るよう設定を変えれば、そのファイルを誰でも見れるように出来ます。
しかし、アップロードする度に変更するのは、ブログの画像を扱う場合にとても不便を感じました。
そこで僕は、ブログ用の画像を保存している場所にファイルをアップロードした場合、デフォルトで誰でもファイルを閲覧が出来るよう、設定を変更しました。
その設定方法を次章で解説します。
バケットポリシーの設定
アップロード時におけるファイルポリシーの設定を変更しておくには、バケットポリシーに設定を記述します。これは、そのバケットにアップロードされるファイルの状態をどのようにするかを決める設定になります。
常にセキュアにするのであれば、デフォルトの状態を。今回のように、誰にでも見てもらいたいファイルの場合は、make publicとしてアップロードされるように設定を変えておきます。
まず、AWSのS3にログインしたら、設定を変えたいバケットを開き、PermissionsにあるAddbucket policyを選択します。
エディタがポップアップしますので、設定を書き込みます。
書き込む内容は下記のような形になります。
例:バケット「yatblogimg」
(バケット毎に設定を変える事が出来ます。)
{ "Version": "2008-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::yatblogimg/*" } ] }
あとはSaveすれば完了です。
これで、このバケット以下にアップロードしたファイルは、デフォルトでpublicな状態となります。誰でも閲覧できる状態ですね。
非常にローコストで使い勝手の良いAmazonS3ですが、設定を変えることで、より使いやすくなります。自分の使い方に合わせて細かく設定出来るのも有り難いです。
僕は転送にTransmitを使ってるんですが、これでますます画像が上げやすくなりました。このアプリケーションも個人的にオススメです。
サイトの運営をしていて、画像に対する転送量が高く困っているといったケースで、このS3に画像の保存場所を変更したという話は非常に良く聞きます。
ブログを運用していて、トラフィックが増加すると画像が表示されなくて困ってるという場合に、一度検討してみるといいかもしれませんよ。
画像自体も高速で表示できるようになりますし、メリットは大きいです。
参考
本記事を書くに当たり、下記サイトを参考にさせていただきました。ありがとうござます。
Comments