使用Cloudflare Worker的免费账户限制R2的支出

使用Cloudflare Worker的免费账户限制R2的支出

众所周知CF R2提供了10GB了免费空间和每月一千万次的免费Class B操作。也就是说如果开一个存储桶,并且设置为公开的话,每个月被刷一千万次之后就开始收费,而且上不封顶,没有限制的方法。

为了这个存储桶能够被外界访问到但是同时不会一夜破产,可以使用免费套餐的CF Worker作为限制,它在一天100000次请求之后就会罢工。

如果创建一个CF Worker把私有桶映射为公开桶,那么就可以把每天的访问次数限制在10w次,然后每月限制为300w次。

export default {
  async fetch(request, env) {
    const path = decodeURIComponent(new URL(request.url).pathname.slice(1));

    if (!path) {
      return new Response("Not Found", { status: 404 });
    }
    
    try {
      const file = await env.OPCT.get(path);
      
      if (!file) {
        return new Response("Not Found", { status: 404 });
      }
      
      const headers = new Headers();
      headers.set('Content-Type', file.httpMetadata?.contentType || 'application/octet-stream');
      
      return new Response(file.body, { headers });
    } catch (error) {
      return new Response("Server Error", { status: 500 });
    }
  }
}

设置绑定那里把桶绑定到OPCT名称上就行
另外Worker的放置位置保持在默认就行,选择智能的话反而Worker全都运行在桶的地理位置

另外如果不是为了白嫖,那Backblaze B2的存储价格低一些。

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注