我想使用AWS RDS 命令行工具my-database
使用创建我的数据库的快照create-db-snapshot
。
我已经创建了特殊的备份角色我是具有允许我描述、复制和创建快照的策略。它看起来像这样(我用 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"
]
}
]
}
使用以下配置 CLI 工具后aws configure
并输入该用户的密钥我尝试通过执行以下命令来创建快照:
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::xxxxxxxxxxxxxxx:user/automated-tasks 无权执行:rds:CreateDBSnapshot 资源:arn:aws:rds:eu-west-1:xxxxxxxxxxxxxxx:snapshot:my-database-backup-24-11-2014-11h07m
我认为这很奇怪,因为它说拒绝访问我为参数指定的名称的资源--db-snapshot-identifier
,而不是参数--db-instance-identifier
。
如果我首先拥有足够的权限来创建应用于实例的快照,那么我是否应该固有地拥有该快照的创建权限?
无论如何,我尝试将策略中的资源更改为 RDS 中的所有内容:
"Resource": [
"arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:*"
]
我希望这会起作用,因为现在我的角色对我的帐户的 RDS ARN 中的所有内容具有创建快照的权限,但事实并非如此。
有人知道为什么我的命令返回错误吗?
答案1
这确实很奇怪,但看起来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:*"
]
}
]
}