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

Terraform (AWS)

Вы должны создать ключ доступа перед началом работы. Во всех примерах используется access_key_id и access_key_secret переменные, которые представляют Access Key ID и Secret Access Key значения, которые вы создали.


В этом примере показано, как настроить R2 с помощью Terraform, используя AWS provider.

С terraform установлен:

  1. Создайте main.tf файл или отредактируйте существующую конфигурацию Terraform
  2. Укажите URL конечной точки в endpoints.s3 с вашим Cloudflare account ID
  3. Заполните access_key и secret_key с соответствующим Учётные данные R2 API.
  4. Убедитесь, что skip_region_validation = true, skip_requesting_account_id = true, а также skip_credentials_validation = true заданы в конфигурации провайдера.
terraform {
  required_providers {
    aws = {
      source = "hashicorp/aws"
      version = "~> 5"
    }
  }
}

provider "aws" {
  region = "us-east-1"

  access_key = <R2 Access Key>
  secret_key = <R2 Secret Key>

	# Required for R2.
	# These options disable S3-specific validation on the client (Terraform) side.
  skip_credentials_validation = true
  skip_region_validation      = true
  skip_requesting_account_id  = true

  endpoints {
    s3 = "https://<account id>.r2.cloudflarestorage.com"
  }
}

resource "aws_s3_bucket" "default" {
  bucket = "<org>-test"
}

resource "aws_s3_bucket_cors_configuration" "default" {
  bucket   = aws_s3_bucket.default.id

  cors_rule {
    allowed_methods = ["GET"]
    allowed_origins = ["*"]
  }
}

resource "aws_s3_bucket_lifecycle_configuration" "default" {
  bucket = aws_s3_bucket.default.id

  rule {
    id     = "expire-bucket"
    status = "Enabled"
    expiration {
      days = 1
    }
  }

  rule {
    id     = "abort-multipart-upload"
    status = "Enabled"
    abort_incomplete_multipart_upload {
      days_after_initiation = 1
    }
  }
}

Затем можно использовать terraform plan , чтобы просмотреть изменения и terraform apply чтобы применить изменения.