HTMLでローカルに保存した画像をAmazon S3を使って表示させる方法

HTMLでローカルに保存した画像をAmazon S3を使って表示させる方法を解説します。
Amazon S3に画像をアップロードすると画像のURLが生成されます。
画像URLを指定するだけで画面表示出来る為、HTMLファイルへ面倒なパスの指定が不要になります。
またS3は非常に安価に利用できる為、コストパフォーマンスもかなり高いです。

#前提条件
- Windows10を使用。
- PCはDELLを使用。
- 画像の拡張子は.png

#料金

Amazon S3のS3バケットへ画像をアップロードする際に微々たるものですが料金が発生します。
一番値段が高いS3標準を使用した場合であっても0.025USD/GBなのでほぼ無料に等しいです。
S3の詳細な利用料金については以下URLを参照下さい。
https://aws.amazon.com/jp/s3/pricing/

#事前準備

- ローカル環境に画像を保存していること。 
- AWSアカウントを所持していること。
- Amazon S3へのアクセス権限（書き込み・読み取り）を許可していること。
- 画像表示用のHTMLファイルを用意すること。


#作業手順の概要
１, Amazon S3にアクセスして画像のアップロード用のS3バケットを作成する。
２, 画像をアップロードし、URLを生成する。
３, 生成したURLをHTMLで指定する。

#S3バケットを作成
１、自身で所有しているAWSアカウントにログインして下さい。
![ログイン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/dceba498-508b-08ce-8169-d7c06838fd74.png)


２、ログインが完了したらコンソールの検索バーから「S3」と入力し、「S3」をクリックしAmazon S3のコンソール画面を開く。
![s3アクセス.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/958e27e9-0353-84f8-bd25-f3112a3e2b7c.png)

３、Amazon S3のコンソール画面を開いたら「バケットを作成」をクリック
![バケット作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/76a38f19-e8ea-45ce-dcf1-b9cf33f841e6.png)


４、「バケット名」に任意のバケット名を入力し「パブリックアクセスを全てブロック」にチェックを入れたままにする。
![バケット設定１.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/d548c6fa-79f7-deaa-a289-23802ab63b8a.png)

５、以下項目を上から順に実施する。

- 「バケットのバージョニング」はを有効にするを選択。
- サーバ側の暗号化を有効
- 暗号化キータイプはSSE‐S3を選択。
- バケットの作成をクリックする。
![バケット設定２.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/385ab121-ab56-fb86-fe21-d80060eeca91.png)
６、正常にバケットが作成されたことを確認する。

#S3バケットの設定
１、バケットを作成を完了したら「アクセス許可」のタブをクリックし、ブロックパブリックアクセスの「編集」をクリックする。
![バケット設定３.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/dddc51e0-c76e-643d-43fd-3cbe5fff0059.png)

２、パブリックアクセスをすべてブロックにチェックを外して「変更の保存」をクリックする。
![バケット設定４.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/8a69f420-ed42-43a8-fbc8-7e2eb5fe1ba2.png)

３、以下警告のポップアップが表示されるので「確認」を入力して確認ボタンをクリックする。
![バケット設定５.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/45b534f1-1a0e-6d3e-4172-79ad17bcb51f.png)

４、バケットパブリックアクセスの設定が正常に変更されたことを確認する。

#画像をアップロードする
１、作成したバケットをクリックしてアップロードしたいS3バケットを開く。
![バケット作成画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/7651d0a3-88b8-deec-fa71-aed13e60a58c.png)

２、「アップロード」をクリックする。
![アップロード１.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/372f3eb0-0527-7d46-07f0-2f05f772c168.png)

３、「ファイルを追加」をクリックする。
![アップロード２.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/28aa9ada-e61f-5ea1-8d95-4e9a1fe53e36.png)

４、アップロードした画像を指定する。※今回は事前に用意した「アップロード画面」ファイルを選択
![アップロード３.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/f0a8c7d4-8892-fd84-74e9-d6756cf112d2.png)

５、「アップロード」をクリックする。
![アップロード４.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/86e6c114-11ad-f705-a7d4-0ce1f159730b.png)

６、正常にアップロード出来たことを確認する。

#アップロードしたオブジェクトのアクセス設定をする。
１、アップロードしたオブジェクトをクリックする。
![オブジェクト設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/0843f21c-3db8-f286-b420-be9a417a1640.png)

２，「アクセス許可」タブをクリックする
![オブジェクト設定２.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/de38d192-a5b9-d32a-39e0-6ab4de5af719.png)


３、アクセスコントロールリスト(ACL)の「編集」をクリックする。
![オブジェクト設定３.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/58780d97-8f52-fdc9-8bbc-133d6ead8dc7.png)

４、赤枠で囲っている項目に全てチェックを入れて変更の保存をクリックする。
![オブジェクト設定４.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/59b71988-406f-cf5f-31c9-e3602ab7e320.png)

５、アクセスコントロールリストの変更が完了したらオブジェクトURLをコピーして任意のブラウザで新しいタブを開き、画像が表示されていることを確認する。
![オブジェクト設定５.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1408197/94143be5-d627-169c-2945-3328194d0061.png)


#生成したURLをHTMLで指定する
１、以下コマンドを入力し、ダブルクォーテーションで囲っている部分に先ほどAmazon S3でアップロードしたオブジェクトURLをコピーする。

```
<!DOCTYPE html>
<html>
<head>
	<title>画像を表示する</title>
</head>
        <img src="オブジェクトURLをコピーする">
<body>
</body>
</html>

```
２、HTMLファイルを開き、画面が表示されることを確認する。

#終わりに
今回はHTMLにおいてローカル画像の表示をAmazon S3を利用した方法を解説しました。S3は非常に安価で可用性も高く、コストが非常に安いです。
ただし、１つ注意点としてはAmazon S3にアップロードした画像を削除してしまうと画像を閲覧できくなる為、S3バケット内での画像ファイルの管理についてはくれぐれもご注意下さい。