Amazon S3 提供方凭据必须设置在 s3Options 下

页面摘要: 在 Strapi 5 中,Amazon S3 上传提供方选项必须嵌套在 s3Options 对象中,且凭据应传入 credentials 对象内。

在 Strapi 5 中,Amazon S3 提供方(@strapi/provider-upload-aws-s3)使用 AWS SDK v3,这改变了凭据及其他客户端选项的配置位置。

本页面是破坏性变更数据库的一部分,提供有关该破坏性变更的信息,以及从 Strapi v4 迁移到 Strapi 5 的附加说明。

破坏性变更说明

在 Strapi v4 中

accessKeyId、secretAccessKey、region 和 params 等选项可以直接在 providerOptions 下传递,不存在 s3Options 键。

providerOptions: {
  accessKeyId: env('AWS_ACCESS_KEY_ID'),
  secretAccessKey: env('AWS_ACCESS_SECRET'),
  region: env('AWS_REGION'),
  params: {
    Bucket: env('AWS_BUCKET'),
  },
},

在 Strapi 5 中

这些选项必须嵌套在 s3Options 对象内,且凭据应包裹在 credentials 对象中。将 accessKeyId/secretAccessKey 放在 s3Options 的根层级仍然有效,但会触发弃用警告。

providerOptions: {
  s3Options: {
    credentials: {
      accessKeyId: env('AWS_ACCESS_KEY_ID'),
      secretAccessKey: env('AWS_ACCESS_SECRET'),
    },
    region: env('AWS_REGION'),
    params: {
      Bucket: env('AWS_BUCKET'),
    },
  },
},

迁移

本节汇总了关于该破坏性变更的有用说明和操作步骤。

说明

手动操作步骤

如果你正在将 Amazon S3 配置从 Strapi v4 升级:

  1. 将 accessKeyId、secretAccessKey、region、params(以及任何其他 S3 客户端选项)嵌套到 providerOptions 下的 s3Options 对象内。
  2. 将 accessKeyId 和 secretAccessKey 移入 s3Options 内的 credentials 对象中。将它们留在 s3Options 的根层级仍然有效,但已被弃用并会触发警告。