24時間365日フルマネージドホスティングサービスのデイーネット

IAMロールを使って、WordPress + StaticPress S3を利用する方法

こんにちは。負荷テストネタが尽きてきた浅見です。

ということで、AWS(WordPress)の小ネタをお送りいたします。

WordPressをS3と連携させて静的ホスティングを行いたい

WordPressとS3を連携させて静的ホスティングを行うときは、StaticPress S3プラグインを利用することが多いのではないでしょうか。

StaticPress S3プラグインでは、IAMユーザのAccessKeyとSercretKeyを利用してS3連携を行います。

次のようなAWSで完結する構成の場合は、IAMユーザを使うのは微妙な気がします。

  • EC2(S3へのアクセスを許可したIAMロール付与)
  •  WordPress
  •   StaticPressプラグイン
  •   StaticPress S3プラグイン
  • S3

 

せっかくなので、IAMロールを使いたいよね、ということでStaticPress S3をIAMロール対応させてみようと思います。

WordPressやプラグインのセットアップは下記URLを参考に作成しました。

参考:WordPress + StaticPress S3で静的WebサイトをS3でホストする|Qiita

StaticPress S3とAWSの認証方法はIAM ユーザ

S3と連携するために、StaticPress S3というプラグインをインストールする必要があります。

下のキャプチャは、WordPressをS3と連携させるためのオプション入力画面です。

StaticPressIAMUser1-thumb-640x347-376.jpg

見てわかるとおり、「AWS Access Key」と「AWS Sercret Key」を入力する必要があります。

正しいキーが入力されると、S3 Bucketの選択ができるようになります。

StaticPressIAMUser2-thumb-640x406-379.jpg

IAMロールを割り当てた状態で、「AWS Access Key」と「AWS Sercret Key」を未入力の状態にしてもS3 Bucketの選択はできません。

StaticPress S3とAWSの認証方法をIAMロールで行う

なぜIAMロールを使うの?

IAMロールを使うことで、IAMユーザを使うよりも安全にAWSへアクセスすることが可能です。

IAMユーザは、AccessKeyとSecretKeyを利用して認証を行います。そのため、キー情報が漏洩した場合に悪用される恐れがあります。

一方、IAMロールはEC2へアタッチすることができます。アタッチされたEC2からのアクセスが許可されるので、キー情報の入力が必要なく、よりセキュアな環境を構築することができます。

IAMロールの作成と、EC2へのアタッチ

EC2からS3へアクセスする権限をもったIAMロールを作成し、WordPressを動作させるEC2へアタッチする必要があります。

詳細手順は、ディーネット技術ブログの記事をごらんください。

参考:IAMロールでEC2からS3をアクセス制御|ディーネット技術ブログ

StaticPress S3を修正する

EC2へIAMを割り当てることができたら、プラグインの修正を行います。

※プラグインの改修は自己責任でお願いします

修正対象は、「class-S3_helper.php」というファイルです。

# vi wp-content/plugins/staticpress-s3/includes/class-S3_helper.php

18行目あたりにある、「__construct」を修正します。

「Access Key」と「Sercret Key」の入力チェックを行っているif文をコメントアウトします。

これを。


function __construct($access_key = null, $secret_key = null, $region = null) {
        if ($access_key && $secret_key) {
                $this->init_s3($access_key, $secret_key, $region);
        }
}

こう修正する。


function __construct($access_key = null, $secret_key = null, $region = null) {
//        if ($access_key && $secret_key) {
                $this->init_s3($access_key, $secret_key, $region);
//        }
}

EC2にIAMロールがアタッチされている状態で、設定画面にアクセスしてみると「S3 Bucket」が選択できるようになっているはずです。

StaticPressIAMRole-thumb-640x393-381.jpg

設定を保存すると、「Access Key」と「Sercret Key」を入力しなさい、とメッセージが出ますが無視して問題ありません。

以上、小ネタでした。

  • このページの先頭へ

  • 東京本社
    〒105-0001東京都港区虎ノ門2-3-22 第一秋山ビル5F
    TEL:03-3591-8887 FAX:03-3591-8886
  • 大阪本社
    〒541-0041 大阪市中央区北浜2-6-11北浜エクセルビル5F
    TEL:06-6231-8887 FAX:06-6231-8897

  • 認証範囲はこちらをご覧ください。

Denet logo

クラウドサービス・データセンタ・高機能専有サーバ・共有サーバホスティングサービス 株式会社ディーネット
dot_bar