Easy Digital Downloads(EDD)のAmazon S3機能を使用すると、ダウンロードファイルをAmazon S3アカウントでホストできます。これは、ファイルを直接自分のホスティングアカウントに保存するよりも安全で信頼性が高くなります。
このガイドでは、AWSでIAMユーザーを作成し、Amazon S3アカウントをEDDに接続し、すべてがセットアップされたらAmazon S3を使用する手順を説明します。
注意: Amazon S3はPro機能であり、少なくともExtendedパスが必要です。
Amazon S3の有効化
Amazon S3機能をEDDストアにインストールするには、Downloads » Extensionsに移動し、Amazon S3を検索して、Installをクリックします。

機能のインストールと有効化の詳細については、機能のインストール方法を参照してください。
有効化したら、Amazon S3の設定はDownloads » Settings » Extensions » Amazon S3で見つけることができます。以下の手順を完了したら、そこにAWS認証情報を入力します。
IAMアカウントの作成
Easy Digital DownloadsをAmazon S3アカウントに接続するには、AWSでIAMユーザーを作成し、それに権限ポリシーをアタッチする必要があります。
それが完了したら、そのユーザーのアクセスキーとシークレットキーを生成し、WordPressサイトの ダウンロード » 設定 » 拡張機能 » Amazon S3 の下に両方入力します。
Amazon S3アカウントにログイン
まだAWSアカウントをお持ちでない場合は、続行する前に Amazon S3 で作成してください。
Amazon S3アカウントにログインし、 ユーザーページ に移動します。このページは、右上隅のあなたのアカウント名をクリックし、次にページ左側の アクセス管理 の下にある セキュリティ認証情報 » ユーザー をクリックすることで見つけることができます。
IAMユーザーの設定
使用したいIAMユーザーが既にある場合は、そのユーザーを選択します。
ユーザーの追加
新しいユーザーが必要な場合は、ユーザーを作成 ボタンをクリックしてプロンプトに従ってください。セキュリティ認証情報を取得し、ユーザーに権限ポリシーをアタッチする必要があります。

ユーザー詳細の設定
任意のユーザー名を入力し、次へ をクリックします。

権限の設定
次の画面で、ユーザーの権限を設定します。
- ポリシーを直接アタッチ を選択します。
- フィルター ボックスに「S3full」と入力して、Amazon S3ポリシーの結果に絞り込みます。
- AmazonS3FullAccess のチェックボックスをオンにします。
- 「権限境界の設定 - オプション」セクションはスキップします。
- 次へ をクリックします。

アカウント全体へのアクセスではなく、より厳格な権限が必要ですか? AmazonS3FullAccess は、AWSアカウントのすべてのバケットとすべてのS3操作へのアクセスを許可します。EDDが使用するバケットのみにスコープされたポリシーについては、以下の 特定のバケットへのアクセスを制限する を参照してください。
確認と作成
権限が上記の手順と一致していることを確認し、ユーザーを作成 をクリックします。

アクセスキーの取得
上記の手順で設定されたIAMユーザーが必要です。AmazonS3FullAccess権限を持つIAMユーザーが既にある場合は、それを使用できます。
AWS ユーザーページ に表示されている、作成したIAMユーザー名に移動します。 セキュリティ認証情報 タブを選択し、次に アクセスキーを作成 を選択します。

サードパーティサービス を選択し、確認 をチェックします。

次の画面で、アクセスキーを作成 を選択します。説明タグを追加する必要はありません。

アクセスキー と シークレットアクセスキー を保存します。

