Files
Cloud-Index/docs/storage/s3.md
RhenCloud 22b2339d3c feat: 更新文档并添加 OneDrive 支持
- 在 overview.md 中添加 OneDrive 到存储后端对比
- 更新导航栏和 plume.config 以包含 OneDrive 链接
- 创建详细的 OneDrive 配置指南
- 从 GitHub 和 S3 文档中删除冗余章节
- 将 .env 和缓存目录添加到 .gitignore
2025-11-15 19:37:35 +08:00

6.4 KiB
Raw Blame History

title, createTime, permalink
title createTime permalink
Amazon S3 2025/11/09 00:26:55 /storage/s3

Amazon S3 配置指南

详细的 Amazon S3 配置步骤和最佳实践。

概述

Amazon S3Simple Storage Service是业界标准的对象存储服务具有以下优势

  • 🏢 企业级服务
  • 🔐 最高的安全性
  • 📊 功能最完整
  • 🌍 全球可用
  • 📈 自动扩展

账户设置

1. 创建 AWS 账户

访问 AWS 官网 创建账户。新用户享受 12 个月免费套餐。

2. 访问 S3 控制台

  1. 登录 AWS 管理控制台
  2. 搜索 "S3"
  3. 进入 S3 服务

创建存储桶

1. 创建新桶

  1. 点击 "创建存储桶"
  2. 输入存储桶名称(例如 my-cloud-storage
    • 名称必须全局唯一
    • 只能包含小写字母、数字、连字符和点
  3. 选择区域(例如 ap-northeast-1 东京)
  4. ACL - 保持默认(禁用)
  5. 阻止公有访问设置 - 根据需求配置(见下一步)
  6. 点击 "创建存储桶"

2. 配置公开访问(可选)

若要让文件可以公开访问:

  1. 进入存储桶 → "权限"
  2. 找到 "阻止公有访问" 部分
  3. 点击 "编辑"
  4. 取消勾选 "阻止所有公有访问"
  5. 点击 "保存"

3. 启用 ACL仅在需要时

  1. 进入存储桶 → "权限"
  2. 找到 "对象所有权" 部分
  3. 点击 "编辑"
  4. 选择 "ACL 已启用"
  5. 点击 "保存"

创建 IAM 用户和凭证

1. 创建 IAM 用户

使用 IAM 用户而不是根账户更安全:

  1. 进入 IAM 控制台
  2. 左侧菜单 → "用户"
  3. 点击 "创建用户"
  4. 输入用户名(例如 Cloud Index-user
  5. 点击 "创建用户"

2. 配置权限

方式 A使用托管策略推荐

  1. 进入用户详情
  2. 点击 "添加权限" → "直接附加现有策略"
  3. 搜索 "AmazonS3FullAccess"
  4. 勾选并点击 "下一步"
  5. 点击 "添加权限"

方式 B使用自定义策略更安全

  1. 进入用户详情
  2. 点击 "添加权限" → "创建内联策略"
  3. 选择 JSON
  4. 粘贴以下策略:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObjectVersion",
                "s3:ListBucketVersions"
            ],
            "Resource": "arn:aws:s3:::my-cloud-storage"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::my-cloud-storage/*"
        }
    ]
}
  1. 点击 "创建策略"

3. 创建访问密钥

  1. 进入用户详情
  2. 点击 "安全凭证" 选项卡
  3. 向下滚动到 "访问密钥"
  4. 点击 "创建访问密钥"
  5. 选择 "其他"
  6. 点击 "下一步"
  7. 复制 Access Key IDSecret Access Key
  8. 保存到安全位置

⚠️ 重要: 密钥只显示一次,请立即保存!

配置环境变量

编辑 .env 文件:

# 存储类型
STORAGE_TYPE=s3

# AWS 凭证
ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

# S3 配置
S3_BUCKET_NAME=my-cloud-storage
S3_REGION=ap-northeast-1

# 可选:公开访问配置
S3_PUBLIC_URL=https://my-cloud-storage.s3.ap-northeast-1.amazonaws.com

# 可选:预签名 URL 过期时间(秒,默认 3600
S3_PRESIGN_EXPIRES=3600

常用 AWS 区域

选择离你最近的区域以获得最佳性能:

区域代码 位置 说明
us-east-1 美国东部N. Virginia 美国
us-west-2 美国西部Oregon 美国西海岸
eu-west-1 欧洲Ireland 欧洲
ap-northeast-1 亚太Tokyo 日本、韩国
ap-southeast-1 亚太Singapore 东南亚
cn-north-1 中国(北京) 中国

配置公开访问 URL

方式 A使用 S3 默认 URL

S3_PUBLIC_URL=https://bucket-name.s3.region.amazonaws.com

方式 B使用 CloudFront CDN

  1. 进入 CloudFront 控制台
  2. 点击 "创建分配"
  3. 源域名:选择你的 S3 存储桶
  4. 其他设置保持默认
  5. 点击 "创建分配"
  6. 等待部署(约 15-20 分钟)
  7. 复制分配域名

配置环境变量:

S3_PUBLIC_URL=https://d123abc456.cloudfront.net

方式 C使用自定义域名

  1. 使用 Route 53 或其他 DNS 服务
  2. 创建 CNAME 记录指向 S3 或 CloudFront
  3. 配置 SSL 证书
S3_PUBLIC_URL=https://assets.example.com

启用 CORS如需跨域请求

  1. 进入存储桶
  2. 点击 "权限"
  3. 向下滚动到 "CORS"
  4. 点击 "编辑"
  5. 粘贴以下配置:
[
    {
        "AllowedHeaders": ["*"],
        "AllowedMethods": ["GET", "PUT", "POST", "DELETE", "HEAD"],
        "AllowedOrigins": ["*"],
        "ExposeHeaders": ["ETag"]
    }
]
  1. 点击 "保存更改"

启用版本控制(可选)

  1. 进入存储桶
  2. 点击 "属性"
  3. 找到 "版本控制"
  4. 点击 "编辑"
  5. 选择 "启用"
  6. 点击 "保存更改"

启用生命周期规则(自动清理)

自动删除过期文件以节省成本:

  1. 进入存储桶
  2. 点击 "管理"
  3. 点击 "创建生命周期规则"
  4. 输入规则名称(例如 delete-old-cache
  5. 配置规则:
    • 前缀:可选(如 cache/
    • 对象年龄30 天后删除
    • 过期对象删除标记:勾选
  6. 点击 "创建规则"

获取帮助

下一步