简介
在 Ghost 博客系统中,默认的图片存储方式是本地存储。然而在生产环境中,本地存储容量有限,不能满足业务需求。此时,我们需要使用 AWS S3 存储来存储博客中的图片。为此,我们可以使用 npm 包 ghost-storage-adapter-s3-test,该包提供了与 Ghost 兼容的 S3 存储适配器,可以在 Ghost 中直接使用 S3 存储。
安装
在 Node.js 环境中,使用以下命令安装 ghost-storage-adapter-s3-test:
npm install ghost-storage-adapter-s3-test
配置
AWS S3 配置
首先,我们需要在 AWS S3 上创建一个 Bucket。具体操作如下:
- 登录 AWS 控制台。
- 进入 S3 服务页面,点击“创建存储桶”,按照提示设置 Bucket 的名称、地域等信息。
- 在 Bucket 的“权限”标签页下,设置“CORS 配置”为以下内容:
-- -------------------- ---- ------- ------------------- ---------- -------------------------------- ---------------------------------- ----------------------------------- -------------------------------------------- ------------------------------------------- ----------- --------------------
这里的 CORS 设置,是为了在前端通过浏览器访问 S3 Bucket 时,可以跨域访问。
- 在 Bucket 的“权限”标签页下,设置“Bucket 政策”为以下内容:
-- -------------------- ---- ------- - ---------- ------------- ------------ - - --------- -------- ------------ - ------ ------------------------------------- -- --------- - --------------- --------------- --------------- -- ----------- - ------------------------------- ---------------------------- - - - -
这里的 Bucket 政策,是为了授权我们的 IAM 用户可以访问该 Bucket。
Ghost 配置
在 Ghost 的配置文件 config.production.json 中,添加如下配置:
-- -------------------- ---- ------- - ---------- - --------- -------------------------------- -------------------------------- - -------------- ---------------------- ------------------ -------------------------- --------- --------------- --------- -------------- ------------ ------------------ ------------ ------------------ - - -
配置说明:
- accessKeyId:AWS 访问密钥 ID,可以在 IAM 中创建。
- secretAccessKey:AWS 访问密钥密码,可以在 IAM 中创建。
- region:Bucket 所在地域,如“us-east-1”等。
- bucket:Bucket 名称。
- assetHost:外部访问的 S3 地址,如“https://s3.amazonaws.com”等。
- assetPath:存储图片的路径,建议使用“/content/images/”。
使用
上述配置完成后,我们在 Ghost 中上传图片时,就可以自动将图片上传到 S3 存储中了。同时,图片的 URL 也会自动使用 S3 的 URL。
示例代码
以下是一个使用 ghost-storage-adapter-s3-test 的 Node.js 代码示例:
-- -------------------- ---- ------- ----- -- - -------------- ----- ------- - ----------------------------------------- ----- ------- - --- --------- ------------ ---------------------- ---------------- -------------------------- ------- --------------- ------- -------------- ---------- ------------------ ---------- ------------------- --- ----- -------- - --------------- ----- ------ - ------------------------------ ------------------ ----- -- - ----------------- --- -------------------- - ----- ----------- ------------- -- - ----------------- -------------- -- - ----------------- ---
以上代码实现了将本地文件 tmp/test.png 上传到 S3 存储中,并返回 S3 的 URL。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055c7e81e8991b448d9f0a