Oracle Cloud Infrastructureのオブジェクト・ストレージをWordPressに接続できなかった話

Oracle Cloud Infrastructure

こちらの記事で接続できました!

こんにちは、前の記事で当サイトはHerokuを利用しており、メディアファイル等は永続保存ではないと書きました。そこで、当サイトは外部クラウドサービスのCloudnaryを利用しています。(Cloudnaryを選択した理由はWordPressプラグインがあり、使いやすいこと、無料で利用できる容量が大きいからです。)

しかし、せっかくならOracle CloudのObject Storageを利用したいなと思い接続を試みてみました。今日はその記録です。

WordPressのプラグイン「Amazon S3」

WordPress上でクラウドのストレージサービスにアクセスするのはAmazon S3が人気なようです。Heroku + WordPress + Amazon S3というのはドキュメントもいくつかありますし、説明しているサイトも見つかりました。

WordPressにはS3との接続を可能にするプラグインも複数あります。代表的なものだと「WP Read-Only」「WP Offload Media」などです。

上記どちらプラグインもAWSの「アクセスキー」と「シークレットキー」そしてバケットを指定することで接続できるようです。

プラグイン「WP Read-Only」の設定画面
プラグイン「WP Offload Media」の設定画面

Oracle CloudとAmazon S3互換性API

公式ドキュメントに、Oracle Cloud InfrastructureとAmazon S3のオブジェクト・ストレージ・サービスは、同様の概念であるとあります。接続方法も「一意のネームスペースを取得」と「Amazon S3互換性APIキー」の作成、そしてアプリケーション側の設定であり、簡単にできそうです。早速APIキーを取得してみます。

OCIのコンソール画面からアイデンティティーユーザーに移ります。ユーザーを選択し、リソースの「顧客秘密キー」から秘密キーの生成ができます。

OCIコンソール画面

次にオブジェクトストレージのネームスペースを確認します。コンソール画面から管理ーテナンシ詳細画面で確認できます。またオブジェクトストレージのバケット画面でも確認できます。

そしてエンドポイントを以下のように構成しました。リージョンは東京なためap-tokyo-1とし、ネームスペースは先ほど確認したものに変えました。

mynamespace.compat.objectstorage.ap-tokyo-1.oraclecloud.com

この取得したキーとエンドポイント、バケットをプラグインの設定画面で入力します。

WP Read-Only

初めにWP Read-Onlyを利用してみました。AWS Key、AWS Secret、Bucketに入力しました。ここで気になるのがBucket AWS Regionですが、ひとまずデフォルトのままにしておきました。

保存されませんでした。

画像を追加すると、アップロードしているかのような画面が表示され、しばらくすると上画像のようになり、ローカルに保存されてしまいました(しかも開けない)。

次にWP Read-Onlyのプラグインファイル内のwpro.phpファイルに少し修正をしました。おそらく以下の箇所がリージョン設定ですね。ここにエンドポイントを追加してみました。

<?php
$aws_regions = array(
//修正箇所↓
'mynamespace.compat.objectstorage.ap-tokyo-1.oraclecloud.com' => 'OCI',
//修正箇所↑
's3.amazonaws.com' => 'US East Region (Standard)',
's3-us-west-2.amazonaws.com' => 'US West (Oregon) Region',
's3-us-west-1.amazonaws.com' => 'US West (Northern California) Region',
's3-eu-west-1.amazonaws.com' => 'EU (Ireland) Region',
's3-ap-southeast-1.amazonaws.com' => 'Asia Pacific (Singapore) Region',
's3-ap-northeast-1.amazonaws.com' => 'Asia Pacific (Tokyo) Region',
's3-sa-east-1.amazonaws.com' => 'South America (Sao Paulo) Region'
);
foreach ($aws_regions as $endpoint => $endpoint_name) {
echo ('<option value="' . $endpoint . '"');
if ($endpoint == get_option('wpro-aws-endpoint')) {
echo(' selected="selected"');}
echo ('>' . $endpoint_name . '</option>');
}
?>

ダメでした。

特に変わりませんでした。ap-tokyo-1.oraclecloud.comのみにしたり、他にも試したりしましたが、変わりませんでした。

エンドポイントの設定が原因だと考えたので、上記のように色々いじってみましたが解決しませんでした。そもそもWP Read-Onlyプラグインはここ数年アップデートが行われていないようなので、少し改良が必要なのかもしれません。また改めて細かくみることにします。

WP Offload Media

次にWP Offload Mediaを利用してみました。こちらのほうがアップデートもされており、信頼性が高いようです。

早速、ガイドに沿って設定してみました。wp-config.phpにoracle cloudで作成したキーを記述します。

define( 'AS3CF_SETTINGS', serialize( array(
    'provider' => 'aws',
    'access-key-id' => '********************',
    'secret-access-key' => '**************************************',
) ) );
offload media lite 設定画面

そして上画像の画面でバケット名を入力すると。

InvalidAccessKeyId

と、エラーが出てしまいました。そもそもエンドポイントも設定していないし、想定内ではあります。エラーには、「Amazon S3のバケットに接続しようしたけど、S3のレコードにそのアクセスキーは無いよ」とありました。

そこでプラグインのディレクトリないにaws-provider.phpというファイルがあるので、少し内容をいじってみました。ここではprovider(aws)の設定ができ、リージョンやコンソールurl等が記述されています。

ここを先と同様にOracle Cloudのの設定に変更しました。しかし、、、

接続できませんでした。

これに関しては私の知識不足、経験不足が原因です。というのも、設定内容が理解できず、正しいコード修正ができませんでした。また改めて、チャレンジしたいと思います。

おわりに

今回はWordPressとOracle Cloudのオブジェクト・ストレージをS3のAPIを利用して接続できないかを試してみました。結果、接続できませんでした

悔しいですね、可能であるとは思いますが…

時間がある時に再度ゆっくり取り組みたいと思います。今回は失敗してしまいましたが、取り組んだことを記事にしました。

明日はOracle DatabaseやSQLについて勉強しようかなと考えています。また、ウェブアプリの作成に向けてReactやJavascriptも扱っていきたいと思っています。それぞれ基礎からになりますが良ければご覧ください。

今日も最後まで見ていただきありがとうございました。

*今回の一連の設定等はMAMPを利用してlocalにデモ用wordpress環境を構築し、利用しました。

コメント

タイトルとURLをコピーしました