← Провайдер Cloudflare Terraform / terraform / advanced-topics
Удалённый бэкенд R2
Cloudflare R2 и Удалённые бэкенды Terraform ↗ могут взаимодействовать друг с другом, обеспечивая удобную работу с управлением состоянием Terraform.
Cloudflare R2 представляет собой сервис объектного хранения, который обеспечивает высокодоступный, масштабируемый и безопасный способ хранения и раздачи статических файлов, таких как изображения, видео и статические сайты. R2 обладает Совместимость с S3 API что упрощает интеграцию с существующей облачной инфраструктурой и приложениями.
Предварительные требования
Создание бакета R2
Использование Wrangler, API, или Account View Dashboard ↗ создание Бакет 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-ключей с ограниченной областью действия для бакета
Далее вам нужно будет создать API-токен R2, ограниченный одним bucket с Object Read & Write разрешения. Чтобы создать API-токен, выполните следующие действия:
- В Account Home, выберите R2.
- В разделе Данные аккаунта, выберите Управление API-токенами R2.
- Выберите Создание API-токена ↗.
- Выберите R2 Token текст, чтобы изменить имя своего API токена.
- В разделе Разрешения, выберите Object Read and Write разрешения, а затем ограничьте область действия токена до
<YOUR_BUCKET_NAME>bucket. - Выберите Создать API-токен.
После успешного создания токена проверьте свой Secret Access Key и Access Key ID значения.
Определение бэкенда R2
Обновите ваш cloudflare.tf файл, чтобы включить backend ↗ для <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 команду для миграции с локального состояния на удалённое состояние ↗.