リモートストレージ用のAWS S3 バケットの設定
Amazon Simple Storage Service (Amazon S3)は、業界をリードするスケーラビリティ、データ可用性、セキュリティ、パフォーマンスを提供するオブジェクトストレージサービスです。 AWS S3 サービスでは、データストレージにバケットつまりコンテナを使用します。 この設定では、private バケットを作成する必要があります。 クラウドインフラストラクチャー上のAdobe Commerceについては、 クラウドインフラストラクチャー上のCommerceのリモートストレージの設定を参照してください。
AWS S3 アダプタでリモートストレージを有効にするには:
-
Amazon S3 ダッシュボードにログインし、プライベート バケットを作成します。
-
AWS IAM ロールを設定します。 または、アクセスキーと秘密鍵を生成します。
-
デフォルトのデータベースストレージを無効にします。
code language-bash bin/magento config:set system/media_storage_configuration/media_database 0
-
プライベートバケットを使用するようにCommerceを設定します。 パラメーターの完全なリストについては、 リモートストレージオプションを参照してください。
code language-bash 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-bash 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 を参照してください。