配置 AWS 的 Amazon S3 用于存储和 Cloudfront 用于 CDN

,

开始使用

您需要:

  1. 拥有 app.yml 访问权限的 Discourse 实例
  2. AWS 账户

命名策略

出错的地方很多。采用对您(可能还有其他人)有意义的命名约定策略,将有助于故障排除,特别是当您配置多个 Discourse 实例时。

  • IAM 用户:your-iam-user
  • 策略:s3-discourse-policy-your-iam-user
  • 备份存储桶:yourdomain-subdomain-backups
  • 上传存储桶:yourdomain-subdomain-uploads
  • 分发 CDN:cdn-yourdomain-subdomain 和 s3-yourdomain-subdomain-uploads

可选:配置过程存储桶:a-origin-config-bucket

AWS 配置

除非另有说明,否则请使用 AWS 配置页面中的默认设置。

S3 名称、名称、名称

  • Discourse 实例域名:subdomain.yourdomain.tld(包括 www.yourdomain.tld 在内的 subdomain.yourdomain.tld)
  • IAM 用户:yourdomain-subdomain(yourdomain-discourse、yourdomain-forum 或在根域名处:yourdomain-tld-www)
  • IAM 用户策略:s3-discourse-policy-yourdomain-subdomain
  • 上传存储桶:yourdomain-subdomain-uploads 注意:别忘了在 存储桶 > 权限:访问控制列表 (ACL) - 访问控制列表 (ACL) - 授权方 中将“所有人(公共访问)”设置为“读取”。
  • 备份存储桶:yourdomain-subdomain-backups
  • 分发 CDN:cdn-yourdomain-subdomain 和 s3-yourdomain-subdomain-uploads
  • 配置过程存储桶:a-origin-config-bucket

IAM 用户

  1. 前往 IAM > 用户 > 选择“创建用户
  2. IAM > 用户 > 创建用户 > 指定用户详细信息 > 用户详细信息 > 用户名 > 输入名称,例如 your-iam-user > 选择“下一步”
  3. IAM > 用户 > 创建用户 > 设置权限 > 权限选项 > 选择“直接附加策略” > 选择“创建策略” > 打开创建策略页面(或者,也可以先在“策略”中创建策略,然后在创建用户时在“权限策略”中选择它。)
  4. IAM > 用户 > 创建用户 > 设置权限 > 权限策略 > 按类型下拉选择器筛选 > 选择“客户托管” > 选择新创建的策略 > 选择“下一步” > 选择“创建用户”
  5. IAM > 用户 > your-iam-user > 安全凭证 > 访问密钥 > 选择“创建访问密钥”
  6. IAM > 用户 > your-iam-user > 创建访问密钥 > 访问密钥最佳实践和替代方案 > 选择“其他” > 选择“下一步”
  7. IAM > 用户 > your-iam-user > 创建访问密钥 > 设置描述标签 > 选择“创建访问密钥”
  8. IAM > 用户 > your-iam-user > 创建访问密钥 > 检索访问密钥 > 安全保存访问密钥和秘密访问密钥以供 Discourse app.yml 使用 > 选择“完成”

策略

  1. 使用您的 IAM 用户名和存储桶名称修改 s3-discourse-policy-your-iam-user.txt
  2. 前往 IAM > 策略 > 创建策略
  3. IAM > 策略 > 创建策略 > 指定权限 > 策略编辑器 > 在策略编辑器中选择“JSON” > 从 s3-discourse-policy-your-iam-user.txt 复制策略并粘贴到 JSON 编辑器中(覆盖现有 JSON) > 选择“下一步”
  4. IAM > 策略 > 创建策略 > 审查并创建 > 策略详细信息 > 策略名称 > 输入策略名称,例如 s3-discourse-policy-your-iam-user > 选择“下一步”
  5. 前往 IAM 用户:4. IAM > 用户 > 创建用户以继续创建用户过程

Amazon S3 存储桶

创建并配置备份存储桶、上传存储桶以及可选但有用的配置过程存储桶。

