【问题标题】:Amazon RDS (CLI) - Restore instance from snapshot - wrong security group (No inbound permissions)Amazon RDS (CLI) - 从快照还原实例 - 错误的安全组(无入站权限)
【发布时间】:2015-08-28 14:56:41
【问题描述】:

我正在准备一个小型 bash 脚本,它读取给定实例的最新快照名称并从该快照创建一个新实例。我使用的命令是

rds-restore-db-instance-from-db-snapshot snapshot-instance --db-snapshot-identifier rds:snapshot-name --region eu-west-1 --availability-zone eu-west-1a --db-instance-class db.t2.micro --multi-az false

这工作正常,实例已创建。但是实例有错误的安全组分配,阻止从外部访问它(这是 sql 数据的标准“转储”所必需的)。

快照实例的原始安全组 (VPC) 是

default (sg-2bc44xxx) ( active )

但是当通过 CLI 创建快照中的新实例时,它会获得以下分配:

default:vpc-95c10xxx ( active )
rds-default-vpc-95c10-xxxx (sg-9e45bxxx) ( active )

您会看到旧安全组和新安全组的安全组 (sg) 的区别。

但我无法通过 CLI 更改此连接:

rds-modify-db-instance snapshot-instance --region eu-west-1 -sg sg-2bc44xxx

结果

"Malformed input-MalformedInput".

其他尝试:

rds-modify-db-instance snapshot-instance --region eu-west-1 -a sg-2bc44xxx

给了

Could not find the resource you requested: DBSecurityGroup not found:  sg-2bc44xxx

当我通过 Web-Console 将组更改为默认组时,入站连接可用,我可以毫无问题地进行 mysqldump。

目前还不清楚使用什么选项,-a 或 -sg。此外,还不清楚安全组的正确标识符是什么(id、组名、...)。

任何帮助或信息将不胜感激。

问候,

埃里克

【问题讨论】:

  • 要了解有关您的安全组的更多信息,您可以运行rds-describe-db-security-groups - 看起来-a 用于您的数据库安全组,-sg 用于 VPC。你试过--vpc-security-group-ids sg-2bc44xxx
  • 我不明白的一点是,为什么新创建的实例分别绑定到 DB 和 VPC 的安全组,而源实例只有 VPC 连接。我尝试的输出是: rds-modify-db-instance snapper-1 --region eu-west-1 --vpc-security-group-ids sg-2bc44xxx => 无法识别的选项(尽管它已记录) rds-modify- db-instance snapper-1 --region eu-west-1 -sg sg-2bc44xxx => Malformed input-MalformedInput ---------- rds-modify-db-instance snapper-1 --region eu- west-1 --db-security-groups default => "SC 不属于 VPC vpc-95c10xxx"
  • 将 --db-subnet-group-name 添加到命令行。

标签: amazon-web-services command-line-interface restore snapshot rds


【解决方案1】:

我遇到了类似的问题,所以在使用快照还原数据库后,我看到分配的安全组是默认的,它没有任何入站规则。 如果您转到 RDS 控制台的主页,您可以看到支持平台的配置为(EC2、VPC)或仅(VPC),如图所示here

遗憾的是,restore-db-instance-from-db-snapshot 没有采用任何 vpc-security 组选项。所以在恢复数据库后,我不得不修改它使用

aws rds modify-db-instance --db-instance-identifier your-db-identifier --vpc-security-group-ids sg-4xxxxxxx

这对我有用。

【讨论】:

    【解决方案2】:

    我回到这里是为了告知我使用了不同的解决方案。我使用了适用于 PHP 的 AWS 开发工具包,并且能够通过 API 轻松获取最新快照的名称。然后我用它来启动一个临时实例(它与原始实例一样绑定到相同的安全组、参数组等),轮询这个实例直到它处于“就绪”状态,然后执行一个实际的 mysqldump上传到 S3。之后,我销毁临时实例。这一切都是通过 PHP shell 脚本和使用官方 AWS SDK for PHP 完成的。

    该脚本近 2 年来每天都运行良好,没有任何错误(转储大小约为 15GB)。无论如何感谢您的回答,它们可能对遇到此问题的其他人有所帮助。使用 SDK 完成这些事情真的很容易。

    【讨论】:

      猜你喜欢
      • 2014-08-08
      • 1970-01-01
      • 2019-11-19
      • 2023-01-26
      • 1970-01-01
      • 1970-01-01
      • 2017-02-22
      • 2019-01-05
      • 2018-12-15
      相关资源
      最近更新 更多