← Poskytovatel Cloudflare Terraform / terraform / advanced-topics
Vzdálený backend R2
Cloudflare R2 a Vzdálené backendy Terraformu ↗ mohou vzájemně spolupracovat, aby poskytly bezproblémovou správu stavu Terraformu.
Cloudflare R2 je služba objektového úložiště, která poskytuje vysoce dostupný, škálovatelný a zabezpečený způsob ukládání a doručování statického obsahu, jako jsou obrázky, videa a statické webové stránky. R2 má Kompatibilita s S3 API díky čemuž se snadno integruje se stávající cloudovou infrastrukturou a aplikacemi.
Předpoklady
Vytvoření bucketu R2
Použití Wrangler, API, nebo Account View Dashboard ↗ vytvořte R2 Bucket.
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>"}'Vytvoření API klíčů s omezeným rozsahem pro bucket
Dále budete muset vytvořit API token R2 s přístupem omezeným na bucket hodnotou Object Read & Write oprávnění. Token API vytvoříte takto:
- V Domovská stránka účtu, vyberte R2.
- V části Podrobnosti o účtu, vyberte Správa tokenů R2 API.
- Vyberte Vytvoření API tokenu ↗.
- Vyberte R2 Token text pro úpravu názvu API tokenu.
- V části Oprávnění, vyberte Object Read and Write oprávnění a poté omezte rozsah tokenu na
<YOUR_BUCKET_NAME>bucket. - Vyberte Create API Token.
Po úspěšném vytvoření tokenu zkontrolujte Secret Access Key a Access Key ID hodnoty.
Definice backendu R2
Aktualizujte cloudflare.tf soubor tak, aby obsahoval backend ↗ pro <YOUR_BUCKET_NAME> bucket, který jste vytvořili výše.
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>" }Migrace souboru stavu do backendu R2
Po aktualizaci svého cloudflare.tf souboru můžete zadat terraform init -reconfigure příkaz pro migraci z místního stavu do vzdálený stav ↗.