跳转到内容
搜索文档

远程 R2 后端

最后更新 查看 MarkdownAgent 设置

Cloudflare R2 和 Terraform 远程后端 ↗可以相互交互,为 Terraform 状态管理提供无缝体验。

Cloudflare R2 是一种对象存储服务,它提供了一种高可用、可扩展且安全的方式来存储和提供静态资产,例如图像、视频和静态网站。R2 具有 S3 API 兼容性,使其可以轻松地与现有的云基础设施和应用程序集成。

先决条件

创建 R2 存储桶

使用 Wrangler、API 或账户视图仪表板 ↗创建一个 R2 存储桶。

wrangler r2 bucket create <YOUR_BUCKET_NAME>
 curl https://api.cloudflare.com/client/v4/accounts/{account_id}/r2/buckets \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{"name": "<YOUR_BUCKET_NAME>"}'

创建作用域存储桶 API 密钥

接下来,您需要创建一个具有 Object Read & Write 权限的作用域存储桶 R2 API 令牌。要创建 API 令牌,请执行以下操作:

  1. 在 Account home(账户主页) 中,选择 R2。
  2. 在 Account details(账户详细信息) 下,选择 Manage R2 API Tokens(管理 R2 API 令牌)。
  3. 选择 Create API token(创建 API 令牌) ↗。
  4. 选择 R2 Token(R2 令牌) 文本以编辑您的 API 令牌名称。
  5. 在 Permissions(权限) 下,选择 Object Read and Write(对象读取和写入) 权限,然后将令牌的作用域限制为您的 <YOUR_BUCKET_NAME> 存储桶。
  6. 选择 Create API Token(创建 API 令牌)。

成功创建令牌后,请查看您的 Secret Access Key(机密访问密钥) 和 Access Key ID(访问密钥 ID) 值。

定义 R2 后端

更新您的 cloudflare.tf 文件以包含您在上面创建的 <YOUR_BUCKET_NAME> 存储桶的后端 ↗。

terraform {
  backend "s3" {
    bucket = "<YOUR_BUCKET_NAME>"
    key    = "/some/key/terraform.tfstate"
    region                      = "auto"
    skip_credentials_validation = true
    skip_metadata_api_check     = true
    skip_region_validation      = true
    skip_requesting_account_id  = true
    skip_s3_checksum            = true
    use_path_style              = true
    access_key = "<YOUR_R2_ACCESS_KEY>"
    secret_key = "<YOUR_R2_ACCESS_SECRET>"
    endpoints = { s3 = "https://<YOUR_ACCOUNT_ID>.r2.cloudflarestorage.com" }
  }
  required_providers {
    cloudflare = {
      source = "cloudflare/cloudflare"
      version = "~> 4"
    }
  }
}
provider "cloudflare" {
  # token pulled from $CLOUDFLARE_API_TOKEN
}
variable "account_id" { default = "<YOUR_ACCOUNT_ID>" }

将状态文件迁移到 R2 后端

更新 cloudflare.tf 文件后,您可以发出 terraform init -reconfigure 命令以从本地状态迁移到远程状态 ↗。

这篇文档对您有帮助吗?