如何通过id获取最近共享的AWS RDS快照?

dal*_*awh 5 amazon-web-services amazon-rds aws-cli terraform terraform-provider-aws

我在 AWS RDS 上有 2 个数据库,一个用于2 个账户stage,另一个用于production跨 2 个账户。我试图每隔 x 天复制一次production数据stage。我的计划是在使用 中的共享快照创建数据库之前,制作最新自动备份快照的副本production并将其共享到帐户。一切都很顺利,直到我遇到了一个我认为是错误的东西,但很可能是我犯了一个错误。stagestageproduction

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

data "aws_db_snapshot" "latest_prod_snapshot" {
  db_instance_identifier = "abcd"
  snapshot_type          = "shared"
  include_shared         = "true"
  most_recent            = "true"
}
Run Code Online (Sandbox Code Playgroud)

然后我决定尝试一下 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"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

...这正是我所期望的。查看响应,我希望数据库实例 id 是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": []
}
Run Code Online (Sandbox Code Playgroud)

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

edm*_*rto 1

我们正在等待 AWS 解决此问题。以下是您可以采取的解决方法:

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

2.27为我工作

provider "aws" {
  version                 = "2.27.0"
}
Run Code Online (Sandbox Code Playgroud)