注意: このユーザーのシークレットキーには再度アクセスできなくなるため、安全な場所に保存してください。資格情報を紛失した場合は、新しいアクセスキーを作成する必要があります。
これで、IAMユーザーはS3バケットへのファイルへのアクセスとアップロードの全権限を持つことになります。これにより、EDDストアはファイルにアクセスし、顧客向けの安全なダウンロードリンクを作成できるようになります。
これで、IAMユーザーはS3バケットへのファイルへのアクセスとアップロードの権限を持ち、EDDストアはファイルにアクセスし、顧客向けの安全なダウンロードリンクを作成できるようになります。
EDDストアのAmazon S3設定の「ダウンロード」»「設定」»「拡張機能」»「Amazon S3」の下に、アクセスキーとシークレットアクセスキーを追加してください。

IAMユーザーの作成やポリシーのアタッチについてさらにヘルプが必要な場合は、IAMユーザーの作成に関するAmazonのガイドを参照してください。
特定のバケットへのアクセスを制限する
S3アカウントが他の目的で使用されており、IAMユーザー(EDDストアが使用するもの)を特定のバケットに制限したい場合は、AmazonS3FullAccessを使用する代わりにカスタムポリシーを作成してください。
「ポリシーを直接アタッチ」を選択し、「ポリシーを作成」に進みます。

以下のポリシー詳細をJSONエディターに追加します。bucket-name-hereをEDDストアがアクセスしたいバケット(またはバケット群)の名前に置き換えてください。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObjectAcl",
"s3:GetObject",
"s3:ListBucketMultipartUploads",
"s3:AbortMultipartUpload",
"s3:ListBucket",
"s3:ListMultipartUploadParts"
],
"Resource": [
"arn:aws:s3:::bucket-name-here",
"arn:aws:s3:::bucket-name-here/*"
]
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
}
]
}
このポリシーでは、すべてのバケット名が表示されたままですが、「リソース」セクションにリストされているバケットのみがアクセス可能です。EDDが「リソース」リストにないバケットにアクセスしようとすると、PHPエラーが表示されます。
Amazon S3 セットアップ
まだ行っていない場合は、「ダウンロード」»「設定」»「拡張機能」»「Amazon S3」に移動して、Amazon S3アクセスキーとシークレットキーを入力してください。

デフォルトバケットの入力
この画面では、Amazon S3のデフォルトバケットなどの他のアカウント情報も入力します。

これは、ファイルがアップロードされるデフォルトのバケットです。新しいバケットを作成したり、現在のバケットのリストを表示したりするには、S3コンソールにアクセスしてください(アクセスするにはログインが必要です)。
デフォルトとして使用したいバケットを作成します。アップロード時にファイルごとに別のバケットを選択することもできます。
バケット権限の設定
バケットの「すべてのパブリックアクセスをブロック」をオンにして、ファイルへの不正アクセスを制限します。EDDは顧客に一時的にファイルへのアクセスを提供するため、バケット自体をパブリックにする必要はありません。

Amazon S3エンドポイントの入力(オプション)
Amazon S3エンドポイントは、バケットが使用するエンドポイントです。
通常、このフィールドは空白のままにしておくことができます。サイトがバケットにアクセスできない場合は、バケットのリージョンのエンドポイントに変更してみてください。
Amazon S3アカウントにログインし、「S3」をクリックして、各バケットの横にあるリージョン列を確認することで、バケットのリージョンを見つけます。次に、AmazonのS3リージョンに関するドキュメントで対応するエンドポイントを見つけます。

