リモートストレージ用のAWS S3 バケットの設定

Amazon Simple Storage Service (Amazon S3)は、業界をリードするスケーラビリティ、データ可用性、セキュリティ、パフォーマンスを提供するオブジェクトストレージサービスです。 AWS S3 サービスでは、データストレージにバケットつまりコンテナを使用します。 この設定では、private バケットを作成する必要があります。 クラウドインフラストラクチャー上のAdobe Commerceについては、 クラウドインフラストラクチャー上のCommerceのリモートストレージの設定を参照してください。

WARNING
Adobeは重大なセキュリティリスクをもたらすため、公共バケットの使用を強く勧めません。

AWS S3 アダプタでリモートストレージを有効にするには:

  1. Amazon S3 ダッシュボードにログインし、プライベート バケットを作成します。

  2. AWS IAM ロールを設定します。 または、アクセスキーと秘密鍵を生成します。

  3. デフォルトのデータベースストレージを無効にします。

    code language-bash
    bin/magento config:set system/media_storage_configuration/media_database 0
    
  4. プライベートバケットを使用するように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
    
  5. メディア ファイルをリモート ストレージと同期します。

    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 ファイルはファイルシステム内に配置されないので、copyrenamefile_put_contents などのネイティブの PHP ファイル I/O 操作を使用しないでください。 コード例については、DriverInterface.php を参照してください。

recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c