Как получить самый последний общий снимок AWS RDS по идентификатору? - PullRequest
2 голосов
/ 06 февраля 2020

У меня есть 2 базы данных на AWS RDS, одна для stage и одна для production для двух учетных записей. Я пытаюсь скопировать данные из production в stage каждые x дней. Я планировал сделать копию самого последнего автоматического снимка резервной копии c в production и поделиться им с учетной записью stage перед созданием базы данных в stage с использованием общего снимка из production. Все шло как надо, пока я не наткнулся на то, что, по моему мнению, является ошибкой, но я мог легко ошибиться.

Когда я пытался получить самый последний общий снимок с идентификатором abcd в Terraform с data "aws_db_snapshot" я ничего не получил.

data "aws_db_snapshot" "latest_prod_snapshot" {
  db_instance_identifier = "abcd"
  snapshot_type          = "shared"
  include_shared         = "true"
  most_recent            = "true"
}

Тогда я решил попробовать AWS CLI. Когда я запускаю это ...

aws rds describe-db-snapshots --snapshot-type shared --include-shared

... я получаю это ...

{
    "DBSnapshots": [
        {
            "MasterUsername": "root", 
            "LicenseModel": "general-public-license", 
            "InstanceCreateTime": "2018-01-13T00:00:00.000Z", 
            "Engine": "mysql", 
            "VpcId": "vpc-0000000000000000", 
            "SourceRegion": "us-east-1", 
            "AllocatedStorage": 20, 
            "Status": "available", 
            "PercentProgress": 100, 
            "SourceDBSnapshotIdentifier": "arn:aws:rds:us-east-1:000000000000:snapshot:rds:abcd-2020-01-13-00-00", 
            "DBSnapshotIdentifier": "arn:aws:rds:us-east-1:000000000000:snapshot:rds:abcd-2020-01-13-00-00", 
            "DBSnapshotArn": "arn:aws:rds:us-east-1:000000000000:snapshot:rds:abcd-2020-01-13-00-00", 
            "EngineVersion": "5.6.41", 
            "ProcessorFeatures": [], 
            "OptionGroupName": "default:mysql-5-6", 
            "SnapshotCreateTime": "2020-01-13T00:00:00.000Z", 
            "AvailabilityZone": "us-east-1b", 
            "StorageType": "gp2", 
            "Encrypted": false, 
            "IAMDatabaseAuthenticationEnabled": false, 
            "DbiResourceId": "db-AAAAAAAAAAAAAAAAAAAAAAAAA", 
            "SnapshotType": "shared", 
            "Port": 3306, 
            "DBInstanceIdentifier": "abcd"
        }
    ]
}

... что я и ожидал. Глядя на ответ, я ожидаю, что идентификатор экземпляра БД будет abcd, но когда я запущу это ...

aws rds describe-db-snapshots --snapshot-type shared --include-shared --db-instance-identifier abcd

... или это ...

aws rds describe-db-snapshots --snapshot-type shared --include-shared --filters Name=db-instance-id,Values=abcd

... Я понял ...

{
    "DBSnapshots": []
}

... что я не ожидал. Это ошибка или я что-то не так делаю? Я просмотрел их документацию, но, возможно, что-то пропустил.

1 Ответ

0 голосов
/ 18 февраля 2020

Пока мы ждем AWS, чтобы это исправить. Вот несколько вещей, которые вы можете сделать в качестве обходного пути:

  1. В учетной записи stage скопируйте общий снимок и используйте копию вместо общего.
  2. В Terraform выполните откат к более старая версия провайдера.

2.27 у меня работает

provider "aws" {
  version                 = "2.27.0"
}
...