
我想使用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::xxxxxxxxxxxxxx:user/automated-tasks 無權對資源執行:rds:CreateDBSnapshot:arn:aws:rds:eu-west -1: xxxxxxxxxxxxxx:快照:我的資料庫備份-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:*"
]
}
]
}