
Я хочу использоватьИнструмент командной строки AWS RDSчтобы создать снимок моей базы данных, my-database
используяcreate-db-snapshot
.
Я создал специальную резервную роль вЯс политикой, которая позволяет мне описывать, копировать и создавать снимки. Выглядит это так (я заменил чувствительные идентификаторы на x):
{
"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"
В результате появляется сообщение об ошибке:
Произошла ошибка клиента (AccessDenied) при вызове операции CreateDBSnapshot: Пользователь: 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:*"
]
}
]
}