如何按 id 获取最新共享的 AWS RDS 快照?



我在 AWS RDS 上有 2 个数据库,一个用于stage,一个用于跨 2 个账户的production。我正在尝试每x天将production中的数据复制到stage。我的计划是制作production中最新的自动备份快照的副本,并将其共享给stage帐户,然后再使用production共享快照在stage中创建数据库。一切都很顺利,直到我遇到了我认为是一个错误,但很容易是我犯了一个错误。

当我尝试在 Terraform 中使用data "aws_db_snapshot"获取 id 为abcd的最新共享快照时,我没有得到任何结果。

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"
}
]
}

。这是我所期望的。查看响应,我希望数据库实例 IDabcd但是当我运行它时......

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": []
}

。这不是我所期望的。这是一个错误还是我做错了什么?我浏览了他们的文档,但我可能错过了一些东西。

当我们等待 AWS 解决此问题时。以下是您可以执行的一些解决方法:

  1. stage帐户中,复制共享快照并使用副本而不是共享快照。
  2. 在 Terraform 中,回滚到较旧的提供程序版本。

2.27对我有用

provider "aws" {
version                 = "2.27.0"
}

根据 AWS Support,DBInstanceIdentifier 用于仅显示调用客户拥有的快照的结果,因此不会返回共享快照的结果。为了仅使用 DBInstanceIdentifier 过滤和显示共享快照,可以使用 --query 按 DBInstanceIdentifier 值进行过滤:

aws rds describe-db-snapshots --snapshot-type shared --include-shared --query "DBSnapshots[?DBInstanceIdentifier=='abcd']" 

相关内容

  • 没有找到相关文章

最新更新