アクセスキーを使わずにAWS S3とWordPressを連携する方法

EC2インスタンスでWordPressを動かす場合、 メディアファイルはS3に置く 。というのをよくやると思います。

その時、WordPressとS3の連携手段として WP Offload S3 プラグインを使う場合、AWSのアクセスキーとシークレットキーを定義する必要があります。

アクセスキーの情報はちょうど↓このような具合に、wp-config.phpに記録するのですが、

1
2define( 'AS3CF_AWS_ACCESS_KEY_ID', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx' );
3
4define( 'AS3CF_AWS_SECRET_ACCESS_KEY', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx' );

この情報はMySQLのデータベースにも保存されるので、セキュリティ的にあまりよろしくない状態だったりします。

(EC2とS3の通信は、アクセスキーを使わずにIAMロールを使うのが推奨されています。)

アクセスキーを使わずにWordPressとS3を連携する方法

  1. S3にアクセスできるIAMロールの作成
  2. IAMロールをEC2にアタッチ
  3. wp-config.phpに次の行を記述します。
1
2define( 'AS3CF_AWS_USE_EC2_IAM_ROLE', true );

さらにVPCエンドポイントを張ればAWSサービス内でトラフィックが閉じるので、セキュアな通信ができます。

しかも通信料金はかからない。

以上。終わり。