我想使用AWS RDS命令行工具使用create-db-snapshot为我的数据库my-database create-db-snapshot 。
我在IAM中创build了一个特殊的备份angular色,允许我描述,复制和创build快照。 它看起来像这样(我用x代替了敏感的id):
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmtxxxxxxxxxxxxxx", "Effect": "Allow", "Action": [ "rds:CopyDBSnapshot", "rds:CreateDBSnapshot", "rds:DescribeDBSnapshots", "rds:DescribeEventCategories", "rds:DescribeEvents" ], "Resource": [ "arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:db:my-database" ] } ] }
使用aws configureconfigurationCLI工具并input这个用户的密钥后,我尝试通过执行这个命令来创build一个快照:
aws rds create-db-snapshot \ --db-snapshot-identifier "my-database-backup-$(date +%d-%m-%Y-%Hh%Mm)" \ --db-instance-identifier "my-database"
这会导致一个错误消息说:
调用CreateDBSnapshot操作时发生客户端错误(AccessDenied):用户:arn:aws:iam :: xxxxxxxxxxxxxx:user / automated-tasks无权执行:资源上的rds:CreateDBSnapshot:arn:aws:rds:eu-west -1:XXXXXXXXXXXXXX:快照:我的数据库备份,24-11-2014-11h07m
我认为这很奇怪,因为它说访问被拒绝的资源与我指定的--db-snapshot-identifier参数的名称一样,与--db-instance-identifier参数相同。
如果我有足够的权限来创build应用于实例的快照,那么我是否应该不具有创build该快照的权限?
无论如何,我尝试将策略中的资源更改为RDS中的所有内容:
"Resource": [ "arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:*" ]
我希望这可以工作,因为现在我的angular色具有创build快照的权限,我的帐户的RDS ARN内的一切,但它没有。
有没有人有一个线索,为什么我的命令返回一个错误?
这确实很奇怪,但CreateDBSnapshot权限似乎也必须分配给目标快照。
这个政策的作品:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmtxxxxxxxxxxxxxx", "Effect": "Allow", "Action": [ "rds:CreateDBSnapshot" ], "Resource": [ "arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:db:my-database", "arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:snapshot:*" ] } ] }