创建备份存储桶 yourdomain-subdomain-backups

  1. 前往 Amazon S3 存储桶 > 选择“创建存储桶
  2. Amazon S3 > 存储桶 > 创建存储桶 > 常规配置 > 确认选择“通用用途”
  3. Amazon S3 > 存储桶 > 创建存储桶 > 常规配置 > 存储桶名称 > 输入备份存储桶名称,例如 yourdomain-subdomain-backups
  4. Amazon S3 > 存储桶 > 创建存储桶 > 常规配置 > 确认选择“禁用 ACL(推荐)”
  5. Amazon S3 > 存储桶 > 创建存储桶 > 此存储桶的阻止公共访问设置 > 取消选择“阻止所有公共访问”,然后选择“阻止通过新的公共存储桶或访问点策略授予的公共访问”和“阻止通过任何公共存储桶或访问点策略授予的公共和跨账户访问”
  6. Amazon S3 > 存储桶 > 创建存储桶 > 此存储桶的阻止公共访问设置 > 关闭阻止所有公共访问可能会导致此存储桶及其中的对象变为公共 > 选择“我确认当前设置可能会导致此存储桶及其中的对象变为公共。”
  7. Amazon S3 > 存储桶 > 创建存储桶 > 存储桶版本控制 > 存储桶版本控制 > 选择“启用” 信息:启用“生命周期规则”需要存储桶版本控制
  8. Amazon S3 > 存储桶 > 创建存储桶 > 选择“创建存储桶”

生命周期规则配置

备份保留规则

  1. Amazon S3 > 存储桶 > 选择新创建的存储桶,例如 yourdomain-subdomain-backups
  2. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 选择“创建生命周期规则”
  3. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 生命周期规则名称 > 输入规则名称,例如 backup retention
  4. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 选择规则范围 > 选择“应用于存储桶中的所有对象”
  5. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 选择规则范围 > 应用于存储桶中的所有对象 > 选择“我确认此规则将应用于存储桶中的所有对象。”
  6. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 生命周期规则操作 > 选择“在存储类之间转换非当前版本的对象”、“使当前版本的对象过期”和“永久删除非当前版本的对象”
  7. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 生命周期规则操作 > 转换按请求收费 > 选择“我确认此生命周期规则将产生每次请求的转换费用。”
  8. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 在存储类之间转换非当前版本的对象 > 选择存储类转换 > 选择“Glacier 即时检索”
  9. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 在存储类之间转换非当前版本的对象 > 对象变为非当前后的天数 > 输入“1”
  10. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 使当前版本的对象过期 > 对象创建后的天数 > 输入“7”或 15 或 30 或 ???
  11. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 永久删除非当前版本的对象 > 对象变为非当前后的天数 > 输入“91”
  12. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 确认“审查转换和过期操作”正确 > 选择“创建规则”

清理规则

  1. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 选择“创建生命周期规则”
  2. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 生命周期规则名称 > 输入规则名称 cleanup
  3. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 选择规则范围 > 选择“应用于存储桶中的所有对象”
  4. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 选择规则范围 > 应用于存储桶中的所有对象 > 选择“我确认此规则将应用于存储桶中的所有对象。”
  5. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 生命周期规则操作 > 选择“永久删除非当前版本的对象”和“删除过期的对象删除标记或不完整的多部分上传”
  6. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 永久删除非当前版本的对象 > 对象变为非当前后的天数 > 输入“92”
  7. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 永久删除非当前版本的对象 > 删除过期的对象删除标记或不完整的多部分上传 > 过期的对象删除标记 > 选择“删除过期的对象删除标记”
  8. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 永久删除非当前版本的对象 > 删除过期的对象删除标记或不完整的多部分上传 > 不完整的多部分上传 > 选择“删除不完整的多部分上传”
  9. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 永久删除非当前版本的对象 > 删除过期的对象删除标记或不完整的多部分上传 > 不完整的多部分上传 > 删除不完整的多部分上传 > 天数 > 输入“3”或 ???
  10. Amazon S3 > 存储桶 > yourdomain-subdomain-backups > 管理 > 生命周期配置 > 确认“审查转换和过期操作”正确 > 选择“创建规则”

