1
3

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.

AWS初心者は必ず読むべき!必見!AWSの基本⑦S3とCloudFront(画像配信をする) 

Last updated at Posted at 2022-10-11

この記事の概要

S3やCloudFrontを使って画像配信をしていきます。
WordPressから画像を投稿したらS3に画像が保存されるように設定していきます。
そして配信もS3からにします。
次にCloudFrontを使って画像配信を高速化します。

インフラの設計で大事なこと

  1. サービスを継続できるか
  2. システムの性能が良く将来的にも拡張しやすいか
  3. 運用と保守ができるか
  4. セキュリティがしっかりしているか
  5. 今現在のシステムは他のシステムに移行しやすいか

特に1と2が大事みたいです。

S3とは

データを管理、格納できる安く耐久性の高いAWSのクラウドストレージサービスです。
その中でも3つの概念が大事です。

  1. バケット
    オブジェクトの保存場所です。
    2.オブジェクト
    データ本体でS3に格納されるファイルです。
    3.キー
    オブジェクトの格納URLパスです。

この記事にも説明が載っています。

S3がよく使われるケース

ex)
・静的コンテンツの配信
・バッチ連携用のファイル(バッチとは定期的に実行するプログラムのこと)
・ログなどの出力先
・静的ウェブホスティング

保存場所をS3にする

画像の保存をS3にする理由はWebサーバーのストレージが一杯になることを防ぐためです。
そしてサーバーの台数が増やしやすくなり、コンテンツ配信サービスから配信することで
画像配信を高速化できます。

S3のバケット作成

AWS側の準備からしていきます。

S3のバケット作成をするためのAWS側の準備

まずS3のダッシュボードに移動します。
スクリーンショット 2022-09-13 18.10.40.png

バケットを選択していただき、バケットを作成を選択します。
バケット名はご自身で決めてください。
スクリーンショット 2022-09-13 18.13.36.png

スクリーンショット 2022-09-13 18.19.04.png

このパブリックアクセスが全部オンだとS3のバケットにWordPressからアクセスできなくなります。
スクリーンショット 2022-09-13 18.17.01.png

スクリーンショット 2022-09-13 18.19.21.png

スクリーンショット 2022-09-13 18.19.34.png

全部確認が終わったらバケットを作成します。

スクリーンショット 2022-09-13 18.33.20.png

オブジェクトが公開可能かチェックしてください。
非公開だとWordPressから画像をアップロードできなくなります。

S3の権限をもったIAMユーザー作成

IAMのダッシュボードに移動します。
そしたらメニューのユーザーをクリックします。ユーザーの追加をクリックします。

スクリーンショット 2022-09-13 18.37.54.png

チェックを入れたら次のステップにいきます。
スクリーンショット 2022-09-13 18.38.55.png

既存のポリシーを直接アタッチを選択したらS3と検索してAmazonS3FullAccessを選択します。
そしたら次のステップをクリックします。
スクリーンショット 2022-09-13 18.40.30.png

次のタグは何も設定する必要はないです。次のステップをクリックし、最後の確認画面に入ります。
最後の確認画面で確認をします。特に管理ポリシーがAmazonS3FullAccessになっているかを確認します。
確認ができたらユーザーの作成をクリックします。
スクリーンショット 2022-09-13 18.48.04.png

最後は.csvのダウンロードをしておきます。ダウンロードしたら閉じるを押します。

スクリーンショット 2022-09-13 18.53.17.png

こうして新しくユーザーができました。
スクリーンショット 2022-09-13 18.54.01.png

新しくできたユーザ-を選択して直接アタッチ済みになっているかチェックします。

スクリーンショット 2022-09-13 18.55.13.png

WordPressの画像をS3にアップロード

WordPressの画像をS3にアップロードしていきます。

プラグインをインストール

ドメイン名でWordPressの画面に入ります。ドメイン名/wp-adminがURLです。
URLがわからない場合はこの記事の兄弟記事の⑥を参照してください。
WordPressを導入した時のユーザー名とパスワードを入力します。

すると下のような画面になると思います。

