0

我正在实施一个使用 AWS Backup 备份我的 Oracle RDS 数据库的解决方案。我想在当前区域拥有一个保管库,在不同区域拥有一个备份保管库。作为 Terraform 的新手,我不太确定如何实现这一点。我会在不同区域添加另一个 AWS 提供商吗?我的一些代码如下供参考:

providers.tf:

# Configure the AWS Provider

provider "aws" {
  profile = "sandbox"
  region  = var.primary_region # resolves to us-east-1
  alias   = "primary"
  allowed_account_ids = [
    var.account_id
  ]
}

------------------------------------------------------

backups.tf:

resource "aws_backup_region_settings" "test" {
  resource_type_opt_in_preference = {
    "RDS" = true
  }
}

resource "aws_backup_vault" "test" {
  name        = "backup_vault"
  kms_key_arn = aws_kms_key.sensitive.arn
}

# Would like this to be created in us-west-2:

resource "aws_backup_vault" "test_destination" {
  name        = backup_destination_vault"
  kms_key_arn = aws_kms_key.sensitive.arn
}

resource "aws_backup_plan" "backup" {
  name = "oasis-backup-plan"

  rule {
    rule_name         = "backup"
    target_vault_name = aws_backup_vault.backup.name
    schedule          = "cron(0 12-20 * * ? *)"

    copy_action {
      destination_vault_arn = aws_backup_vault.backup_destination.arn
    }
  }
}

resource "aws_iam_role" "backup" {
  name               = "backup_role"
  assume_role_policy = <<POLICY
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": ["sts:AssumeRole"],
      "Effect": "allow",
      "Principal": {
        "Service": ["backup.amazonaws.com"]
      }
    }
  ]
}
POLICY
}

resource "aws_iam_role_policy_attachment" "backup" {
  policy_arn = "arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForBackup"
  role       = aws_iam_role.backup.name
}

resource "aws_backup_selection" "backup" {
  iam_role_arn = aws_iam_role.backup.arn
  name         = "backup_selection"
  plan_id      = aws_backup_plan.backup.id

  resources = [
    aws_db_instance.oasis.arn
    data.aws_db_instance.backup.db_instance_arn  # My Oracle DB, already existing
  ]
}

我知道 AWS Backup 在 AWS Organizations 中被大量使用;尽管我们在众多帐户中都使用了这种模式,但我试图避免在这一点上涉及这种级别的控制;我只是在做 POC,试图为 DR 区域制定合理的备份计划。

4

1 回答 1

0

所以为了做你想做的事,你需要使用 terraform 的一个特性,它允许你配置多个提供程序:

https://www.terraform.io/docs/language/providers/configuration.html

配置完成后,您可以指定在要配置第二个保管库时使用的提供程序,并且一切都应该正常工作。

于 2021-09-08T13:14:50.333 回答