TerraformでRSTORE Spaceを扱う

背景

TerraformでS3互換のオブジェクトストレージRSTORE Spaceを扱いたい。

方法

S3互換なのでaws プロバイダーが使えるが、いくつかオプションをデフォルト値から変える必要がある。

resource

resource として扱う場合は、skip_credentials_validation, skip_region_validation, skip_requesting_account_idtrueにする(AWSの場合はバリデーションした方が好ましいが、RSTOR Spaceの場合はAWSではないので失敗するから、バリデーションはスキップする)。

例:バケットtest-buckettest.txtを配置する

provider "aws" {
  region                      = "ここにRegion"
  skip_credentials_validation = true
  skip_region_validation      = true
  skip_requesting_account_id  = true
  endpoints {
    s3 = "ここにEndpoint"
  }
}

resource "aws_s3_bucket_object" "test_copy_object" {
  bucket = "test-bucket"
  key    = "test.txt"
  source = "test.txt"
}

backend

backendとして扱う場合は、skip_region_validation, skip_credentials_validationtrueにする。

例:

terraform {
  backend "s3" {
    bucket                      = "bucket-name"
    key                         = "terraform.tfstate"
    endpoint                    = "ここにEndpoint"
    region                      = "ここにRegion"
    skip_region_validation      = true
    skip_credentials_validation = true
  }
}