リモートストレージ用AWS S3 バケットの設定
Amazon Simple Storage Service (Amazon S3) は、業界をリードするスケーラビリティ、データ可用性、セキュリティ、パフォーマンスを提供するオブジェクト ストレージ サービスです。 AWS S3 サービスでは、データストレージにバケット(コンテナ)を使用します。 この設定では、private バケットを作成する必要があります。 クラウド インフラストラクチャ上のAdobe Commerceについては、 クラウド インフラストラクチャ上のCommerceのリモート ストレージの設定を参照してください。
AWS S3 アダプタでリモート ストレージを有効にするには:
-
Amazon S3 ダッシュボードにログインし、private バケットを作成します。
-
AWS IAMの役割を設定します。 または、アクセスキーと秘密鍵を生成します。
-
デフォルトのデータベースストレージを無効にします。
code language-shell bin/magento config:set system/media_storage_configuration/media_database 0 -
プライベートバケットを使用するようにCommerceを設定します。 パラメーターの完全なリストについては、 リモートストレージオプション を参照してください。
code language-shell bin/magento setup:config:set --remote-storage-driver="aws-s3" --remote-storage-bucket="<bucket-name>" --remote-storage-region="<region-name>" --remote-storage-prefix="<optional-prefix>" --remote-storage-key=<optional-access-key> --remote-storage-secret=<optional-secret-key> -n -
メディアファイルをリモートストレージと同期します。
code language-shell bin/magento remote-storage:sync
Nginxの設定
Nginxでは、proxy_pass ディレクティブを使用して認証を実行するには、追加の設定が必要です。 次のプロキシ情報をnginx.conf ファイルに追加します。
nginx.conf
location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2)$ {
# Proxying to AWS S3 storage.
resolver 8.8.8.8;
set $bucket "<s3-bucket-name>";
proxy_pass https://s3.amazonaws.com/$bucket$uri;
proxy_pass_request_body off;
proxy_pass_request_headers off;
proxy_intercept_errors on;
proxy_hide_header "x-amz-id-2";
proxy_hide_header "x-amz-request-id";
proxy_hide_header "x-amz-storage-class";
proxy_hide_header "Set-Cookie";
proxy_ignore_headers "Set-Cookie";
}
認証
AWS IAM ロールの代わりにアクセスキーと秘密鍵を使用する場合は、ngx_aws_auth Nginx モジュール を含める必要があります。
権限
S3統合は、キャッシュされた画像を生成してローカルファイルシステムに保存する機能に依存しています。 したがって、pub/mediaおよび類似のディレクトリに対するフォルダー権限は、ローカルストレージを使用する場合とS3に対して同じです。
ファイル操作
ファイル ストレージの種類に関係なく、コーディングまたは拡張機能の開発でCommerce ファイル アダプターのメソッドを使用することを強くお勧めします。 S3 ファイルはファイルシステム内に存在しないため、ストレージにS3を使用する場合は、copy、rename、file_put_contentsなどのネイティブ PHP ファイル I/O操作を使用しないでください。 コード例については、DriverInterface.phpを参照してください。