创建上传存储桶 yourdomain-subdomain-uploads

  1. 前往 Amazon S3 > 存储桶 > 选择“创建存储桶
  2. Amazon S3 > 存储桶 > 创建存储桶 > 常规配置 > 确认选择“通用用途”
  3. Amazon S3 > 存储桶 > 创建存储桶 > 常规配置 > 存储桶名称 > 输入上传存储桶名称,例如 yourdomain-subdomain-uploads
  4. Amazon S3 > 存储桶 > 创建存储桶 > 常规配置 > 选择“启用 ACL”
  5. Amazon S3 > 存储桶 > 创建存储桶 > 此存储桶的阻止公共访问设置 > 取消选择“阻止所有公共访问”,然后选择“阻止通过新的公共存储桶或访问点策略授予的公共访问”和“阻止通过任何公共存储桶或访问点策略授予的公共和跨账户访问”
  6. Amazon S3 > 存储桶 > 创建存储桶 > 此存储桶的阻止公共访问设置 > 关闭阻止所有公共访问可能会导致此存储桶及其中的对象变为公共 > 选择“我确认当前设置可能会导致此存储桶及其中的对象变为公共。”
  7. Amazon S3 > 存储桶 > 创建存储桶 > 选择“创建存储桶”
  8. Amazon S3 > 存储桶 > 存储桶屏幕 > 选择新创建的存储桶,例如 yourdomain-subdomain-uploads
    在完成创建分发 #2 后返回执行第 9 步
  9. Amazon S3 > 存储桶 > yourdomain-subdomain-uploads > 权限 > 存储桶策略 > 选择编辑 > 粘贴来自 创建分发 #2 11. CloudFront > 分发 > 分发 ID > 编辑源 > 源访问控制 > 选择“保存更改”的 JSON
  10. Amazon S3 > 存储桶 > yourdomain-subdomain-uploads > 权限 > 访问控制列表 (ACL) > 选择编辑 > 所有人(公共访问) > 选择“读取” > 当您向所有人或已验证用户组授权时,世界上的任何人都可以访问此存储桶中的对象。选择“我了解这些更改对我的对象和存储桶的影响。” > 选择“保存更改”

创建配置过程存储桶 a-origin-config-bucket
创建一个在分发 #1 配置过程中使用的存储桶。名称和配置并不重要,因为该存储桶仅作为初始源临时使用,将在配置过程中被删除。
1. 前往 Amazon S3 > 存储桶 > 选择“创建存储桶
2. Amazon S3 > 存储桶 > 创建存储桶 > 常规配置 > 确认选择“通用用途”
3. Amazon S3 > 存储桶 > 创建存储桶 > 常规配置 > 存储桶名称 > 输入上传存储桶名称,例如 a-origin-config-bucket
4. 浏览配置页面并点击“创建存储桶”

CloudFront 分发

创建两个 AWS S3 CloudFront 分发。一个用于提供网站资源,另一个用于提供上传存储桶资源。

创建分发 #1

  分发 #1
    DISCOURSE_CDN_URL
      分发名称:cdn-yourdomain-subdomain
      源:subdomain.yourdomain.tld
      分发域名 (Cloudfront URL):AWS-assigned.cloudfront.net
      备用域名:discourse-cdn.yourdomain.tld
  1. 前往 CloudFront > 分发 > 选择“创建
  2. CloudFront > 分发 > 创建分发 > 选择计划 > 选择“按量付费” > 选择“下一步”
  3. CloudFront > 分发 > 创建分发 > 开始 > 分发选项 > 分发名称 > 输入分发名称,例如 cdn-yourdomain-subdomain
  4. CloudFront > 分发 > 创建分发 > 开始 > 分发选项 > 描述 - 可选 > 输入“cdn-yourdomain-subdomain”(可选,但有助于可见性)
  5. CloudFront > 分发 > 创建分发 > 开始 > 分发选项 > 分发类型 > 确认选择“单个网站或应用” > 选择“下一步”
  6. CloudFront > 分发 > 创建分发 > 指定源 > 源类型 > 选择“其他” 通过其可公开解析的 URL 访问任何 AWS 或非 AWS 源。
  7. CloudFront > 分发 > 创建分发 > 指定源 > 源 > 自定义源 > 输入域名,例如 subdomain.yourdomain.tld
  8. CloudFront > 分发 > 创建分发 > 指定源 > 设置 > 缓存设置 > 选择“自定义缓存设置”
  9. CloudFront > 分发 > 创建分发 > 指定源 > 设置 > 缓存设置 > 缓存策略 > 从下拉列表中选择“CachingOptimized” > 选择“下一步”
  10. CloudFront > 分发 > 创建分发 > 启用安全 > 做出您的选择 - 对于本指南 > 选择“不启用安全保护” > 选择“下一步”
  11. CloudFront > 分发 > 创建分发 > 审查并创建 > 选择“创建分发”
    如果使用品牌化 CDN URL → 第 12 步
  12. CloudFront > 分发 > 分发 ID > 备用域名 > 选择“添加域名”
  13. CloudFront > 分发 > 分发 ID > 备用域名 > 添加域名 > 配置域名 > 域名 > 要服务的域名 > 输入 DISCOURSE_CDN_URL,例如 discourse-cdn.yourdomain.tld > 选择“下一步”

