プラグインAWS for WordPressを使ってWordPressをCloudFrontで配信してみる

2022.10.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

「WordpressをCloudFrontで配信したいけど、CloudFront何もわからん。楽して設定したい。」

色々選択肢あると思いますが、プラグイン「AWS for WordPress」を使うと楽かもしれません。

少し事前準備はありますが、このプラグインを使うとほぼ自動でWordpressを配信に必要なCloudFront設定ができます。

やってみた

LightsailでWordpressを用意

検証用にLightsailでWordpressサーバを用意しました。

Accelerating WordPress with CloudFront using the AWS for WordPress Plugin | Networking & Content Delivery

AWS側の設定は上記の手順と同様でできるのですが、Wordpress 6系だとwp-config.phpの場所が異なるので注意が必要です。(上記リンクの手順では、5系)

# WordPress 5(上記手順)
sudo vim ./apps/wordpress/htdocs/wp-config.php
# WordPress 6
sudo vim /bitnami/wordpress/wp-config.php

IAMユーザーの準備

LightsailではIAMロールを付けることができないためIAMユーザーを作成します。

以下のポリシーをインラインポリシーとしてアタッチします。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "acm:DeleteCertificate",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestedRegion": "us-east-1"
                }
            }
        }
    ]
}

また、以下のマネージドポリシーもアタッチします。 (以下のポリシーがないと、プラグインからCloudFrontの設定ができません。)

  • AWSForWordPressPluginPolicy

プラグイン AWS for WordPressの設定

AWS for WordPressを有効化します。

上記で作成したIAMユーザーのアクセスキーとシークレットキーを設定します。

その後、「CloudFront」を選択しドメインを設定します。 ドメイン名を入力して「Initiate Setup」を押すと、設定が開始されます。

今回は以下の値を設定しました。

  • Origin Domain Name:
    • wp-test.satomasaki.classmethod.info
  • CloudFront Alternate Domain Name:
    • www.wp-test.satomasaki.classmethod.info

ここで実行されることは主に3つです。

  • ACM 証明書発行、検証
  • CloudFront ディストリビューションの作成
  • CloudFrontとの関連づけ

ACM 証明書発行、検証

まずは、ACM 証明書が発行されます。

ドメイン名の入力の部分で私は、「Cloudfront Alternate Domain Name(CloudFront AlCloudFront 代替ドメイン名)」に「www.wp-test.satomasaki.classmethod.info」を設定していました。

マネジメントコンソールから確認すると、該当のACM 証明書が作成されています。

この時点では、検証ができていないため以下で表示されるレコードを手動で登録する必要があります。(上記は、検証後スクショしたため発行済みになっています)

ACM 証明書が準備できたら、「Check status of SSL/TLS certificate」を押して次のステップに進みます。

CloudFront ディストリビューションの作成

CloudFront ディストリビューションが作成されます。 このステップには5~10分程度かかります。

作成完了すると以下のようにチェックがつきます。

コンソールからもCloudFrontが作成されたことが分かります。

ビヘイビアには、「wp-admin/」等をキャッシュしないための設定が入っています。

CloudFront用のレコードを登録

最後にCloudFrontをDNSレコードに登録して、「www.wp-test.satomasaki.classmethod.info」でCloudFrontにアクセスできるようにします。

最後に「Activate Site Acceleation」にチェックをつけます。

疎通確認

Google Chrome デベロッパーツールで「x-cache: Hit from cloudfront」になっていることを確認できました。 CloudFrontに疎通できているようです。

おわりに

プラグイン「Wordpress for AWS」を使用することで、簡単にCloudFrontの設定ができます。

しかし、細かい設定には対応していないためカスタマイズしたい場合は、直接CloudFrontの設定を変更する必要があります。 (例えば、特定のパスだけCloudFrontで配信したい・画像だけCloudFront + S3で配信したいといったことはこのプラグインではできません)

Amazon PollyやAlexaと連携した機能もあるようです。 機会があったら試してみたいと思います。

以上、AWS事業本部の佐藤(@chari7311)でした。

参考