跳转到内容
搜索文档

远程 R2 后端

最后更新 查看 MarkdownAgent 设置

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

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

先决条件

创建 R2 存储桶

使用 WranglerAPI账户视图仪表板创建一个 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 命令以从本地状态迁移到远程状态

这篇文档对您有帮助吗?