未完成:备用域名:discourse-cdn.yourdomain.tld

创建分发 #2

  分发 #2
    DISCOURSE_S3_CDN_URL
      分发名称:s3-yourdomain-subdomain-uploads
      源:yourdomain-subdomain-uploads
      分发域名 (Cloudfront URL):AWS-assigned.cloudfront.net
      备用域名:s3-cdn.yourdomain.tld
  1. CloudFront > 分发 > 创建分发
  2. CloudFront > 分发 > 创建分发 > 选择计划 > 选择“按量付费” > 选择“下一步”
  3. CloudFront > 分发 > 创建分发 > 开始 > 分发选项 > 分发名称 > 输入分发名称,例如 s3-yourdomain-subdomain-uploads
  4. CloudFront > 分发 > 创建分发 > 开始 > 分发选项 > 描述 - 可选 > 输入“s3-yourdomain-subdomain-uploads”(可选,但有助于可见性)
  5. CloudFront > 分发 > 创建分发 > 开始 > 分发选项 > 分发类型 > 确认选择“单个网站或应用” > 选择“下一步”
  6. CloudFront > 分发 > 创建分发 > 指定源 > 源类型 > 确认选择“Amazon S3”
  7. CloudFront > 分发 > 创建分发 > 指定源 > 源 > S3 源 > 选择“浏览 S3” > 选择上传存储桶“yourdomain-subdomain-uploads” > 选择“选择” > 选择“下一步”
  8. CloudFront > 分发 > 创建分发 > 启用安全 > 做出您的选择 - 对于本指南 > 选择“不启用安全保护” > 选择“下一步”
  9. CloudFront > 分发 > 创建分发 > 审查并创建 > 确认“审查并创建”正确 > 选择“创建分发” → 新创建的分发信息页面应在 CloudFront > 分发 > 分发 ID 中打开
  10. CloudFront > 分发 > 分发 ID > 源 > 选择源 > 选择“编辑”
  11. CloudFront > 分发 > 分发 ID > 编辑源 > 源访问控制 > ! 您必须使用此策略允许 CloudFront 访问… > 选择“复制策略” > 前往 创建上传存储桶 9. Amazon S3 > 存储桶 > yourdomain-subdomain-uploads > 权限 > 存储桶策略

未完成:备用域名:s3-cdn.yourdomain.tld

Discourse 管理

截至 Discourse 版本: 2025.12.0-latest

在 Discourse 管理 UI 中进行以下更改

备份设置 /admin/backups/settings

  1. 最大备份数 > 输入要保留在本地的备份数量
  2. 备份包含上传 > 选择“在计划备份中包含上传。禁用此选项将仅备份数据库。”

S3 设置 /admin/site_settings/category/all_results?filter=S3

  1. S3 对所有上传使用 CDN URL > 选择“对所有上传到 S3 的文件使用 CDN URL,而不仅仅是图片。”(Discourse 默认未选中)

编辑配置 (app.yml) 无品牌 URL

编辑 app.yml,针对品牌化 URL 或无品牌 Cloudfront URL 进行以下更改。