スクリーンショット 2022-09-16 10.08.23.png
左側のプラグインを選択し、新規追加をクリックします。
そして検索からWP Offload Media Lite for Amazonを検索し、インストールします。

スクリーンショット 2022-09-16 10.13.47.png

インストールが終わり有効化になったら有効化を押します。
そしてプラグインのインストール済みプラグインの中でWP Offload Media Lite
無効化になっていればokです。今動いている証拠です。

スクリーンショット 2022-09-16 12.15.07.png

そしてWP Offload Media Liteを動かすために必要なライブラリーがあります。
そのために必要なサーバーをインストールします。

まずはEC2のパブリックIPアドレスを確認します。
そしてEC2からSSH接続していきます。
そして以下のphp-xmlをインストールします。

[ec2-user@ip-10-0-7-161 ~]$ sudo yum install -y php-xml
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                              | 3.7 kB     00:00     
依存性の解決をしています
#省略
依存性関連をインストールしました:
  libxslt.x86_64 0:1.1.28-6.amzn2                                              

完了しました!

そしてApacheの再起動をします。

[ec2-user@ip-10-0-7-161 ~]$ sudo systemctl restart httpd.service #Apache再起動

そしてWordPressの画面に戻ります。そして下の設定のOffload Media Liteをクリックします。

スクリーンショット 2022-09-16 12.29.30.png

このような画面にいき、Define access keys in wp-config.phpにチェックが入っているかと思います。
これはWordPressの設定ファイルです。そして画像にはないのですが、
defineから始まるコードがあります。これをコピーします。
S3にアクセスするためのアクセスキーを入力してくれという意味です。
スクリーンショット 2022-09-16 12.30.24.png

コピーしたらターミナルからwp-config.phpに記載していきます。

[ec2-user@ip-10-0-7-161 ~]$ cd wordpress/
[ec2-user@ip-10-0-7-161 wordpress]$ ls   #wp-config.phpがある
##wp-config.phpがない場合は手動で変更するみたいです

そしてnanoエディタで編集します。

[ec2-user@ip-10-0-7-161 wordpress]$ nano wp-config.php
#省略
/** データベースのユーザー名 */
define( 'DB_USER', 'username_here' );

/** データベースのパスワード */
define( 'DB_PASSWORD', 'password_here' );

/** データベースのホスト名 */
define( 'DB_HOST', 'localhost' );

/** データベースのテーブルを作成する際のデータベースの文字セット */
define( 'DB_CHARSET', 'utf8' );

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define( 'DB_COLLATE', '' );

define( 'AS3CF_SETTINGS', serialize( array(   #さっきコピーしたものを追記
    'provider' => 'aws',
    'access-key-id' => '',  #''との間に追記  Access key IDのこと
    'secret-access-key' => '',  #''との間に追記  Secret access keyのこと
) ) );

⚫︎補足
追記するAccess key IDとSecret access keyは
WordPressからS3にアクセスするためのIAMを作った時のIAMユーザーの認証情報です。
その時に認証情報のCSVファイルをダウンロードしたものの中にあります。

そしてnanoエディタの中でわからない場合はctr+Gでヘルプで確認します。
終了は ctr+X ctr+Sが保存です。保存して終了します。
終わったらWordPressのOffload Media Liteに戻ってリロードします。

もし失敗するなら
下の画像みたいにAccess Key IDとSecret Access Keyを入れます。
そして再度リロードします。
スクリーンショット 2022-09-16 16.00.31.png

引用  https://deliciousbrains.com/wp-offload-media/doc/amazon-s3-quick-start-guide/

この辺も参考にしました。

リロードすると下のサイトの下から2番目の画像みたいなOffload Media Lite みたいになればokです。
下のサイトも参考にしてください。

Browse existing bucketsで作成しているバケットを確認できます。
使いたいバケットを選択してSave Selected Bucketをクリックします。
その後設定で確認します。Provider,バケットがあっているか確認します。
下にスクロールしてADVANCED OPTIONSの Remove Files From Serverをオンにします。
サーバーではなくS3に保存できるようにするためです。
save changesを押します。これで画像を投稿するとS3に保存されるようになります。