そのエンドポイントをフィールドにコピー&ペーストし、保存します。
Amazon S3エンドポイントフィールドは、AWSだけでなく、Cloudflare R2やその他のS3互換ストレージプロバイダーでも機能します。R2や同様のサービスを使用している場合は、同様の方法でエンドポイントを入力してください。
リンク有効期限(オプション)
EDD Amazon S3拡張機能画面の最後の設定フィールドは、リンクの有効期間です。これは、動的に生成されたダウンロードURLが有効な時間の分数です。
顧客がダウンロードリンクをクリックすると、EDDはAmazon S3上のファイルの新しい一時的なURLを生成します。この設定は、URLが期限切れになるまでどのくらいの期間有効かを制御します。
このフィールドを空白のままにすると、リンクはデフォルトで5分間有効になります。
FESフォルダ名(オプション)
Amazon S3と同時にFrontend Submissionsを使用している場合、この設定はS3バケット内のベンダーファイルの整理方法を制御します。ファイルが各ベンダーのユーザー名またはユーザーIDの名前のフォルダに保存されるかを選択します。
両方の機能が連携してどのように機能するかについては、Amazon S3とFrontend Submissionsを参照してください。
EDDでのAmazon S3の使用
ダウンロード可能な製品へのファイルのアップロード方法はこれまでと同じですが、この機能により、メディアアップローダーにUpload to Amazon S3とAmazon S3 Libraryの2つの新しいタブが追加されます。

EDD経由でのAmazon S3へのアップロード
Upload to Amazon S3タブからファイルをアップロードすると、Easy Digital Downloadsは自動的にAmazon S3アカウントにアップロードします。
この方法でアップロードされたファイルは、他のメディアファイルと同様に、WordPressメディアライブラリからもアクセスできます。

AWS上にあるファイルをEDDに追加する
S3上にあるファイルは、メディアアップローダーのAmazon S3 Libraryタブを介してWordPressメディアライブラリからアクセスできます。

ファイルURLフィールドに手動でファイルを追加することもできます。

フィールドはいくつかの異なる形式を受け入れます:
- メディアアップローダー形式:
bucket-name/filename.zip - 仮想ホストスタイルURL:例:
https://bucket-name.s3.amazonaws.com/filename.zip - パススタイルURL:例:
https://s3.amazonaws.com/bucket-name/filename.zip - リージョンエンドポイントURL:例:
https://bucket-name.s3.region-code.amazonaws.com/filename.zip
重要 ⚠️
- Amazon S3ライブラリからURLを直接コピーしてFile URLフィールドに貼り付けないでください。これにより、顧客がファイルをダウンロードしようとしたときにアクセス拒否エラーが発生します。代わりに上記のいずれかの形式を使用してください。
- Amazon S3アカウントのすべてのバケット名とフォルダ名は小文字で、特殊文字を含まない必要があります。バケット命名規則に関するAmazonのドキュメントを参照してください。
- すべてのS3バージョンがすべてのリージョンで利用できるわけではありません。このチャートは、お住まいのリージョンで利用可能なバージョンを示しています。
- Amazon S3経由で配信されるファイルは、ストアが強制に設定されていても、常にリダイレクトとして配信されます。
CFMでAmazon S3を使用する
Amazon S3と同時にCheckout Fields Managerを使用している場合、チェックアウト時にCFMフォーム経由でお客様がアップロードしたファイルは自動的にAmazon S3バケットに送信され、cfm/フォルダに保存されます。追加の設定は必要ありません。
Amazon S3の認証情報がExtensions » Amazon S3タブの下に設定されると、これはCheckout Fields Managerフォームの任意のファイルアップロードフィールドで自動的に行われます。
ファイルをダウンロードに強制する
ブラウザがファイルをダウンロードする代わりに表示または再生しようとすることがあります。たとえば、ブラウザで音楽やビデオを直接開く場合などです。通常はウェブサーバーの設定でこれを修正できますが、Amazon S3に保存されているファイルはウェブサーバーの設定を完全に無視します。
代わりに、S3で直接設定する必要があります。
注意: この設定は、バケット全体ではなく、個々のファイルまたはフォルダに適用されます。
ファイルプロパティを開く
S3バケットで、操作したいファイルを見つけ、選択して、アクション » メタデータを変更をクリックします。
メタデータを追加をクリックし、タイプを システム定義、キーを Content-Disposition、値を attachmentに設定します。変更を保存をクリックします。