Discourse 无品牌 URL

此配置适用于无品牌 Cloudfront 分发。您的 DISCOURSE_S3_REGION 可能不同。
DISCOURSE_CDN_URL: https://amazonassigned.cloudfront.net

S3 存储配置(无品牌)

  ## S3 存储配置
  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION:  us-east-1
  DISCOURSE_S3_ACCESS_KEY_ID: 密钥已模糊处理
  DISCOURSE_S3_SECRET_ACCESS_KEY: 密钥已模糊处理
  DISCOURSE_S3_CDN_URL: https://amazonassigned.cloudfront.net
  DISCOURSE_S3_BUCKET: your-bucket-name-uploads
  DISCOURSE_S3_BACKUP_BUCKET: your-bucket-name-backups
  DISCOURSE_BACKUP_LOCATION: s3

Discourse 品牌化 URL

DNS 配置

如果您更喜欢使用基于 yourdomain.com 的 URL 作为 CDN,则需要进行一些 DNS 更改并调整您的 CDN URL。

提示:别忘了在各自的 CloudFront 分发的“备用域名”中添加 discourse-cdn.yourdomain.coms3-cdn.yourdomain.com 作为域名。

如果您想使用域名品牌化的 CloudFront 分发,请配置 DNS。

DISCOURSE_CDN_URL

现有记录:A   discourseinstance.yourdomain.com   实例 IP   注意:这是现有的 Discourse 安装 IP。
新记录:    A   discourse-cdn-cloudfront.yourdomain.com   实例 IP
新记录:    CNAME discourse-cdn.yourdomain.com  ->   amazonassigned.cloudfront.net

DISCOURSE_S3_CDN_URL

新记录:    CNAME s3-cdn-cloudfront.yourdomain.com  ->   amazonassigned.cloudfront.net
新记录:    CNAME  s3-cdn.yourdomain.com  ->   s3-cdn-cloudfront.yourdomain.com

编辑配置 (app.yml) 品牌化 URL

DNS 更改完成后,您可以编辑 app.yml 并进行以下更改。

如果您使用域 CNAME 作为 CloudFront 分发(amazonassigned.cloudfront.net),请更改 DISCOURSE_CDN_URL 和/或 DISCOURSE_S3_CDN_URL。

DISCOURSE_CDN_URL: https://discourse-cdn.yourdomain.com

S3 存储配置(品牌化)

## S3 存储配置
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION:  us-east-1
DISCOURSE_S3_ACCESS_KEY_ID: 密钥已模糊处理
DISCOURSE_S3_SECRET_ACCESS_KEY: 密钥已模糊处理
DISCOURSE_S3_CDN_URL: https://s3-cdn.yourdomain.com
DISCOURSE_S3_BUCKET: your-bucket-name-uploads
DISCOURSE_S3_BACKUP_BUCKET: your-bucket-name-backups
DISCOURSE_BACKUP_LOCATION: s3

其他配置编辑 (app.yml)

无论您使用哪种方法(品牌化或 Cloudfront URL),都需要下面的 after_assets_precompile 部分,以确保在后续重建期间保持更新。

  hooks:
    after_code:
      - exec:
          cd: $home/plugins
          cmd:
            - git clone https://github.com/discourse/docker_manager.git
            - 您可能还有更多插件
    after_assets_precompile:
      - exec:
          cd: $home
          cmd:
            - sudo -E -u discourse bundle exec rake s3:upload_assets
            - sudo -E -u discourse bundle exec rake s3:expire_missing_assets

使用 ./launcher rebuild app 重建您的实例。

./launcher rebuild app 成功完成后,执行以下 rake 任务。

./launcher enter app

rake posts:rebake
rake uploads:migrate_to_s3
rake posts:rebake_uncooked_posts

rake s3:upload_assets
rake s3:expire_missing_assets

如果 rake 任务顺利完成且无错误,则一切就绪。

在某些站点上,初始重建可能会因与 s3:upload_assets 相关的错误而失败。如果发生这种情况,

检查上传存储桶的“读取”设置。如果设置正确,则

