【问题标题】:Misleading error message when creating an RDS DB Subnet Group in AWS在 AWS 中创建 RDS 数据库子网组时出现误导性错误消息
【发布时间】:2021-07-30 05:57:11
【问题描述】:

我使用受限角色通过 Cloudformation 部署资源,遇到了一个错误,让我陷入了一段时间的循环。

我有一个用于创建资源的最小角色。它只有以下允许的操作(在所有资源上)

rds:CreateDBSubnetGroup
ec2:DescribeVpcs
ec2:DescribeSubnets
ec2:DescribeAvailabilityZones

通过上述操作,我可以使用以下 aws cli 命令成功创建数据库子网组:

aws rds create-db-subnet-group \
    --db-subnet-group-name testing \
    --db-subnet-group-description testing \
    --subnet-ids "subnet-abc" "subnet-def"

但是,如果我遗漏了这些 ec2 操作中的任何一个,那么在运行相同的命令时会出现相当误导的错误。

调用 CreateDBSubnetGroup 操作时发生错误 (InvalidParameterValue):缺少必要的凭据。请查看http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAM.ServiceLinkedRoles.html

这让我陷入了查看服务相关角色的长长的兔子洞,这没有任何区别(添加操作 iam:CreateServiceLinkedRole 并没有阻止错误)。我最终通过反复试验和查看 CloudTrail 找到了要添加的 ec2 操作。将 RDS 与 IAM 服务相关角色一起使用的错误完全具有误导性。

我的问题真的是……我对这种情况的评估准确吗,还是我在这里遗漏了一些基本的东西?

如果不是因为我在创建数据库实例时遇到了同样的错误,那就不会那么糟糕了。自然我不再相信这个错误,所以没有看服务链接角色。花了一天时间搜索那个无处可去的兔子洞 - 只是发现在这种情况下它是服务相关角色(简单修复)。

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-rds amazon-iam


    【解决方案1】:

    因此,如果您通过 AWS 控制台手动创建 RDS 数据库只是为了进行测试,则服务角色将代表您在账户中创建。您能够手动创建子网的原因是您直接请求它。当您创建 rds 实例并为您创建子网组(rds 托管)时,必须存在服务相关角色,以便 RDS 可以代表您创建子网组。

    如果您使用相同的 Cloudformation 模板将 rds 部署到其他 AWS 账户,您只需记住首先通过控制台创建一个虚假的 RDS 实例,以让 AWS 创建服务链接角色。

    【讨论】:

      猜你喜欢
      • 2021-03-02
      • 1970-01-01
      • 2022-12-13
      • 2017-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      • 2017-11-08
      相关资源
      最近更新 更多