これにより、ブラウザで再生または表示される代わりに、ファイルがダウンロードされます。
トラブルシューティングとFAQ
ファイルがダウンロードされずにブラウザで開かれます
上記「ファイルを強制的にダウンロードさせる」を参照してください。
顧客は実際のAmazon S3 URLを確認し、ファイルを直接ダウンロードできますか?
いいえ。顧客には、あなた自身のストアを指すURLが表示されます。EDDは、元のAmazon S3ソースURLを公開することなく、ダウンロードが機能するように、バックグラウンドで場所を変換します。
エラー:SSL証明書の問題:ローカル発行者の証明書を取得できません
これは、ウェブサイトのサーバーにあるSSL証明書が無効であるか、正しくインストールされていないことを意味します。ホスティング会社に連絡し、証明書が正しくインストールされているか確認してもらってください。
エラー: アクセス拒否
これは、使用しているアクセスキーIDとシークレットキーが、S3バケットとリソースにアクセスするために必要な権限を持っていないことを意味します。
これを修正するには、IAMユーザーに新しい権限ポリシーをアタッチします。正しい権限については、上記「IAMアカウントの作成」を参照してください。
Amazon S3から直接URLをコピーして、ダウンロードのファイルURLフィールドに貼り付けた場合にも、このエラーが表示されることがあります。
エラー: RequestTimeTooSkewed
これは、ウェブサーバーのタイムゾーン設定が誤って構成されている場合に発生します。ホスティング会社に連絡し、タイムゾーン設定を再構成してもらってください。
エラー: SignatureDoesNotMatch
「計算されたリクエスト署名が提供された署名と一致しません」というエラーと一緒にこのエラーが表示される場合は、バケット名に大文字またはスペースが含まれている可能性があります。バケット名を小文字のみでスペースなしに変更するか、新しいバケットを作成してください。
エラー:NoSuchKey 指定されたキーが存在しません
これは、ファイルまたはバケットの名前付けに問題がある場合に発生します。名前に含まれる句読点や特殊文字をすべて削除してください。
たとえば、test-file-one.mp4.zip を testfileone.zip に変更します。
Amazon S3へのファイルのアップロードに関するその他のエラーまたは問題
Amazon S3へのファイルのアップロードや既存ファイルへのアクセスに問題がある場合は、次の手順を試してください。
- ダウンロード » 設定 » 拡張機能 » Amazon S3の下にあるAmazon S3エンドポイント設定を確認してください。正しいリージョンを含め、正しく設定されていることを確認してください。上記「Amazon S3 エンドポイント」を参照してください。
- ファイル名が1,024文字の制限を下回っていることを確認してください。ファイル名を正しくフォーマットする方法については、Amazonのドキュメントを参照してください。
- 最近新しいAmazon S3アカウントに切り替えて、バケットにファイルをアップロードできない場合は、通常は一時的なもので、数時間以内に自己解決します。詳細については、Amazonのドキュメントを参照してください。
- まだ解決しませんか? サポート に、表示されている正確なエラーメッセージまたは動作をご連絡ください。
ソフトウェアライセンスの更新が「ダウンロードに失敗しました。cURLエラー8:無効なContent-Length:値」で失敗しています
これは通常、Amazon S3機能がリダイレクトダウンロードを強制していないことを意味します。 ダウンロード方法を強制に設定 してみてください。
プラグインを更新する際に、顧客が「更新失敗:ダウンロード失敗。サーバーエラー」と表示されます
自動更新に使用されるソースファイルが、ダウンロードのライセンス設定で選択されていることを確認してください。
ストアのPHPエラーログに、次のようなPHP致命的エラーが表示される可能性が高いです。
PHP Fatal error: Uncaught InvalidArgumentException: Found 2 errors while validating the input provided for the GetObject operation: [Key] is missing and is a required parameter [Key] expected string length to be >= 1, but found string length of 0 in /home/ph198/public_html/wp-content/plugins/edd-amazon-s3/vendor/aws/aws-sdk-php/src/Api/Validator.php:65
