INTEGRITY Документация

Удалённый бэкенд 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-токен, выполните следующие действия:

  1. В Account Home, выберите R2.
  2. В разделе Данные аккаунта, выберите Управление API-токенами R2.
  3. Выберите Создание API-токена ↗.
  4. Выберите R2 Token текст, чтобы изменить имя своего API токена.
  5. В разделе Разрешения, выберите Object Read and Write разрешения, а затем ограничьте область действия токена до <YOUR_BUCKET_NAME> bucket.
  6. Выберите Создать 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 команду для миграции с локального состояния на удалённое состояние ↗.