注释掉或删除 after_assets_precompile 部分:

  after_assets_precompile:
      - exec:
          cd: $home
          cmd:
            - sudo -E -u discourse bundle exec rake s3:upload_assets
            - sudo -E -u discourse bundle exec rake s3:expire_missing_assets

然后再次运行 ./launcher rebuild app。接着运行 rake s3:upload_assetsrake s3:expire_missing_assets

如果这两个 rake 任务都顺利完成且无错误,则重新添加或取消注释 after_assets_precompile 部分,再次重建并执行上述所有 rake 任务。

如果任一 rake 任务报错或重建再次失败,则您的 app.yml 和/或 AWS S3 配置和/或 DNS 记录中存在问题。祝您好运!:slight_smile:

s3-discourse-policy-your-iam-user.txt|附件 (697 字节)

1 个赞

AWS 支持关于:清理规则中方法的确认

我已经审阅了您提议的生命周期规则配置,很高兴地确认您的设置设计良好,并遵循了 AWS 备份存储桶管理的最佳实践。

========== 生命周期规则评估 ==========

您的配置非常出色,并解决了备份清理的关键领域:

  • 非当前版本清理(92 天):这是一个合理的保留期,平衡了存储成本和恢复需求。92 天的保留期为备份验证提供了充足的时间,同时防止了存储的无限期积累。
  • 过期删除标记的移除:已正确配置,可自动清理孤立的删除标记,这有助于优化存储成本和存储桶性能。
  • 不完整多部分上传清理(3 天):3 天的设置是最佳的——足够短以防止因上传失败而浪费存储空间,但也足够长以适应合法的大型备份操作。
  • 范围应用:应用于“存储桶中的所有对象”对于专用的备份存储桶是合适的,在这些存储桶中,所有内容都遵循相同的生命周期模式。

AWS 支持关于:备份存储桶生命周期配置

对 S3 生命周期配置的备份存储桶进行审查

我已经分析了您的完整生命周期配置设置,可以确认您的“备份保留”规则结构良好,并遵循了 AWS 备份管理的最佳实践。

我调查的关键发现如下:

  • 您的存储桶有两个相辅相成的生命周期规则,它们协同工作,效果良好
  • “备份保留”规则使用适当的时间表正确处理当前和非当前版本
  • 该配置包括非当前版本的成本效益存储转换
  • 所有规则组件都已使用适当的时间参数正确配置
  • 该存储桶已在 us-east-1 中正确设置并具有适当的权限

配置评估:

您的“备份保留”规则有效地管理了备份对象的生命周期:

  • 在 1 天后将非当前版本转换为 Glacier Instant Retrieval(成本优化)
  • 在 7 天后过期当前版本(适用于定期备份)
  • 在 91 天后永久删除非当前版本(良好的保留期)

此规则补充了您的“清理”规则,该规则处理:

  • 删除过期删除标记(防止孤立标记)
  • 在 3 天后清理不完整的多部分上传(防止存储浪费)
  • 在 92 天后删除非当前版本(确保完全清理)

两个规则都适用于存储桶中的所有对象,这对于遵循相同生命周期模式的专用备份存储是合适的。

当前版本的 7 天过期对于常规备份场景来说似乎是合适的,但您可以根据您的具体保留要求进行调整(如果需要更长的保留期,则为 15 或 30 天)。

您的实施是完整的,并遵循了 AWS S3 生命周期管理的最佳实践。


事实证明有更有效的方法。

CloudFront > 分发 > 创建分发 > 指定源 > 源类型 > 选择“其他” 通过其可公开解析的 URL 引用任何 AWS 或非 AWS 源。

CloudFront > 分发 > 创建分发 > 指定源 > 源 > 自定义源 > 输入域名,例如 subdomain.yourdomain.tld

CloudFront > 分发 > 创建分发 > 指定源 > 设置 > 缓存设置 > 选择“自定义缓存设置”

CloudFront > 分发 > 创建分发 > 指定源 > 设置 > 缓存设置 > 缓存策略 > 从下拉列表中选择“CachingOptimized” > 选择“下一步”

继续进行安全设置,忽略原始的第 10 - 14 步

CloudFront > 分发 > 创建分发 > 查看并创建 > 选择“创建分发”