画像投稿ができずエラーが出る場合はこのサイトを参考にしてみてください。

画像が表示されない場合はこの記事を参考にしてみてください。
自分の場合はプラグインを無効化したら画像が表示されました。

コンソールに入ってS3の画面からもちゃんと保存されているか確認しましょう。

CloudFrontの高速化について

高速コンテンツを配信するCDNのサービスです。
高速でオリジンサーバーに負荷をかけずに配信できるのが特徴です。
CloudFrontのおかげで高速化され、S3の負荷が軽減されます。

CloudFrontの設定

これからやる作業は以下の手順です。

  1. 独自ドメインから配信

まずはCloudFrontの画面に入ってください。

CloufFrontから配信

ディストリビューション作成していきます。
CloudFrontディストリビューション作成をクリックします。

オリジンドメインはここではS3を指定します。

スクリーンショット 2022-10-02 12.28.06.png

今回は他は特に設定せずにディストリビューションを作成をクリックします。

スクリーンショット 2022-10-02 12.32.27.png

ディストリビューションに入ってから編集をクリックします。

スクリーンショット 2022-10-02 12.33.35.png

代替ドメイン名 (CNAME)で配信されたいドメイン名を記載します。
ちなみにstaticはサブドメインのことです。

スクリーンショット 2022-10-02 12.39.28.png

Certificate Manager でSSLサーバー証明書の発行

証明書をリクエストのボタンをクリックします。

スクリーンショット 2022-10-02 12.41.19.png

スクリーンショット 2022-10-02 12.42.17.png

*.は*.以下は何でも使えるということです。
この証明書に別の名前を追加は*.なしのドメイン名を記載します。

スクリーンショット 2022-10-02 12.46.48.png

設定が終わったらリクエストをします。

スクリーンショット 2022-10-02 12.49.18.png

Route53でレコードを作成します。

スクリーンショット 2022-10-02 12.56.28.png

発行されたらCloudFrontの画面に戻ります

スクリーンショット 2022-10-02 12.59.27.png

カスタム SSL 証明書 - オプションでACM証明書が使えるようになっているはずです。

証明書が発行済みになるのを待ちましょう。

スクリーンショット 2022-10-02 13.01.57.png

発行されたらディストリビューションからIDをクリックして編集していきます。

スクリーンショット 2022-10-02 13.11.25.png

スクリーンショット 2022-10-02 13.12.08.png

変更を保存していきます。

続いてRoute53の画面に入ります。
そしてホストゾーンに入ります。aws-infra-study.xyzを開きます。

スクリーンショット 2022-10-02 13.20.20.png

そしてレコードを作成していきます。

スクリーンショット 2022-10-02 13.24.58.png

ドメイン名をコピーして上の値に貼り付けます
スクリーンショット 2022-10-02 13.23.36.png

下の画像のように登録されました。

スクリーンショット 2022-10-02 13.26.12.png

wordpressの画面に戻って設定に入っていきます。
Offload mediaに入ります。

順番としてはこんな感じです。

 1.WordPressの設定からOffload Mediaを開く
 2. Custom Domain (CNAME)をONにする
 3. Custom Domain (CNAME)にCloudFrontのDomain Nameを入力する
 4. save changesボタンを押して保存する

設定のDELIVERY、Provider,changesをクリックします。
スクリーンショット 2022-10-03 1.23.58.png

次にAmazon CloudFrontを選択して、Saveボタンをクリックします。

スクリーンショット 2022-10-03 1.35.53.png

Custom Domain(CNAME)にさっき決めた  static.aws-infra-study.xyzを入力します。
入力したら保存してください。

DELIVERYの中にあるはずです。

保存したらwordpressに投稿した画像のアドレスをコピーしてブラウザにURLを貼ってください。
static.ws-infra-study.xyzで独自ドメインでcloudfrontから配信されていたらokです。

⚫︎注意
実際は自分のwordpressが動かなくなってしまったので、操作はできませんでした。
画像でお見せできないので少しわかるづらいと思いますが、ご了承ください。

資料

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?