跳到主要内容

文件存储提供商

默认情况下,Logto 控制台使用文本输入来处理静态文件 URL,例如头像。要启用更直观的拖放文件上传体验,你需要配置一个存储提供商。

Logto 支持多个存储提供商,包括 AWS S3 和 Azure Storage。本指南将向你展示如何为 Logto 配置存储提供商。

配置存储在数据库的 systems 表中,但建议使用 CLI 来配置存储提供商。有关更多信息,请尝试使用 "help" 命令:

pnpm logto db system --help

Azure Storage

Azure Storage 是一个强大且可扩展的云存储解决方案,允许你在云中存储和管理数据。以下指南将向你展示如何将 Azure Storage 配置为 Logto 的存储提供商。

前提条件

使用 CLI 配置

示例用法:

pnpm logto db system set storageProvider '{"provider":"AzureStorage","connectionString":"DefaultEndpointsProtocol=https;AccountName=logto;AccountKey=oRhfTBHOHiBxxxxxxxxxxxxxxxxZ0se6XROftl/Xrow==;EndpointSuffix=core.windows.net","container":"logto"}'

connectionString

要访问 Azure Storage,你需要使用连接字符串,它是包含建立与存储账户连接所需信息的字符字符串。

要获取连接字符串,请参阅官方 Azure Storage 连接字符串文档

container

容器是存储 blob 的存储资源。你可以使用容器来组织 blob 并控制对数据的访问。

要创建容器,请参阅官方 Azure Storage 容器文档

publicUrl

可选。

公共 URL 是可用于公开访问存储资源的 URL。如果你不使用 CDN,可以将其留空以使用 Azure Storage 的默认 "Primary endpoint" 作为公共 URL。 Logto 将借助 Azure SDK 从 "connectionString" 中获取此值。要了解有关存储账户主端点的更多信息,请参阅官方 Azure Storage 主端点文档

S3 Storage

S3 Storage 是一种通过 Web 服务接口提供对象存储的云存储服务。以下指南将向你展示如何将 S3 Storage 配置为 Logto 的存储提供商。

前提条件

使用 CLI 配置

示例用法:

pnpm logto db system set storageProvider '{"provider":"S3Storage","accessKeyId":"my-access-key-id","accessSecretKey": "my-secret-access-key","bucket":"logto","endpoint":"https://s3.us-east-2.amazonaws.com"}'

accessKeyId

访问密钥 ID 是 AWS 账户的标识符。要查找 AWS 账户的访问密钥 ID,请参阅官方 AWS 访问密钥 ID 文档

accessSecretKey

秘密访问密钥与访问密钥 ID 一起用于签署编程请求。要查找 AWS 账户的访问密钥秘密,请参阅官方 AWS 访问密钥秘密文档

bucket

存储桶是存储在 Amazon S3 中的对象的容器。要创建存储桶,请参阅官方 AWS S3 存储桶文档

region

可选。

区域是 AWS S3 存储桶所在的地理区域。如果 endpoint 是标准的 AWS S3 端点,则可以从 endpoint 中解析出来。要查找 AWS S3 区域,请参阅官方 AWS S3 区域文档

如果你使用的是 S3 兼容存储服务,可以将此字段留空。

endpoint

可选。

端点是用于访问 AWS S3 服务的 URL。要查找 AWS S3 端点,请参阅官方 AWS S3 端点文档

你可以将此字段留空以使用该区域的默认端点。如果你使用的是 S3 兼容存储服务,可以使用该服务的端点。

publicUrl

可选。

公共 URL 是可用于公开访问存储资源的 URL。如果你不使用 CDN,可以将其留空以使用 S3 Storage 的默认 URL。

Google Cloud Storage

Google Cloud Storage 是一种通过 Web 服务接口提供对象存储的云存储服务。以下指南将向你展示如何将 Google Cloud Storage 配置为 Logto 的存储提供商。

前提条件

获取密钥文件

Google Cloud SDK 通常使用 "密钥文件"。如果你不熟悉 Google Cloud,这可能是最具挑战性的部分。以下是获取密钥文件的方法:

  1. 访问服务账户页面: https://console.cloud.google.com/iam-admin/serviceaccounts
  2. 创建一个账户,输入名称,然后继续。
  3. 在下一步中,选择“Storage Object User”角色。你可以使用过滤器找到它。
  4. 完成账户创建后,转到账户详细信息页面并选择“密钥”选项卡。
  5. 点击“添加密钥”,选择“创建新密钥”,在对话框中选择“json”,然后下载你的 json 文件。

将密钥文件添加到日志 (Logto)

Logto 应该可以访问密钥文件。

在 Node.js 中运行

将文件复制到 /path/to/logto/core 并重命名为 google-storage-key.json

在 Docker 容器中运行

如果你在 Docker 容器中运行日志 (Logto),需要将文件挂载到容器中。假设你使用 Docker Compose,将以下内容添加到配置中:

volumes:
- ./path/to/google-storage-key.json:/etc/logto/core/google-storage-key.json

记得将 /path/to 替换为实际路径。

使用 CLI 配置

示例用法:

pnpm logto db system set storageProvider '{"provider":"GoogleStorage","projectId":"psychic-trainer-403801","keyFilename":"google-storage-key.json","bucketName":"logto-test2"}'

projectId

你的 Google Cloud 项目 ID。

keyFilename

密钥文件的名称,如果你按照上述步骤操作,则为 google-storage-key.json

bucketName

存储桶名称。

publicUrl

可选。

公共 URL 是可用于公开访问存储资源的 URL。如果你不使用 CDN,可以将其留空以使用 S3 Storage 的默认 URL。