Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

リモート R2 バックエンド

最終更新 Markdown で表示Agent セットアップ

Cloudflare R2Terraform のリモートバックエンド を組み合わせると、Terraform の state 管理をスムーズに進められます。

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 HomeR2 を選びます。
  2. Account detailsManage R2 API tokens を選びます。
  3. Create API token を選びます。
  4. R2 Token のテキストを選び、API トークン名を編集します。
  5. PermissionsObject Read and Write を選び、トークンの対象を <YOUR_BUCKET_NAME> バケットに限定します。
  6. Create API Token を選びます。

トークンの作成が完了したら、Secret Access KeyAccess Key ID の値を確認します。

R2 バックエンドを定義する

上で作成した <YOUR_BUCKET_NAME> バケット向けの backend を、cloudflare.tf に追加します。

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>" }

state ファイルを R2 バックエンドへ移行する

cloudflare.tf を更新したあと、terraform init -reconfigure を実行すると、ローカルの state から リモート state へ移行できます。

役に立ちましたか?